From 8ec6063fda722153269b76a2649dac4149553dfb Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 10 Jul 2023 12:49:28 +0200 Subject: [PATCH 01/19] operators tests --- contracts/modules/DAO.sol | 12 ++++ contracts/modules/Operators.sol | 108 +++++++++++++++++++++++++++++ contracts/modules/SSVOperators.sol | 9 ++- echidna.yaml | 8 +++ slither.config.json | 4 ++ 5 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 contracts/modules/DAO.sol create mode 100644 contracts/modules/Operators.sol create mode 100644 echidna.yaml create mode 100644 slither.config.json diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol new file mode 100644 index 00000000..b4e5c3fa --- /dev/null +++ b/contracts/modules/DAO.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./SSVDAO.sol"; + +contract DAO is SSVDAO { + uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; + + function echidna_test(uint256 amount) public returns (bool) { + return SSVStorageProtocol.load().networkFee == amount; + } +} diff --git a/contracts/modules/Operators.sol b/contracts/modules/Operators.sol new file mode 100644 index 00000000..f9333f81 --- /dev/null +++ b/contracts/modules/Operators.sol @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./SSVOperators.sol"; + +contract Operators is SSVOperators { + using Types64 for uint64; + using Types256 for uint256; + + uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; + uint64 private constant PRECISION_FACTOR = 10_000; + + uint64[] opIds; + + event Declared(uint64 maxAllowedFee, uint64 operatorFee); + event AssertionFailed(uint64 operatorId, bool isWhitelisted); + event AssertionFailed(uint64 operatorId, uint64 approvalBeginTime); + + constructor() { + StorageProtocol storage sp = SSVStorageProtocol.load(); + sp.minimumBlocksBeforeLiquidation = 214800; + sp.minimumLiquidationCollateral = uint256(1000000000000000000).shrink(); + sp.validatorsPerOperatorLimit = 500; + sp.declareOperatorFeePeriod = 604800; + sp.executeOperatorFeePeriod = 604800; + sp.operatorMaxFeeIncrease = 1000; + } + + function helper_createOperator(bytes calldata publicKey, uint256 fee) public { + uint256 maxValue = 2 ** 64 * DEDUCTED_DIGITS; + + uint256 minN = (MINIMAL_OPERATOR_FEE + DEDUCTED_DIGITS - 1) / DEDUCTED_DIGITS; + uint256 maxN = maxValue / DEDUCTED_DIGITS; + + require(fee > minN && fee < maxN, "fee value exceeded"); + fee = fee * DEDUCTED_DIGITS; + + require(SSVStorage.load().operatorsPKs[keccak256(publicKey)] == 0, "Operator exists"); + + try this.registerOperator(publicKey, fee) returns (uint64 operatorId) { + opIds.push(operatorId); + } catch { + assert(false); + } + } + + /* + function helper_setOperatorWhitelist(uint64 operatorId, address whitelisted) public { + operatorId = operatorId % uint64(opIds.length); + + this.setOperatorWhitelist(operatorId, whitelisted); + } + */ + + function helper_declareOperatorFee(uint64 operatorId) public { + operatorId = operatorId % uint64(opIds.length); + + Operator storage operator = SSVStorage.load().operators[operatorId]; + require(operator.snapshot.block != 0, "operator does not exists"); + + uint64 fee = operator.fee; + + uint64 maxAllowedFee = (fee * (PRECISION_FACTOR + SSVStorageProtocol.load().operatorMaxFeeIncrease)) / + PRECISION_FACTOR; + + this.declareOperatorFee(operatorId, maxAllowedFee.expand()); + } + + function helper_executeOperatorFee(uint64 operatorId) public { + operatorId = operatorId % uint64(opIds.length); + + this.executeOperatorFee(operatorId); + } + + function helper_removeOperator(uint64 operatorId) public { + operatorId = operatorId % uint64(opIds.length); + + this.removeOperator(operatorId); + } + + /*********** + * Assertions + ***********/ + /* + function check_removedOperatorNotWhitelisted(uint64 operatorId) public { + operatorId = operatorId % uint64(opIds.length); + + Operator storage operator = SSVStorage.load().operators[operatorId]; + + if ((operator.snapshot.block == 0) && operator.whitelisted) + emit AssertionFailed(operatorId, operator.whitelisted); + } +*/ + + function check_removedOperatorNoFeeDeclared(uint64 operatorId) public { + operatorId = 1 + (operatorId % (uint64(opIds.length) - 1)); + + Operator storage operator = SSVStorage.load().operators[operatorId]; + + if ( + //(operator.owner != address(0)) && + (operator.snapshot.block == 0) && + (SSVStorage.load().operatorFeeChangeRequests[operatorId].approvalBeginTime != 0) + ) { + emit AssertionFailed(operatorId, SSVStorage.load().operatorFeeChangeRequests[operatorId].approvalBeginTime); + } + } +} diff --git a/contracts/modules/SSVOperators.sol b/contracts/modules/SSVOperators.sol index 875484d5..e33b00c3 100644 --- a/contracts/modules/SSVOperators.sol +++ b/contracts/modules/SSVOperators.sol @@ -59,11 +59,11 @@ contract SSVOperators is ISSVOperators { operator.validatorCount = 0; operator.fee = 0; - s.operators[operatorId] = operator; - - if (s.operatorsWhitelist[operatorId] != address(0)) { + if (operator.whitelisted) { + operator.whitelisted = false; delete s.operatorsWhitelist[operatorId]; } + s.operators[operatorId] = operator; if (currentBalance > 0) { _transferOperatorBalanceUnsafe(operatorId, currentBalance.expand()); @@ -103,8 +103,7 @@ contract SSVOperators is ISSVOperators { } // @dev 100% = 10000, 10% = 1000 - using 10000 to represent 2 digit precision - uint64 maxAllowedFee = (operatorFee * (PRECISION_FACTOR + sp.operatorMaxFeeIncrease)) / - PRECISION_FACTOR; + uint64 maxAllowedFee = (operatorFee * (PRECISION_FACTOR + sp.operatorMaxFeeIncrease)) / PRECISION_FACTOR; if (shrunkFee > maxAllowedFee) revert FeeExceedsIncreaseLimit(); diff --git a/echidna.yaml b/echidna.yaml new file mode 100644 index 00000000..9567f426 --- /dev/null +++ b/echidna.yaml @@ -0,0 +1,8 @@ +testMode: assertion +# testLimit: 50000 +# multi-abi: true +# corpusDir: "corpus" +cryticArgs: ["--solc-remaps", "@openzeppelin=node_modules/@openzeppelin"] +# filterBlacklist: false +# filterFunctions: ["Operators.registerOperator(bytes,uint256)", "setOperatorWhitelist(uint64,address)"] + diff --git a/slither.config.json b/slither.config.json new file mode 100644 index 00000000..bd60c819 --- /dev/null +++ b/slither.config.json @@ -0,0 +1,4 @@ +{ + "filter_paths": "(task/|test/|@openzeppelin/)", + "solc_remaps": "@=node_modules/@" +} \ No newline at end of file From 9e7421670b627c13f455b7af3348e4fcff168ed9 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 8 Jan 2024 17:14:10 +0100 Subject: [PATCH 02/19] feat: added echidna configuration using forked network --- crytic-export/combined_solc.json | 1 + echidna.yaml | 3 ++- hardhat.config.ts | 44 +++++++++++++++++--------------- package-lock.json | 17 ++++++++++++ package.json | 7 +++-- 5 files changed, 48 insertions(+), 24 deletions(-) create mode 100644 crytic-export/combined_solc.json diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json new file mode 100644 index 00000000..476cb759 --- /dev/null +++ b/crytic-export/combined_solc.json @@ -0,0 +1 @@ +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol": {"AST": {"absolutePath": "contracts/SSVNetwork.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "Authorization": [1631], "ContextUpgradeable": [3059], "CoreLib": [1624], "Counters": [2382], "DEDUCTED_DIGITS": [1810], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "IERC20": [2192], "ISSVClusters": [1012], "ISSVDAO": [1104], "ISSVNetwork": [1181], "ISSVNetworkCore": [2308], "ISSVOperators": [1317], "ISSVViews": [1493], "Initializable": [2683], "Ownable2StepUpgradeable": [1978], "OwnableUpgradeable": [2514], "RegisterAuth": [1660], "SSVModules": [1670], "SSVNetwork": [842], "SSVProxy": [856], "SSVStorage": [1740], "SSVStorageProtocol": [1805], "StorageData": [1717], "StorageProtocol": [1782], "StorageSlotUpgradeable": [3530], "Types256": [1872], "Types64": [1823], "UUPSUpgradeable": [2114]}, "id": 843, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetwork.sol", "file": "./interfaces/ISSVNetwork.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1182, "src": "70:38:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "./interfaces/ISSVClusters.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1013, "src": "110:39:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "./interfaces/ISSVOperators.sol", "id": 4, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1318, "src": "150:40:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "./interfaces/ISSVDAO.sol", "id": 5, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1105, "src": "191:34:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVViews.sol", "file": "./interfaces/ISSVViews.sol", "id": 6, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1494, "src": "226:36:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./libraries/Types.sol", "id": 7, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1873, "src": "264:31:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "./libraries/CoreLib.sol", "id": 8, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1625, "src": "296:33:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 9, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1741, "src": "330:36:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./libraries/SSVStorageProtocol.sol", "id": 10, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1806, "src": "367:44:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/RegisterAuth.sol", "file": "./libraries/RegisterAuth.sol", "id": 11, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1661, "src": "412:38:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/SSVProxy.sol", "file": "./SSVProxy.sol", "id": 12, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 857, "src": "452:24:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 14, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1741, "src": "478:54:0", "symbolAliases": [{"foreign": {"id": 13, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "486:10:0", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 15, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 2193, "src": "534:56:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "id": 16, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 2115, "src": "591:77:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "id": 17, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1979, "src": "669:80:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 18, "name": "UUPSUpgradeable", "nameLocations": ["778:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2114, "src": "778:15:0"}, "id": 19, "nodeType": "InheritanceSpecifier", "src": "778:15:0"}, {"baseName": {"id": 20, "name": "Ownable2StepUpgradeable", "nameLocations": ["799:23:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1978, "src": "799:23:0"}, "id": 21, "nodeType": "InheritanceSpecifier", "src": "799:23:0"}, {"baseName": {"id": 22, "name": "ISSVNetwork", "nameLocations": ["828:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1181, "src": "828:11:0"}, "id": 23, "nodeType": "InheritanceSpecifier", "src": "828:11:0"}, {"baseName": {"id": 24, "name": "ISSVOperators", "nameLocations": ["845:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "845:13:0"}, "id": 25, "nodeType": "InheritanceSpecifier", "src": "845:13:0"}, {"baseName": {"id": 26, "name": "ISSVClusters", "nameLocations": ["864:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "864:12:0"}, "id": 27, "nodeType": "InheritanceSpecifier", "src": "864:12:0"}, {"baseName": {"id": 28, "name": "ISSVDAO", "nameLocations": ["882:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "882:7:0"}, "id": 29, "nodeType": "InheritanceSpecifier", "src": "882:7:0"}, {"baseName": {"id": 30, "name": "SSVProxy", "nameLocations": ["895:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 856, "src": "895:8:0"}, "id": 31, "nodeType": "InheritanceSpecifier", "src": "895:8:0"}], "canonicalName": "SSVNetwork", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 842, "linearizedBaseContracts": [842, 856, 1104, 1012, 1317, 2308, 1181, 1978, 2514, 3059, 2114, 3017, 3410, 2693, 2683], "name": "SSVNetwork", "nameLocation": "760:10:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 34, "libraryName": {"id": 32, "name": "Types256", "nameLocations": ["916:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1872, "src": "916:8:0"}, "nodeType": "UsingForDirective", "src": "910:27:0", "typeName": {"id": 33, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "929:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"baseFunctions": [1144], "body": {"id": 89, "nodeType": "Block", "src": "1491:485:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 69, "name": "__UUPSUpgradeable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1996, "src": "1501:22:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1501:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 71, "nodeType": "ExpressionStatement", "src": "1501:24:0"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 72, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "1535:24:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1535:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 74, "nodeType": "ExpressionStatement", "src": "1535:26:0"}, {"expression": {"arguments": [{"id": 76, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1612:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, {"id": 77, "name": "ssvOperators_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 40, "src": "1632:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, {"id": 78, "name": "ssvClusters_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "1659:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, {"id": 79, "name": "ssvDAO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "1685:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, {"id": 80, "name": "ssvViews_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1706:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, {"id": 81, "name": "minimumBlocksBeforeLiquidation_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51, "src": "1729:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 82, "name": "minimumLiquidationCollateral_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53, "src": "1774:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 83, "name": "validatorsPerOperatorLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 55, "src": "1817:27:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 84, "name": "declareOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "1858:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 85, "name": "executeOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "1897:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 86, "name": "operatorMaxFeeIncrease_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 61, "src": "1936:23:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 75, "name": "__SSVNetwork_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, "src": "1571:27:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2192_$_t_contract$_ISSVOperators_$1317_$_t_contract$_ISSVClusters_$1012_$_t_contract$_ISSVDAO_$1104_$_t_contract$_ISSVViews_$1493_$_t_uint64_$_t_uint256_$_t_uint32_$_t_uint64_$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (contract IERC20,contract ISSVOperators,contract ISSVClusters,contract ISSVDAO,contract ISSVViews,uint64,uint256,uint32,uint64,uint64,uint64)"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1571:398:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 88, "nodeType": "ExpressionStatement", "src": "1571:398:0"}]}, "functionSelector": "c626c3c6", "id": 90, "implemented": true, "kind": "function", "modifiers": [{"id": 65, "kind": "modifierInvocation", "modifierName": {"id": 64, "name": "initializer", "nameLocations": ["1469:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2585, "src": "1469:11:0"}, "nodeType": "ModifierInvocation", "src": "1469:11:0"}, {"id": 67, "kind": "modifierInvocation", "modifierName": {"id": 66, "name": "onlyProxy", "nameLocations": ["1481:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "1481:9:0"}, "nodeType": "ModifierInvocation", "src": "1481:9:0"}], "name": "initialize", "nameLocation": "1022:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 63, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1460:8:0"}, "parameters": {"id": 62, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 37, "mutability": "mutable", "name": "token_", "nameLocation": "1049:6:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1042:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 36, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 35, "name": "IERC20", "nameLocations": ["1042:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "1042:6:0"}, "referencedDeclaration": 2192, "src": "1042:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 40, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "1079:13:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1065:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 39, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 38, "name": "ISSVOperators", "nameLocations": ["1065:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "1065:13:0"}, "referencedDeclaration": 1317, "src": "1065:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 43, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "1115:12:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1102:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 42, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 41, "name": "ISSVClusters", "nameLocations": ["1102:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "1102:12:0"}, "referencedDeclaration": 1012, "src": "1102:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 46, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "1145:7:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1137:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 45, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 44, "name": "ISSVDAO", "nameLocations": ["1137:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "1137:7:0"}, "referencedDeclaration": 1104, "src": "1137:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 49, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "1172:9:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1162:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 48, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 47, "name": "ISSVViews", "nameLocations": ["1162:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "1162:9:0"}, "referencedDeclaration": 1493, "src": "1162:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 51, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "1198:31:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1191:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 50, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1191:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 53, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "1247:29:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1239:37:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 52, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1239:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 55, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "1293:27:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1286:34:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 54, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1286:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 57, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "1337:25:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1330:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 56, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1330:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 59, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "1379:25:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1372:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 58, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1372:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 61, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "1421:23:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1414:30:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 60, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1032:418:0"}, "returnParameters": {"id": 68, "nodeType": "ParameterList", "parameters": [], "src": "1491:0:0"}, "scope": 842, "src": "1013:963:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 228, "nodeType": "Block", "src": "2463:845:0", "statements": [{"assignments": [124], "declarations": [{"constant": false, "id": 124, "mutability": "mutable", "name": "s", "nameLocation": "2493:1:0", "nodeType": "VariableDeclaration", "scope": 228, "src": "2473:21:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 123, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 122, "name": "StorageData", "nameLocations": ["2473:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1717, "src": "2473:11:0"}, "referencedDeclaration": 1717, "src": "2473:11:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 128, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 125, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "2497:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2508:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "2497:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2497:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2473:41:0"}, {"assignments": [131], "declarations": [{"constant": false, "id": 131, "mutability": "mutable", "name": "sp", "nameLocation": "2548:2:0", "nodeType": "VariableDeclaration", "scope": 228, "src": "2524:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 130, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 129, "name": "StorageProtocol", "nameLocations": ["2524:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1782, "src": "2524:15:0"}, "referencedDeclaration": 1782, "src": "2524:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 135, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 132, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1805, "src": "2553:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1805_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2572:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1804, "src": "2553:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1782_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2553:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2524:54:0"}, {"expression": {"id": 140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 136, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2588:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2590:5:0", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "2588:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 139, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "2598:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "src": "2588:16:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 141, "nodeType": "ExpressionStatement", "src": "2588:16:0"}, {"expression": {"id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 142, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2614:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2616:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2614:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 147, "indexExpression": {"expression": {"id": 144, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2629:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2640:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "2629:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2614:40:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 150, "name": "ssvOperators_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "2665:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}], "id": 149, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2657:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 148, "name": "address", "nodeType": "ElementaryTypeName", "src": "2657:7:0", "typeDescriptions": {}}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2614:65:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 153, "nodeType": "ExpressionStatement", "src": "2614:65:0"}, {"expression": {"id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 154, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2689:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 158, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2691:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2689:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 159, "indexExpression": {"expression": {"id": 156, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2704:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2715:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "2704:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2689:39:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 162, "name": "ssvClusters_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 99, "src": "2739:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}], "id": 161, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2731:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 160, "name": "address", "nodeType": "ElementaryTypeName", "src": "2731:7:0", "typeDescriptions": {}}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2731:21:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2689:63:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 165, "nodeType": "ExpressionStatement", "src": "2689:63:0"}, {"expression": {"id": 176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 166, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2762:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2764:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2762:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 171, "indexExpression": {"expression": {"id": 168, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2777:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2788:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "2777:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2762:34:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 174, "name": "ssvDAO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "2807:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}], "id": 173, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2799:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 172, "name": "address", "nodeType": "ElementaryTypeName", "src": "2799:7:0", "typeDescriptions": {}}}, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2799:16:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2762:53:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 177, "nodeType": "ExpressionStatement", "src": "2762:53:0"}, {"expression": {"id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 178, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2825:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2827:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2825:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 183, "indexExpression": {"expression": {"id": 180, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2840:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2851:9:0", "memberName": "SSV_VIEWS", "nodeType": "MemberAccess", "referencedDeclaration": 1669, "src": "2840:20:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2825:36:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 186, "name": "ssvViews_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, "src": "2872:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}], "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2864:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 184, "name": "address", "nodeType": "ElementaryTypeName", "src": "2864:7:0", "typeDescriptions": {}}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2864:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2825:57:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 189, "nodeType": "ExpressionStatement", "src": "2825:57:0"}, {"expression": {"id": 194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 190, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "2892:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 192, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2895:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1766, "src": "2892:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 193, "name": "minimumBlocksBeforeLiquidation_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 107, "src": "2928:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2892:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 195, "nodeType": "ExpressionStatement", "src": "2892:67:0"}, {"expression": {"id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 196, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "2969:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2972:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "2969:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 199, "name": "minimumLiquidationCollateral_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "3003:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3033:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1852, "src": "3003:36:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3003:38:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2969:72:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 203, "nodeType": "ExpressionStatement", "src": "2969:72:0"}, {"expression": {"id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 204, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3051:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 206, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3054:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "3051:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 207, "name": "validatorsPerOperatorLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "3083:27:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "3051:59:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 209, "nodeType": "ExpressionStatement", "src": "3051:59:0"}, {"expression": {"id": 214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 210, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3120:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3123:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "3120:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 213, "name": "declareOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, "src": "3150:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3120:55:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 215, "nodeType": "ExpressionStatement", "src": "3120:55:0"}, {"expression": {"id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 216, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3185:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 218, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3188:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "3185:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 219, "name": "executeOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, "src": "3215:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3185:55:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 221, "nodeType": "ExpressionStatement", "src": "3185:55:0"}, {"expression": {"id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 222, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3250:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3253:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "3250:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 225, "name": "operatorMaxFeeIncrease_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "3278:23:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3250:51:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 227, "nodeType": "ExpressionStatement", "src": "3250:51:0"}]}, "id": 229, "implemented": true, "kind": "function", "modifiers": [{"id": 120, "kind": "modifierInvocation", "modifierName": {"id": 119, "name": "onlyInitializing", "nameLocations": ["2446:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "2446:16:0"}, "nodeType": "ModifierInvocation", "src": "2446:16:0"}], "name": "__SSVNetwork_init_unchained", "nameLocation": "1991:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 93, "mutability": "mutable", "name": "token_", "nameLocation": "2035:6:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2028:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 92, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 91, "name": "IERC20", "nameLocations": ["2028:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "2028:6:0"}, "referencedDeclaration": 2192, "src": "2028:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 96, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "2065:13:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2051:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 95, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 94, "name": "ISSVOperators", "nameLocations": ["2051:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "2051:13:0"}, "referencedDeclaration": 1317, "src": "2051:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 99, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "2101:12:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2088:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 98, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 97, "name": "ISSVClusters", "nameLocations": ["2088:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "2088:12:0"}, "referencedDeclaration": 1012, "src": "2088:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 102, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "2131:7:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2123:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 101, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 100, "name": "ISSVDAO", "nameLocations": ["2123:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "2123:7:0"}, "referencedDeclaration": 1104, "src": "2123:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 105, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "2158:9:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2148:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 104, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 103, "name": "ISSVViews", "nameLocations": ["2148:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "2148:9:0"}, "referencedDeclaration": 1493, "src": "2148:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 107, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "2184:31:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2177:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 106, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2177:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 109, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "2233:29:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2225:37:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 108, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2225:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 111, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "2279:27:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2272:34:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 110, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2272:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 113, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "2323:25:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2316:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 112, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2316:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 115, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "2365:25:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2358:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 114, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2358:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 117, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "2407:23:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2400:30:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 116, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2400:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2018:418:0"}, "returnParameters": {"id": 121, "nodeType": "ParameterList", "parameters": [], "src": "2463:0:0"}, "scope": 842, "src": "1982:1326:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 236, "nodeType": "Block", "src": "3381:39:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 233, "name": "_disableInitializers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2664, "src": "3391:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3391:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 235, "nodeType": "ExpressionStatement", "src": "3391:22:0"}]}, "documentation": {"id": 230, "nodeType": "StructuredDocumentation", "src": "3314:48:0", "text": "@custom:oz-upgrades-unsafe-allow constructor"}, "id": 237, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 231, "nodeType": "ParameterList", "parameters": [], "src": "3378:2:0"}, "returnParameters": {"id": 232, "nodeType": "ParameterList", "parameters": [], "src": "3381:0:0"}, "scope": 842, "src": "3367:53:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [2108], "body": {"id": 245, "nodeType": "Block", "src": "3563:2:0", "statements": []}, "id": 246, "implemented": true, "kind": "function", "modifiers": [{"id": 243, "kind": "modifierInvocation", "modifierName": {"id": 242, "name": "onlyOwner", "nameLocations": ["3553:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "3553:9:0"}, "nodeType": "ModifierInvocation", "src": "3553:9:0"}], "name": "_authorizeUpgrade", "nameLocation": "3508:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 241, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3544:8:0"}, "parameters": {"id": 240, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 239, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 246, "src": "3526:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 238, "name": "address", "nodeType": "ElementaryTypeName", "src": "3526:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3525:9:0"}, "returnParameters": {"id": 244, "nodeType": "ParameterList", "parameters": [], "src": "3563:0:0"}, "scope": 842, "src": "3499:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 259, "nodeType": "Block", "src": "3675:149:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 250, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "3764:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3775:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "3764:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3764:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3782:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "3764:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 256, "indexExpression": {"expression": {"id": 254, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "3795:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 255, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3806:9:0", "memberName": "SSV_VIEWS", "nodeType": "MemberAccess", "referencedDeclaration": 1669, "src": "3795:20:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3764:52:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 249, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "3754:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3754:63:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 258, "nodeType": "ExpressionStatement", "src": "3754:63:0"}]}, "id": 260, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 247, "nodeType": "ParameterList", "parameters": [], "src": "3663:2:0"}, "returnParameters": {"id": 248, "nodeType": "ParameterList", "parameters": [], "src": "3675:0:0"}, "scope": 842, "src": "3655:169:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1196], "body": {"id": 293, "nodeType": "Block", "src": "4048:186:0", "statements": [{"condition": {"id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4062:63:0", "subExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 270, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "4063:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4076:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "4063:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4063:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4083:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "4063:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 276, "indexExpression": {"expression": {"id": 274, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4097:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4101:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "4097:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4063:45:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 277, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4109:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1628, "src": "4063:62:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 282, "nodeType": "IfStatement", "src": "4058:91:0", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 279, "name": "NotAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "4134:13:0", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4134:15:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 281, "nodeType": "RevertStatement", "src": "4127:22:0"}}, {"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 284, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4170:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4181:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4170:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4170:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 287, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4188:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4170:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 290, "indexExpression": {"expression": {"id": 288, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4201:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 289, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4212:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4201:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4170:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 283, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4160:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4160:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 292, "nodeType": "ExpressionStatement", "src": "4160:67:0"}]}, "functionSelector": "ff212c5c", "id": 294, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "3954:16:0", "nodeType": "FunctionDefinition", "overrides": {"id": 266, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4019:8:0"}, "parameters": {"id": 265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 262, "mutability": "mutable", "name": "publicKey", "nameLocation": "3986:9:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "3971:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 261, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3971:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 264, "mutability": "mutable", "name": "fee", "nameLocation": "4005:3:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "3997:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3997:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3970:39:0"}, "returnParameters": {"id": 269, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 268, "mutability": "mutable", "name": "id", "nameLocation": "4044:2:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "4037:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 267, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4037:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4036:11:0"}, "scope": 842, "src": "3945:289:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1202], "body": {"id": 310, "nodeType": "Block", "src": "4301:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 301, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4321:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4332:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4321:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 303, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4321:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4339:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4321:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 307, "indexExpression": {"expression": {"id": 305, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4352:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4363:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4352:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 300, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4311:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4311:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 309, "nodeType": "ExpressionStatement", "src": "4311:67:0"}]}, "functionSelector": "2e168e0e", "id": 311, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "4249:14:0", "nodeType": "FunctionDefinition", "overrides": {"id": 298, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4292:8:0"}, "parameters": {"id": 297, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 296, "mutability": "mutable", "name": "operatorId", "nameLocation": "4271:10:0", "nodeType": "VariableDeclaration", "scope": 311, "src": "4264:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 295, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4264:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4263:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "4301:0:0"}, "scope": 842, "src": "4240:145:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1210], "body": {"id": 329, "nodeType": "Block", "src": "4479:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 320, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4499:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4510:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4499:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4499:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4517:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4499:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 326, "indexExpression": {"expression": {"id": 324, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4530:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4541:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4530:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4499:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 319, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4489:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4489:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "4489:67:0"}]}, "functionSelector": "c90a7eab", "id": 330, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "4400:20:0", "nodeType": "FunctionDefinition", "overrides": {"id": 317, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4470:8:0"}, "parameters": {"id": 316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 313, "mutability": "mutable", "name": "operatorId", "nameLocation": "4428:10:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "4421:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 312, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4421:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 315, "mutability": "mutable", "name": "whitelisted", "nameLocation": "4448:11:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "4440:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 314, "name": "address", "nodeType": "ElementaryTypeName", "src": "4440:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4420:40:0"}, "returnParameters": {"id": 318, "nodeType": "ParameterList", "parameters": [], "src": "4479:0:0"}, "scope": 842, "src": "4391:172:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1218], "body": {"id": 348, "nodeType": "Block", "src": "4647:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 339, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4667:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4678:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4667:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4667:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 342, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4685:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4667:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 345, "indexExpression": {"expression": {"id": 343, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4698:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 344, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4709:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4698:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4667:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 338, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4657:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 346, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4657:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 347, "nodeType": "ExpressionStatement", "src": "4657:67:0"}]}, "functionSelector": "b317c35f", "id": 349, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "4578:18:0", "nodeType": "FunctionDefinition", "overrides": {"id": 336, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4638:8:0"}, "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "mutability": "mutable", "name": "operatorId", "nameLocation": "4604:10:0", "nodeType": "VariableDeclaration", "scope": 349, "src": "4597:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4597:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 334, "mutability": "mutable", "name": "fee", "nameLocation": "4624:3:0", "nodeType": "VariableDeclaration", "scope": 349, "src": "4616:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4616:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4596:32:0"}, "returnParameters": {"id": 337, "nodeType": "ParameterList", "parameters": [], "src": "4647:0:0"}, "scope": 842, "src": "4569:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1224], "body": {"id": 365, "nodeType": "Block", "src": "4802:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 356, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4822:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4833:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4822:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4822:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4840:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4822:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 362, "indexExpression": {"expression": {"id": 360, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4853:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4864:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4853:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4822:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 355, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4812:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4812:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 364, "nodeType": "ExpressionStatement", "src": "4812:67:0"}]}, "functionSelector": "8932cee0", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4746:18:0", "nodeType": "FunctionDefinition", "overrides": {"id": 353, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4793:8:0"}, "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "mutability": "mutable", "name": "operatorId", "nameLocation": "4772:10:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "4765:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 350, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4765:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4764:19:0"}, "returnParameters": {"id": 354, "nodeType": "ParameterList", "parameters": [], "src": "4802:0:0"}, "scope": 842, "src": "4737:149:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1230], "body": {"id": 382, "nodeType": "Block", "src": "4964:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 373, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4984:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4995:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4984:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 376, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5002:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4984:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 379, "indexExpression": {"expression": {"id": 377, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5015:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5026:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5015:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4984:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 372, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4974:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4974:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 381, "nodeType": "ExpressionStatement", "src": "4974:67:0"}]}, "functionSelector": "23d68a6d", "id": 383, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "4901:25:0", "nodeType": "FunctionDefinition", "overrides": {"id": 370, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4955:8:0"}, "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "4934:10:0", "nodeType": "VariableDeclaration", "scope": 383, "src": "4927:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4927:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4926:19:0"}, "returnParameters": {"id": 371, "nodeType": "ParameterList", "parameters": [], "src": "4964:0:0"}, "scope": 842, "src": "4892:156:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1238], "body": {"id": 401, "nodeType": "Block", "src": "5131:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 392, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5151:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5162:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5151:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5151:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5169:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5151:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 398, "indexExpression": {"expression": {"id": 396, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5182:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5193:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5182:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5151:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 391, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5141:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5141:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 400, "nodeType": "ExpressionStatement", "src": "5141:67:0"}]}, "functionSelector": "190d82e4", "id": 402, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5063:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 389, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5122:8:0"}, "parameters": {"id": 388, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 385, "mutability": "mutable", "name": "operatorId", "nameLocation": "5088:10:0", "nodeType": "VariableDeclaration", "scope": 402, "src": "5081:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 384, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5081:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 387, "mutability": "mutable", "name": "fee", "nameLocation": "5108:3:0", "nodeType": "VariableDeclaration", "scope": 402, "src": "5100:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 386, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5100:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5080:32:0"}, "returnParameters": {"id": 390, "nodeType": "ParameterList", "parameters": [], "src": "5131:0:0"}, "scope": 842, "src": "5054:161:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1246], "body": {"id": 420, "nodeType": "Block", "src": "5308:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 411, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5328:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5339:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5328:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5328:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5346:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5328:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 417, "indexExpression": {"expression": {"id": 415, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5359:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5370:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5359:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5328:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 410, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5318:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5318:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 419, "nodeType": "ExpressionStatement", "src": "5318:67:0"}]}, "functionSelector": "35f63767", "id": 421, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "5230:24:0", "nodeType": "FunctionDefinition", "overrides": {"id": 408, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5299:8:0"}, "parameters": {"id": 407, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 404, "mutability": "mutable", "name": "operatorId", "nameLocation": "5262:10:0", "nodeType": "VariableDeclaration", "scope": 421, "src": "5255:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 403, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5255:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 406, "mutability": "mutable", "name": "amount", "nameLocation": "5282:6:0", "nodeType": "VariableDeclaration", "scope": 421, "src": "5274:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5274:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5254:35:0"}, "returnParameters": {"id": 409, "nodeType": "ParameterList", "parameters": [], "src": "5308:0:0"}, "scope": 842, "src": "5221:171:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1252], "body": {"id": 437, "nodeType": "Block", "src": "5472:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 428, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5492:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5503:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5492:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 431, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5510:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5492:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 434, "indexExpression": {"expression": {"id": 432, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5523:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5534:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5523:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5492:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 427, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5482:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5482:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 436, "nodeType": "ExpressionStatement", "src": "5482:67:0"}]}, "functionSelector": "4bc93b64", "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "5407:27:0", "nodeType": "FunctionDefinition", "overrides": {"id": 425, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5463:8:0"}, "parameters": {"id": 424, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 423, "mutability": "mutable", "name": "operatorId", "nameLocation": "5442:10:0", "nodeType": "VariableDeclaration", "scope": 438, "src": "5435:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 422, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5435:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5434:19:0"}, "returnParameters": {"id": 426, "nodeType": "ParameterList", "parameters": [], "src": "5472:0:0"}, "scope": 842, "src": "5398:158:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1154], "body": {"id": 450, "nodeType": "Block", "src": "5752:78:0", "statements": [{"eventCall": {"arguments": [{"expression": {"id": 445, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5794:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5798:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "5794:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 447, "name": "recipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 440, "src": "5806:16:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 444, "name": "FeeRecipientAddressUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1316, "src": "5767:26:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5767:56:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 449, "nodeType": "EmitStatement", "src": "5762:61:0"}]}, "functionSelector": "dbcdc2cc", "id": 451, "implemented": true, "kind": "function", "modifiers": [], "name": "setFeeRecipientAddress", "nameLocation": "5685:22:0", "nodeType": "FunctionDefinition", "overrides": {"id": 442, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5743:8:0"}, "parameters": {"id": 441, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 440, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "5716:16:0", "nodeType": "VariableDeclaration", "scope": 451, "src": "5708:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 439, "name": "address", "nodeType": "ElementaryTypeName", "src": "5708:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5707:26:0"}, "returnParameters": {"id": 443, "nodeType": "ParameterList", "parameters": [], "src": "5752:0:0"}, "scope": 842, "src": "5676:154:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [877], "body": {"id": 490, "nodeType": "Block", "src": "6181:186:0", "statements": [{"condition": {"id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6195:64:0", "subExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 467, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "6196:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6209:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "6196:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6196:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 470, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6216:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "6196:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 473, "indexExpression": {"expression": {"id": 471, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6230:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6234:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "6230:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6196:45:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6242:17:0", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1630, "src": "6196:63:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 479, "nodeType": "IfStatement", "src": "6191:92:0", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 476, "name": "NotAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "6268:13:0", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6268:15:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 478, "nodeType": "RevertStatement", "src": "6261:22:0"}}, {"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 481, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6304:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6315:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6304:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6304:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 484, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6322:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6304:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 487, "indexExpression": {"expression": {"id": 485, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6335:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 486, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6346:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6335:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6304:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 480, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6294:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6294:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 489, "nodeType": "ExpressionStatement", "src": "6294:66:0"}]}, "functionSelector": "06e8fb9c", "id": 491, "implemented": true, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "5961:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 465, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6172:8:0"}, "parameters": {"id": 464, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 453, "mutability": "mutable", "name": "publicKey", "nameLocation": "6003:9:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "5988:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 452, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5988:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 456, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6038:11:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6022:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 454, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6022:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 455, "nodeType": "ArrayTypeName", "src": "6022:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 458, "mutability": "mutable", "name": "sharesData", "nameLocation": "6074:10:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6059:25:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 457, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6059:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 460, "mutability": "mutable", "name": "amount", "nameLocation": "6102:6:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6094:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6094:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 463, "mutability": "mutable", "name": "cluster", "nameLocation": "6149:7:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6118:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 462, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 461, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6118:15:0", "6134:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6118:23:0"}, "referencedDeclaration": 2247, "src": "6118:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "5978:184:0"}, "returnParameters": {"id": 466, "nodeType": "ParameterList", "parameters": [], "src": "6181:0:0"}, "scope": 842, "src": "5952:415:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [889], "body": {"id": 513, "nodeType": "Block", "src": "6543:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 504, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6563:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6574:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6563:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6563:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 507, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6581:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6563:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 510, "indexExpression": {"expression": {"id": 508, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6594:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6605:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6594:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6563:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 503, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6553:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6553:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 512, "nodeType": "ExpressionStatement", "src": "6553:66:0"}]}, "functionSelector": "12b3fc19", "id": 514, "implemented": true, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "6382:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 501, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6534:8:0"}, "parameters": {"id": 500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 493, "mutability": "mutable", "name": "publicKey", "nameLocation": "6422:9:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6407:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 492, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6407:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6459:11:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6441:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 494, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6441:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 495, "nodeType": "ArrayTypeName", "src": "6441:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 499, "mutability": "mutable", "name": "cluster", "nameLocation": "6511:7:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6480:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 498, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 497, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6480:15:0", "6496:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6480:23:0"}, "referencedDeclaration": 2247, "src": "6480:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6397:127:0"}, "returnParameters": {"id": 502, "nodeType": "ParameterList", "parameters": [], "src": "6543:0:0"}, "scope": 842, "src": "6373:253:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [901], "body": {"id": 535, "nodeType": "Block", "src": "6783:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 526, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6803:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6814:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6803:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6803:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 529, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6821:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6803:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 532, "indexExpression": {"expression": {"id": 530, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6834:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6845:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6834:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6803:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 525, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6793:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6793:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 534, "nodeType": "ExpressionStatement", "src": "6793:66:0"}]}, "functionSelector": "bf0f2fb2", "id": 536, "implemented": true, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "6641:9:0", "nodeType": "FunctionDefinition", "parameters": {"id": 523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 516, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "6668:12:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6660:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 515, "name": "address", "nodeType": "ElementaryTypeName", "src": "6660:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 519, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6708:11:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6690:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 517, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6690:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 518, "nodeType": "ArrayTypeName", "src": "6690:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 522, "mutability": "mutable", "name": "cluster", "nameLocation": "6760:7:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6729:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 520, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6729:15:0", "6745:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6729:23:0"}, "referencedDeclaration": 2247, "src": "6729:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6650:123:0"}, "returnParameters": {"id": 524, "nodeType": "ParameterList", "parameters": [], "src": "6783:0:0"}, "scope": 842, "src": "6632:234:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [913], "body": {"id": 558, "nodeType": "Block", "src": "7027:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 549, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7047:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7058:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7047:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7047:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7065:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7047:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 555, "indexExpression": {"expression": {"id": 553, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7078:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7089:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7078:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7047:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 548, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7037:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7037:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 557, "nodeType": "ExpressionStatement", "src": "7037:66:0"}]}, "functionSelector": "5fec6dd0", "id": 559, "implemented": true, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "6881:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 546, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7018:8:0"}, "parameters": {"id": 545, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 539, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6919:11:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6901:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 537, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6901:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 538, "nodeType": "ArrayTypeName", "src": "6901:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 541, "mutability": "mutable", "name": "amount", "nameLocation": "6948:6:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6940:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 540, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6940:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 544, "mutability": "mutable", "name": "cluster", "nameLocation": "6995:7:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6964:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 543, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 542, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6964:15:0", "6980:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6964:23:0"}, "referencedDeclaration": 2247, "src": "6964:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6891:117:0"}, "returnParameters": {"id": 547, "nodeType": "ParameterList", "parameters": [], "src": "7027:0:0"}, "scope": 842, "src": "6872:238:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [927], "body": {"id": 583, "nodeType": "Block", "src": "7298:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 574, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7318:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7329:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7318:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7318:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7336:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7318:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 580, "indexExpression": {"expression": {"id": 578, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7349:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7360:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7349:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7318:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 573, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7308:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7308:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "7308:66:0"}]}, "functionSelector": "bc26e7e5", "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "7125:7:0", "nodeType": "FunctionDefinition", "overrides": {"id": 571, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7289:8:0"}, "parameters": {"id": 570, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 561, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "7150:12:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7142:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 560, "name": "address", "nodeType": "ElementaryTypeName", "src": "7142:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 564, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7190:11:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7172:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 562, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7172:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 563, "nodeType": "ArrayTypeName", "src": "7172:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 566, "mutability": "mutable", "name": "amount", "nameLocation": "7219:6:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7211:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 565, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7211:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 569, "mutability": "mutable", "name": "cluster", "nameLocation": "7266:7:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7235:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 568, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 567, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["7235:15:0", "7251:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "7235:23:0"}, "referencedDeclaration": 2247, "src": "7235:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7132:147:0"}, "returnParameters": {"id": 572, "nodeType": "ParameterList", "parameters": [], "src": "7298:0:0"}, "scope": 842, "src": "7116:265:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [939], "body": {"id": 606, "nodeType": "Block", "src": "7540:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 597, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7560:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7571:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7560:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7560:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7578:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7560:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 603, "indexExpression": {"expression": {"id": 601, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7591:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7602:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7591:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7560:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 596, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7550:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7550:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 605, "nodeType": "ExpressionStatement", "src": "7550:66:0"}]}, "functionSelector": "686e682c", "id": 607, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "7396:8:0", "nodeType": "FunctionDefinition", "overrides": {"id": 594, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7531:8:0"}, "parameters": {"id": 593, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 587, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7432:11:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7414:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 585, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 586, "nodeType": "ArrayTypeName", "src": "7414:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 589, "mutability": "mutable", "name": "amount", "nameLocation": "7461:6:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7453:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7453:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 592, "mutability": "mutable", "name": "cluster", "nameLocation": "7508:7:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7477:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 591, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 590, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["7477:15:0", "7493:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "7477:23:0"}, "referencedDeclaration": 2247, "src": "7477:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7404:117:0"}, "returnParameters": {"id": 595, "nodeType": "ParameterList", "parameters": [], "src": "7540:0:0"}, "scope": 842, "src": "7387:236:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1023], "body": {"id": 625, "nodeType": "Block", "src": "7696:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 616, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7716:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7727:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7716:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7716:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7734:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7716:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 622, "indexExpression": {"expression": {"id": 620, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7747:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7758:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "7747:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7716:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 615, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7706:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7706:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 624, "nodeType": "ExpressionStatement", "src": "7706:61:0"}]}, "functionSelector": "1f1f9fd5", "id": 626, "implemented": true, "kind": "function", "modifiers": [{"id": 613, "kind": "modifierInvocation", "modifierName": {"id": 612, "name": "onlyOwner", "nameLocations": ["7686:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "7686:9:0"}, "nodeType": "ModifierInvocation", "src": "7686:9:0"}], "name": "updateNetworkFee", "nameLocation": "7638:16:0", "nodeType": "FunctionDefinition", "overrides": {"id": 611, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7677:8:0"}, "parameters": {"id": 610, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 609, "mutability": "mutable", "name": "fee", "nameLocation": "7663:3:0", "nodeType": "VariableDeclaration", "scope": 626, "src": "7655:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 608, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7655:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7654:13:0"}, "returnParameters": {"id": 614, "nodeType": "ParameterList", "parameters": [], "src": "7696:0:0"}, "scope": 842, "src": "7629:145:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1029], "body": {"id": 644, "nodeType": "Block", "src": "7857:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 635, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7877:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7888:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7877:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7877:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7895:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7877:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 641, "indexExpression": {"expression": {"id": 639, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7908:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7919:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "7908:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7877:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 634, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7867:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7867:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "7867:61:0"}]}, "functionSelector": "d2231741", "id": 645, "implemented": true, "kind": "function", "modifiers": [{"id": 632, "kind": "modifierInvocation", "modifierName": {"id": 631, "name": "onlyOwner", "nameLocations": ["7847:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "7847:9:0"}, "nodeType": "ModifierInvocation", "src": "7847:9:0"}], "name": "withdrawNetworkEarnings", "nameLocation": "7789:23:0", "nodeType": "FunctionDefinition", "overrides": {"id": 630, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7838:8:0"}, "parameters": {"id": 629, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 628, "mutability": "mutable", "name": "amount", "nameLocation": "7821:6:0", "nodeType": "VariableDeclaration", "scope": 645, "src": "7813:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7813:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7812:16:0"}, "returnParameters": {"id": 633, "nodeType": "ParameterList", "parameters": [], "src": "7857:0:0"}, "scope": 842, "src": "7780:155:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1035], "body": {"id": 663, "nodeType": "Block", "src": "8028:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 654, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8048:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8059:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8048:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8048:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 657, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8066:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8048:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 660, "indexExpression": {"expression": {"id": 658, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8079:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8090:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8079:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8048:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 653, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8038:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8038:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "ExpressionStatement", "src": "8038:61:0"}]}, "functionSelector": "3631983f", "id": 664, "implemented": true, "kind": "function", "modifiers": [{"id": 651, "kind": "modifierInvocation", "modifierName": {"id": 650, "name": "onlyOwner", "nameLocations": ["8018:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8018:9:0"}, "nodeType": "ModifierInvocation", "src": "8018:9:0"}], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "7950:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 649, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8009:8:0"}, "parameters": {"id": 648, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 647, "mutability": "mutable", "name": "percentage", "nameLocation": "7988:10:0", "nodeType": "VariableDeclaration", "scope": 664, "src": "7981:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 646, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7981:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "7980:19:0"}, "returnParameters": {"id": 652, "nodeType": "ParameterList", "parameters": [], "src": "8028:0:0"}, "scope": 842, "src": "7941:165:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1041], "body": {"id": 682, "nodeType": "Block", "src": "8202:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 673, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8222:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8233:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8222:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 675, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8222:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 676, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8240:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8222:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 679, "indexExpression": {"expression": {"id": 677, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8253:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 678, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8264:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8253:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8222:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 672, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8212:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8212:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 681, "nodeType": "ExpressionStatement", "src": "8212:61:0"}]}, "functionSelector": "79e3e4e4", "id": 683, "implemented": true, "kind": "function", "modifiers": [{"id": 670, "kind": "modifierInvocation", "modifierName": {"id": 669, "name": "onlyOwner", "nameLocations": ["8192:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8192:9:0"}, "nodeType": "ModifierInvocation", "src": "8192:9:0"}], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "8121:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 668, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8183:8:0"}, "parameters": {"id": 667, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 666, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "8159:13:0", "nodeType": "VariableDeclaration", "scope": 683, "src": "8152:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 665, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8152:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8151:22:0"}, "returnParameters": {"id": 671, "nodeType": "ParameterList", "parameters": [], "src": "8202:0:0"}, "scope": 842, "src": "8112:168:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1047], "body": {"id": 701, "nodeType": "Block", "src": "8376:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 692, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8396:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8407:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8396:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8396:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8414:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8396:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 698, "indexExpression": {"expression": {"id": 696, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8427:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8438:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8427:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8396:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 691, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8386:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8386:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 700, "nodeType": "ExpressionStatement", "src": "8386:61:0"}]}, "functionSelector": "eb608022", "id": 702, "implemented": true, "kind": "function", "modifiers": [{"id": 689, "kind": "modifierInvocation", "modifierName": {"id": 688, "name": "onlyOwner", "nameLocations": ["8366:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8366:9:0"}, "nodeType": "ModifierInvocation", "src": "8366:9:0"}], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "8295:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 687, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8357:8:0"}, "parameters": {"id": 686, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 685, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "8333:13:0", "nodeType": "VariableDeclaration", "scope": 702, "src": "8326:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 684, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8326:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8325:22:0"}, "returnParameters": {"id": 690, "nodeType": "ParameterList", "parameters": [], "src": "8376:0:0"}, "scope": 842, "src": "8286:168:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1053], "body": {"id": 720, "nodeType": "Block", "src": "8545:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 711, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8565:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8576:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8565:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8565:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 714, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8583:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8565:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 717, "indexExpression": {"expression": {"id": 715, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8596:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8607:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8596:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8565:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 710, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8555:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8555:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 719, "nodeType": "ExpressionStatement", "src": "8555:61:0"}]}, "functionSelector": "6512447d", "id": 721, "implemented": true, "kind": "function", "modifiers": [{"id": 708, "kind": "modifierInvocation", "modifierName": {"id": 707, "name": "onlyOwner", "nameLocations": ["8535:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8535:9:0"}, "nodeType": "ModifierInvocation", "src": "8535:9:0"}], "name": "updateLiquidationThresholdPeriod", "nameLocation": "8469:32:0", "nodeType": "FunctionDefinition", "overrides": {"id": 706, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8526:8:0"}, "parameters": {"id": 705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 704, "mutability": "mutable", "name": "blocks", "nameLocation": "8509:6:0", "nodeType": "VariableDeclaration", "scope": 721, "src": "8502:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8502:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8501:15:0"}, "returnParameters": {"id": 709, "nodeType": "ParameterList", "parameters": [], "src": "8545:0:0"}, "scope": 842, "src": "8460:163:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1059], "body": {"id": 739, "nodeType": "Block", "src": "8717:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 730, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8737:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8748:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8737:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8737:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 733, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8755:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8737:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 736, "indexExpression": {"expression": {"id": 734, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8768:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 735, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8779:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8768:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8737:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 729, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8727:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 737, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8727:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 738, "nodeType": "ExpressionStatement", "src": "8727:61:0"}]}, "functionSelector": "b4c9c408", "id": 740, "implemented": true, "kind": "function", "modifiers": [{"id": 727, "kind": "modifierInvocation", "modifierName": {"id": 726, "name": "onlyOwner", "nameLocations": ["8707:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8707:9:0"}, "nodeType": "ModifierInvocation", "src": "8707:9:0"}], "name": "updateMinimumLiquidationCollateral", "nameLocation": "8638:34:0", "nodeType": "FunctionDefinition", "overrides": {"id": 725, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8698:8:0"}, "parameters": {"id": 724, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 723, "mutability": "mutable", "name": "amount", "nameLocation": "8681:6:0", "nodeType": "VariableDeclaration", "scope": 740, "src": "8673:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8673:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8672:16:0"}, "returnParameters": {"id": 728, "nodeType": "ParameterList", "parameters": [], "src": "8717:0:0"}, "scope": 842, "src": "8629:166:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1065], "body": {"id": 758, "nodeType": "Block", "src": "8878:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 749, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8898:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8909:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8898:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8898:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 752, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8916:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8898:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 755, "indexExpression": {"expression": {"id": 753, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8929:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8940:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8929:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8898:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 748, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8888:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8888:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 757, "nodeType": "ExpressionStatement", "src": "8888:61:0"}]}, "functionSelector": "e39c6744", "id": 759, "implemented": true, "kind": "function", "modifiers": [{"id": 746, "kind": "modifierInvocation", "modifierName": {"id": 745, "name": "onlyOwner", "nameLocations": ["8868:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8868:9:0"}, "nodeType": "ModifierInvocation", "src": "8868:9:0"}], "name": "updateMaximumOperatorFee", "nameLocation": "8810:24:0", "nodeType": "FunctionDefinition", "overrides": {"id": 744, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8859:8:0"}, "parameters": {"id": 743, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 742, "mutability": "mutable", "name": "maxFee", "nameLocation": "8842:6:0", "nodeType": "VariableDeclaration", "scope": 759, "src": "8835:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 741, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8835:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8834:15:0"}, "returnParameters": {"id": 747, "nodeType": "ParameterList", "parameters": [], "src": "8878:0:0"}, "scope": 842, "src": "8801:155:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1149], "body": {"id": 769, "nodeType": "Block", "src": "9039:44:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 765, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "9056:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1624_$", "typeString": "type(library CoreLib)"}}, "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9064:10:0", "memberName": "getVersion", "nodeType": "MemberAccess", "referencedDeclaration": 1511, "src": "9056:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)"}}, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9056:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 764, "id": 768, "nodeType": "Return", "src": "9049:27:0"}]}, "functionSelector": "0d8e6e2c", "id": 770, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "8971:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 761, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8998:8:0"}, "parameters": {"id": 760, "nodeType": "ParameterList", "parameters": [], "src": "8981:2:0"}, "returnParameters": {"id": 764, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 763, "mutability": "mutable", "name": "version", "nameLocation": "9030:7:0", "nodeType": "VariableDeclaration", "scope": 770, "src": "9016:21:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 762, "name": "string", "nodeType": "ElementaryTypeName", "src": "9016:6:0", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "9015:23:0"}, "scope": 842, "src": "8962:121:0", "stateMutability": "pure", "virtual": false, "visibility": "external"}, {"baseFunctions": [1162], "body": {"id": 787, "nodeType": "Block", "src": "9288:67:0", "statements": [{"expression": {"arguments": [{"id": 783, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 773, "src": "9324:8:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, {"id": 784, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "9334:13:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 780, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "9298:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1624_$", "typeString": "type(library CoreLib)"}}, "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9306:17:0", "memberName": "setModuleContract", "nodeType": "MemberAccess", "referencedDeclaration": 1623, "src": "9298:25:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_enum$_SSVModules_$1670_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9298:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 786, "nodeType": "ExpressionStatement", "src": "9298:50:0"}]}, "functionSelector": "e3e324b0", "id": 788, "implemented": true, "kind": "function", "modifiers": [{"id": 778, "kind": "modifierInvocation", "modifierName": {"id": 777, "name": "onlyOwner", "nameLocations": ["9278:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "9278:9:0"}, "nodeType": "ModifierInvocation", "src": "9278:9:0"}], "name": "updateModule", "nameLocation": "9212:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 773, "mutability": "mutable", "name": "moduleId", "nameLocation": "9236:8:0", "nodeType": "VariableDeclaration", "scope": 788, "src": "9225:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 772, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 771, "name": "SSVModules", "nameLocations": ["9225:10:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "9225:10:0"}, "referencedDeclaration": 1670, "src": "9225:10:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 775, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "9254:13:0", "nodeType": "VariableDeclaration", "scope": 788, "src": "9246:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 774, "name": "address", "nodeType": "ElementaryTypeName", "src": "9246:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9224:44:0"}, "returnParameters": {"id": 779, "nodeType": "ParameterList", "parameters": [], "src": "9288:0:0"}, "scope": 842, "src": "9203:152:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1171], "body": {"id": 813, "nodeType": "Block", "src": "9588:108:0", "statements": [{"expression": {"id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 800, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "9598:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9611:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "9598:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9598:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 804, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9618:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "9598:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 806, "indexExpression": {"id": 805, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 790, "src": "9632:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9598:46:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 808, "name": "authOperator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "9661:12:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 809, "name": "authValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "9675:13:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 807, "name": "Authorization", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1631, "src": "9647:13:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Authorization_$1631_storage_ptr_$", "typeString": "type(struct Authorization storage pointer)"}}, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9647:42:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "src": "9598:91:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 812, "nodeType": "ExpressionStatement", "src": "9598:91:0"}]}, "functionSelector": "3ed00469", "id": 814, "implemented": true, "kind": "function", "modifiers": [{"id": 798, "kind": "modifierInvocation", "modifierName": {"id": 797, "name": "onlyOwner", "nameLocations": ["9578:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "9578:9:0"}, "nodeType": "ModifierInvocation", "src": "9578:9:0"}], "name": "setRegisterAuth", "nameLocation": "9484:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 796, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9569:8:0"}, "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 790, "mutability": "mutable", "name": "userAddress", "nameLocation": "9508:11:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9500:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 789, "name": "address", "nodeType": "ElementaryTypeName", "src": "9500:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 792, "mutability": "mutable", "name": "authOperator", "nameLocation": "9526:12:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9521:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 791, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9521:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 794, "mutability": "mutable", "name": "authValidator", "nameLocation": "9545:13:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9540:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 793, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9540:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "9499:60:0"}, "returnParameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "9588:0:0"}, "scope": 842, "src": "9475:221:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1180], "body": {"id": 840, "nodeType": "Block", "src": "9835:155:0", "statements": [{"assignments": [826], "declarations": [{"constant": false, "id": 826, "mutability": "mutable", "name": "auth", "nameLocation": "9866:4:0", "nodeType": "VariableDeclaration", "scope": 840, "src": "9845:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization"}, "typeName": {"id": 825, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 824, "name": "Authorization", "nameLocations": ["9845:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1631, "src": "9845:13:0"}, "referencedDeclaration": 1631, "src": "9845:13:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage_ptr", "typeString": "struct Authorization"}}, "visibility": "internal"}], "id": 833, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 827, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "9873:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9886:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "9873:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9873:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 830, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9893:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "9873:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 832, "indexExpression": {"id": 831, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 816, "src": "9907:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9873:46:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "9845:74:0"}, {"expression": {"components": [{"expression": {"id": 834, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "9937:4:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "id": 835, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9942:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1628, "src": "9937:21:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"expression": {"id": 836, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "9960:4:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "id": 837, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9965:17:0", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1630, "src": "9960:22:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 838, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9936:47:0", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", "typeString": "tuple(bool,bool)"}}, "functionReturnParameters": 823, "id": 839, "nodeType": "Return", "src": "9929:54:0"}]}, "functionSelector": "7398ca6c", "id": 841, "implemented": true, "kind": "function", "modifiers": [], "name": "getRegisterAuth", "nameLocation": "9711:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 818, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9776:8:0"}, "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 816, "mutability": "mutable", "name": "userAddress", "nameLocation": "9744:11:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9736:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 815, "name": "address", "nodeType": "ElementaryTypeName", "src": "9736:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9726:35:0"}, "returnParameters": {"id": 823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 820, "mutability": "mutable", "name": "authOperators", "nameLocation": "9799:13:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9794:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 819, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9794:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 822, "mutability": "mutable", "name": "authValidators", "nameLocation": "9819:14:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9814:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 821, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9814:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "9793:41:0"}, "scope": 842, "src": "9702:288:0", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 843, "src": "751:9241:0", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:9948:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol": {"AST": {"absolutePath": "contracts/SSVProxy.sol", "exportedSymbols": {"SSVModules": [1670], "SSVProxy": [856], "SSVStorage": [1740], "StorageData": [1717]}, "id": 857, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 844, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 848, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 857, "sourceUnit": 1741, "src": "70:79:1", "symbolAliases": [{"foreign": {"id": 845, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "78:10:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 846, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "90:10:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 847, "name": "StorageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1717, "src": "102:11:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "SSVProxy", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 856, "linearizedBaseContracts": [856], "name": "SSVProxy", "nameLocation": "169:8:1", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 854, "nodeType": "Block", "src": "237:835:1", "statements": [{"AST": {"nodeType": "YulBlock", "src": "256:810:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "509:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "512:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "calldatasize", "nodeType": "YulIdentifier", "src": "515:12:1"}, "nodeType": "YulFunctionCall", "src": "515:14:1"}], "functionName": {"name": "calldatacopy", "nodeType": "YulIdentifier", "src": "496:12:1"}, "nodeType": "YulFunctionCall", "src": "496:34:1"}, "nodeType": "YulExpressionStatement", "src": "496:34:1"}, {"nodeType": "YulVariableDeclaration", "src": "657:74:1", "value": {"arguments": [{"arguments": [], "functionName": {"name": "gas", "nodeType": "YulIdentifier", "src": "684:3:1"}, "nodeType": "YulFunctionCall", "src": "684:5:1"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "691:14:1"}, {"kind": "number", "nodeType": "YulLiteral", "src": "707:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "calldatasize", "nodeType": "YulIdentifier", "src": "710:12:1"}, "nodeType": "YulFunctionCall", "src": "710:14:1"}, {"kind": "number", "nodeType": "YulLiteral", "src": "726:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "729:1:1", "type": "", "value": "0"}], "functionName": {"name": "delegatecall", "nodeType": "YulIdentifier", "src": "671:12:1"}, "nodeType": "YulFunctionCall", "src": "671:60:1"}, "variables": [{"name": "result", "nodeType": "YulTypedName", "src": "661:6:1", "type": ""}]}, {"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "799:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "802:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "805:14:1"}, "nodeType": "YulFunctionCall", "src": "805:16:1"}], "functionName": {"name": "returndatacopy", "nodeType": "YulIdentifier", "src": "784:14:1"}, "nodeType": "YulFunctionCall", "src": "784:38:1"}, "nodeType": "YulExpressionStatement", "src": "784:38:1"}, {"cases": [{"body": {"nodeType": "YulBlock", "src": "917:59:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "942:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "945:14:1"}, "nodeType": "YulFunctionCall", "src": "945:16:1"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "935:6:1"}, "nodeType": "YulFunctionCall", "src": "935:27:1"}, "nodeType": "YulExpressionStatement", "src": "935:27:1"}]}, "nodeType": "YulCase", "src": "910:66:1", "value": {"kind": "number", "nodeType": "YulLiteral", "src": "915:1:1", "type": "", "value": "0"}}, {"body": {"nodeType": "YulBlock", "src": "997:59:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1022:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "1025:14:1"}, "nodeType": "YulFunctionCall", "src": "1025:16:1"}], "functionName": {"name": "return", "nodeType": "YulIdentifier", "src": "1015:6:1"}, "nodeType": "YulFunctionCall", "src": "1015:27:1"}, "nodeType": "YulExpressionStatement", "src": "1015:27:1"}]}, "nodeType": "YulCase", "src": "989:67:1", "value": "default"}], "expression": {"name": "result", "nodeType": "YulIdentifier", "src": "843:6:1"}, "nodeType": "YulSwitch", "src": "836:220:1"}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 850, "isOffset": false, "isSlot": false, "src": "691:14:1", "valueSize": 1}], "id": 853, "nodeType": "InlineAssembly", "src": "247:819:1"}]}, "id": 855, "implemented": true, "kind": "function", "modifiers": [], "name": "_delegate", "nameLocation": "194:9:1", "nodeType": "FunctionDefinition", "parameters": {"id": 851, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 850, "mutability": "mutable", "name": "implementation", "nameLocation": "212:14:1", "nodeType": "VariableDeclaration", "scope": 855, "src": "204:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 849, "name": "address", "nodeType": "ElementaryTypeName", "src": "204:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "203:24:1"}, "returnParameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "237:0:1"}, "scope": 856, "src": "185:887:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 857, "src": "151:923:1", "usedErrors": []}], "src": "45:1030:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "exportedSymbols": {"ISSVClusters": [1012], "ISSVNetworkCore": [2308]}, "id": 1013, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 858, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 859, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1013, "sourceUnit": 2309, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 860, "name": "ISSVNetworkCore", "nameLocations": ["129:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "129:15:2"}, "id": 861, "nodeType": "InheritanceSpecifier", "src": "129:15:2"}], "canonicalName": "ISSVClusters", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1012, "linearizedBaseContracts": [1012, 2308], "name": "ISSVClusters", "nameLocation": "113:12:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 862, "nodeType": "StructuredDocumentation", "src": "151:390:2", "text": "@notice Registers a new validator on the SSV Network\n @param publicKey The public key of the new validator\n @param operatorIds Array of IDs of operators managing this validator\n @param sharesData Encrypted shares related to the new validator\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster to be used with the new validator"}, "functionSelector": "06e8fb9c", "id": 877, "implemented": false, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "555:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 864, "mutability": "mutable", "name": "publicKey", "nameLocation": "597:9:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "582:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 863, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "582:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 867, "mutability": "mutable", "name": "operatorIds", "nameLocation": "632:11:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "616:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 865, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "616:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 866, "nodeType": "ArrayTypeName", "src": "616:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 869, "mutability": "mutable", "name": "sharesData", "nameLocation": "668:10:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "653:25:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 868, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "653:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 871, "mutability": "mutable", "name": "amount", "nameLocation": "696:6:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "688:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "688:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "cluster", "nameLocation": "727:7:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "712:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 873, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 872, "name": "Cluster", "nameLocations": ["712:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "712:7:2"}, "referencedDeclaration": 2247, "src": "712:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "572:168:2"}, "returnParameters": {"id": 876, "nodeType": "ParameterList", "parameters": [], "src": "749:0:2"}, "scope": 1012, "src": "546:204:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 878, "nodeType": "StructuredDocumentation", "src": "756:270:2", "text": "@notice Removes an existing validator from the SSV Network\n @param publicKey The public key of the validator to be removed\n @param operatorIds Array of IDs of operators managing the validator\n @param cluster Cluster associated with the validator"}, "functionSelector": "12b3fc19", "id": 889, "implemented": false, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "1040:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 887, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 880, "mutability": "mutable", "name": "publicKey", "nameLocation": "1071:9:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1056:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 879, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1056:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 883, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1098:11:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1082:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 881, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1082:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 882, "nodeType": "ArrayTypeName", "src": "1082:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 886, "mutability": "mutable", "name": "cluster", "nameLocation": "1126:7:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1111:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 885, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 884, "name": "Cluster", "nameLocations": ["1111:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1111:7:2"}, "referencedDeclaration": 2247, "src": "1111:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1055:79:2"}, "returnParameters": {"id": 888, "nodeType": "ParameterList", "parameters": [], "src": "1143:0:2"}, "scope": 1012, "src": "1031:113:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 890, "nodeType": "StructuredDocumentation", "src": "1254:200:2", "text": "@notice Liquidates a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param cluster Cluster to be liquidated"}, "functionSelector": "bf0f2fb2", "id": 901, "implemented": false, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "1468:9:2", "nodeType": "FunctionDefinition", "parameters": {"id": 899, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 892, "mutability": "mutable", "name": "owner", "nameLocation": "1486:5:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1478:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 891, "name": "address", "nodeType": "ElementaryTypeName", "src": "1478:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 895, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1509:11:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1493:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 893, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1493:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 894, "nodeType": "ArrayTypeName", "src": "1493:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 898, "mutability": "mutable", "name": "cluster", "nameLocation": "1537:7:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1522:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 896, "name": "Cluster", "nameLocations": ["1522:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1522:7:2"}, "referencedDeclaration": 2247, "src": "1522:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1477:68:2"}, "returnParameters": {"id": 900, "nodeType": "ParameterList", "parameters": [], "src": "1554:0:2"}, "scope": 1012, "src": "1459:96:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 902, "nodeType": "StructuredDocumentation", "src": "1561:232:2", "text": "@notice Reactivates a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited for reactivation\n @param cluster Cluster to be reactivated"}, "functionSelector": "5fec6dd0", "id": 913, "implemented": false, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "1807:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 911, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 905, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1834:11:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1818:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 903, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1818:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 904, "nodeType": "ArrayTypeName", "src": "1818:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "amount", "nameLocation": "1855:6:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1847:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 906, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 910, "mutability": "mutable", "name": "cluster", "nameLocation": "1878:7:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1863:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 909, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 908, "name": "Cluster", "nameLocations": ["1863:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1863:7:2"}, "referencedDeclaration": 2247, "src": "1863:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1817:69:2"}, "returnParameters": {"id": 912, "nodeType": "ParameterList", "parameters": [], "src": "1895:0:2"}, "scope": 1012, "src": "1798:98:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 914, "nodeType": "StructuredDocumentation", "src": "2014:283:2", "text": "@notice Deposits tokens into a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster where the deposit will be made"}, "functionSelector": "bc26e7e5", "id": 927, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "2311:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 925, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 916, "mutability": "mutable", "name": "owner", "nameLocation": "2327:5:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2319:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 915, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 919, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2350:11:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2334:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 917, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2334:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 918, "nodeType": "ArrayTypeName", "src": "2334:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 921, "mutability": "mutable", "name": "amount", "nameLocation": "2371:6:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2363:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2363:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 924, "mutability": "mutable", "name": "cluster", "nameLocation": "2394:7:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2379:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 923, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 922, "name": "Cluster", "nameLocations": ["2379:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2379:7:2"}, "referencedDeclaration": 2247, "src": "2379:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2318:84:2"}, "returnParameters": {"id": 926, "nodeType": "ParameterList", "parameters": [], "src": "2411:0:2"}, "scope": 1012, "src": "2302:110:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 928, "nodeType": "StructuredDocumentation", "src": "2418:246:2", "text": "@notice Withdraws tokens from a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param tokenAmount Amount of SSV tokens to be withdrawn\n @param cluster Cluster where the withdrawal will be made"}, "functionSelector": "686e682c", "id": 939, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2678:8:2", "nodeType": "FunctionDefinition", "parameters": {"id": 937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 931, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2703:11:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2687:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 929, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2687:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 930, "nodeType": "ArrayTypeName", "src": "2687:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 933, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "2724:11:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2716:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2716:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 936, "mutability": "mutable", "name": "cluster", "nameLocation": "2752:7:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2737:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 935, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 934, "name": "Cluster", "nameLocations": ["2737:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2737:7:2"}, "referencedDeclaration": 2247, "src": "2737:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2686:74:2"}, "returnParameters": {"id": 938, "nodeType": "ParameterList", "parameters": [], "src": "2769:0:2"}, "scope": 1012, "src": "2669:101:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 940, "nodeType": "StructuredDocumentation", "src": "2776:299:2", "text": " @dev Emitted when the validator has been added.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param shares snappy compressed shares(a set of encrypted and public shares).\n @param cluster All the cluster data."}, "eventSelector": "48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e5", "id": 954, "name": "ValidatorAdded", "nameLocation": "3086:14:2", "nodeType": "EventDefinition", "parameters": {"id": 953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 942, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3117:5:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3101:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 941, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 945, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3133:11:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3124:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 943, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3124:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 944, "nodeType": "ArrayTypeName", "src": "3124:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 947, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3152:9:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3146:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 946, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3146:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 949, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "3169:6:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3163:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3163:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 952, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3185:7:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3177:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 951, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 950, "name": "Cluster", "nameLocations": ["3177:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3177:7:2"}, "referencedDeclaration": 2247, "src": "3177:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3100:93:2"}, "src": "3080:114:2"}, {"anonymous": false, "documentation": {"id": 955, "nodeType": "StructuredDocumentation", "src": "3200:210:2", "text": " @dev Emitted when the validator is removed.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param cluster All the cluster data."}, "eventSelector": "ccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e", "id": 967, "name": "ValidatorRemoved", "nameLocation": "3421:16:2", "nodeType": "EventDefinition", "parameters": {"id": 966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 957, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3454:5:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3438:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 956, "name": "address", "nodeType": "ElementaryTypeName", "src": "3438:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 960, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3470:11:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3461:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 958, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 959, "nodeType": "ArrayTypeName", "src": "3461:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 962, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3489:9:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3483:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 961, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3483:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 965, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3508:7:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3500:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 964, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 963, "name": "Cluster", "nameLocations": ["3500:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3500:7:2"}, "referencedDeclaration": 2247, "src": "3500:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3437:79:2"}, "src": "3415:102:2"}, {"anonymous": false, "eventSelector": "1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e688", "id": 977, "name": "ClusterLiquidated", "nameLocation": "3529:17:2", "nodeType": "EventDefinition", "parameters": {"id": 976, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 969, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3563:5:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3547:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 968, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 972, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3579:11:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3570:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 970, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 971, "nodeType": "ArrayTypeName", "src": "3570:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 975, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3600:7:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3592:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 974, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 973, "name": "Cluster", "nameLocations": ["3592:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3592:7:2"}, "referencedDeclaration": 2247, "src": "3592:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3546:62:2"}, "src": "3523:86:2"}, {"anonymous": false, "eventSelector": "c803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b6859", "id": 987, "name": "ClusterReactivated", "nameLocation": "3621:18:2", "nodeType": "EventDefinition", "parameters": {"id": 986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 979, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3656:5:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3640:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 978, "name": "address", "nodeType": "ElementaryTypeName", "src": "3640:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 982, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3672:11:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3663:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 980, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3663:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 981, "nodeType": "ArrayTypeName", "src": "3663:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 985, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3693:7:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3685:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 984, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 983, "name": "Cluster", "nameLocations": ["3685:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3685:7:2"}, "referencedDeclaration": 2247, "src": "3685:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3639:62:2"}, "src": "3615:87:2"}, {"anonymous": false, "eventSelector": "39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0", "id": 999, "name": "ClusterWithdrawn", "nameLocation": "3714:16:2", "nodeType": "EventDefinition", "parameters": {"id": 998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 989, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3747:5:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3731:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 988, "name": "address", "nodeType": "ElementaryTypeName", "src": "3731:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 992, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3763:11:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3754:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 990, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3754:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 991, "nodeType": "ArrayTypeName", "src": "3754:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 994, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3784:5:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3776:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3776:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 997, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3799:7:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3791:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 996, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 995, "name": "Cluster", "nameLocations": ["3791:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3791:7:2"}, "referencedDeclaration": 2247, "src": "3791:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3730:77:2"}, "src": "3708:100:2"}, {"anonymous": false, "eventSelector": "2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2", "id": 1011, "name": "ClusterDeposited", "nameLocation": "3820:16:2", "nodeType": "EventDefinition", "parameters": {"id": 1010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1001, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3853:5:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3837:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1000, "name": "address", "nodeType": "ElementaryTypeName", "src": "3837:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3869:11:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3860:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1002, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3860:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1003, "nodeType": "ArrayTypeName", "src": "3860:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1006, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3890:5:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3882:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1005, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3882:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1009, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3905:7:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3897:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1008, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1007, "name": "Cluster", "nameLocations": ["3897:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3897:7:2"}, "referencedDeclaration": 2247, "src": "3897:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3836:77:2"}, "src": "3814:100:2"}], "scope": 1013, "src": "103:3813:2", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3872:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [1104], "ISSVNetworkCore": [2308]}, "id": 1105, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1014, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1015, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1105, "sourceUnit": 2309, "src": "70:31:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1016, "name": "ISSVNetworkCore", "nameLocations": ["124:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "124:15:3"}, "id": 1017, "nodeType": "InheritanceSpecifier", "src": "124:15:3"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1104, "linearizedBaseContracts": [1104, 2308], "name": "ISSVDAO", "nameLocation": "113:7:3", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1018, "nodeType": "StructuredDocumentation", "src": "146:90:3", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 1023, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1020, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:3", "nodeType": "VariableDeclaration", "scope": 1023, "src": "267:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:3"}, "returnParameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [], "src": "288:0:3"}, "scope": 1104, "src": "241:48:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1024, "nodeType": "StructuredDocumentation", "src": "295:93:3", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 1029, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1026, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:3", "nodeType": "VariableDeclaration", "scope": 1029, "src": "426:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:3"}, "returnParameters": {"id": 1028, "nodeType": "ParameterList", "parameters": [], "src": "450:0:3"}, "scope": 1104, "src": "393:58:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1030, "nodeType": "StructuredDocumentation", "src": "457:124:3", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 1035, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1033, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:3", "nodeType": "VariableDeclaration", "scope": 1035, "src": "626:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1031, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:3"}, "returnParameters": {"id": 1034, "nodeType": "ParameterList", "parameters": [], "src": "653:0:3"}, "scope": 1104, "src": "586:68:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1036, "nodeType": "StructuredDocumentation", "src": "660:113:3", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 1041, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1038, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:3", "nodeType": "VariableDeclaration", "scope": 1041, "src": "818:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1037, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:3"}, "returnParameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [], "src": "848:0:3"}, "scope": 1104, "src": "778:71:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1042, "nodeType": "StructuredDocumentation", "src": "855:113:3", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 1047, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1045, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1044, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:3", "nodeType": "VariableDeclaration", "scope": 1047, "src": "1013:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1043, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:3"}, "returnParameters": {"id": 1046, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:3"}, "scope": 1104, "src": "973:71:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1048, "nodeType": "StructuredDocumentation", "src": "1050:114:3", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 1053, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1051, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1050, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:3", "nodeType": "VariableDeclaration", "scope": 1053, "src": "1211:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1049, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:3"}, "returnParameters": {"id": 1052, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:3"}, "scope": 1104, "src": "1169:66:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1054, "nodeType": "StructuredDocumentation", "src": "1241:136:3", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 1059, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:3", "nodeType": "VariableDeclaration", "scope": 1059, "src": "1426:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:3"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:3"}, "scope": 1104, "src": "1382:69:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1060, "nodeType": "StructuredDocumentation", "src": "1457:123:3", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 1065, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:3", "nodeType": "VariableDeclaration", "scope": 1065, "src": "1619:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1061, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:3"}, "returnParameters": {"id": 1064, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:3"}, "scope": 1104, "src": "1585:58:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 1069, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:3", "nodeType": "VariableDeclaration", "scope": 1069, "src": "1687:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1066, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:3"}, "src": "1649:52:3"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 1073, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1071, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:3", "nodeType": "VariableDeclaration", "scope": 1073, "src": "1745:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1070, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:3"}, "src": "1707:52:3"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 1077, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1076, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1075, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:3", "nodeType": "VariableDeclaration", "scope": 1077, "src": "1803:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1074, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:3"}, "src": "1765:52:3"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 1081, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:3", "nodeType": "EventDefinition", "parameters": {"id": 1080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1079, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:3", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1863:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1078, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:3"}, "src": "1823:54:3"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 1085, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:3", "nodeType": "EventDefinition", "parameters": {"id": 1084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1083, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:3", "nodeType": "VariableDeclaration", "scope": 1085, "src": "1925:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1082, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:3"}, "src": "1883:57:3"}, {"anonymous": false, "documentation": {"id": 1086, "nodeType": "StructuredDocumentation", "src": "1946:130:3", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 1092, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:3", "nodeType": "EventDefinition", "parameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1088, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:3", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2105:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1087, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1090, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:3", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2121:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:3"}, "src": "2081:56:3"}, {"anonymous": false, "documentation": {"id": 1093, "nodeType": "StructuredDocumentation", "src": "2143:164:3", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 1099, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:3", "nodeType": "EventDefinition", "parameters": {"id": 1098, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1095, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:3", "nodeType": "VariableDeclaration", "scope": 1099, "src": "2343:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1097, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:3", "nodeType": "VariableDeclaration", "scope": 1099, "src": "2358:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1096, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:3"}, "src": "2312:65:3"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 1103, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:3", "nodeType": "EventDefinition", "parameters": {"id": 1102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1101, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:3", "nodeType": "VariableDeclaration", "scope": 1103, "src": "2415:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1100, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:3"}, "src": "2383:47:3"}], "scope": 1105, "src": "103:2329:3", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:2388:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetwork.sol", "exportedSymbols": {"IERC20": [2192], "ISSVClusters": [1012], "ISSVDAO": [1104], "ISSVNetwork": [1181], "ISSVNetworkCore": [2308], "ISSVOperators": [1317], "ISSVViews": [1493], "SSVModules": [1670]}, "id": 1182, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1106, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1107, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2309, "src": "70:31:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "./ISSVOperators.sol", "id": 1108, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1318, "src": "102:29:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "./ISSVClusters.sol", "id": 1109, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1013, "src": "132:28:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "./ISSVDAO.sol", "id": 1110, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1105, "src": "161:23:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVViews.sol", "file": "./ISSVViews.sol", "id": 1111, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1494, "src": "185:25:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 1113, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1741, "src": "212:55:4", "symbolAliases": [{"foreign": {"id": 1112, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "220:10:4", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1114, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2193, "src": "269:56:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetwork", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1181, "linearizedBaseContracts": [1181], "name": "ISSVNetwork", "nameLocation": "337:11:4", "nodeType": "ContractDefinition", "nodes": [{"functionSelector": "c626c3c6", "id": 1144, "implemented": false, "kind": "function", "modifiers": [], "name": "initialize", "nameLocation": "364:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1117, "mutability": "mutable", "name": "token_", "nameLocation": "391:6:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "384:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 1116, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1115, "name": "IERC20", "nameLocations": ["384:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "384:6:4"}, "referencedDeclaration": 2192, "src": "384:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1120, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "421:13:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "407:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 1119, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1118, "name": "ISSVOperators", "nameLocations": ["407:13:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "407:13:4"}, "referencedDeclaration": 1317, "src": "407:13:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 1123, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "457:12:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "444:25:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 1122, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1121, "name": "ISSVClusters", "nameLocations": ["444:12:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "444:12:4"}, "referencedDeclaration": 1012, "src": "444:12:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 1126, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "487:7:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "479:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 1125, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1124, "name": "ISSVDAO", "nameLocations": ["479:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "479:7:4"}, "referencedDeclaration": 1104, "src": "479:7:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 1129, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "514:9:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "504:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 1128, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1127, "name": "ISSVViews", "nameLocations": ["504:9:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "504:9:4"}, "referencedDeclaration": 1493, "src": "504:9:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 1131, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "540:31:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "533:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1130, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "533:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1133, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "589:29:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "581:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "581:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1135, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "635:27:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "628:34:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1134, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "628:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1137, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "679:25:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "672:32:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1136, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "672:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1139, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "721:25:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "714:32:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1138, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "714:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1141, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "763:23:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "756:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1140, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "756:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "374:418:4"}, "returnParameters": {"id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "801:0:4"}, "scope": 1181, "src": "355:447:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "0d8e6e2c", "id": 1149, "implemented": false, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "817:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1145, "nodeType": "ParameterList", "parameters": [], "src": "827:2:4"}, "returnParameters": {"id": 1148, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1147, "mutability": "mutable", "name": "version", "nameLocation": "867:7:4", "nodeType": "VariableDeclaration", "scope": 1149, "src": "853:21:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1146, "name": "string", "nodeType": "ElementaryTypeName", "src": "853:6:4", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "852:23:4"}, "scope": 1181, "src": "808:68:4", "stateMutability": "pure", "virtual": false, "visibility": "external"}, {"functionSelector": "dbcdc2cc", "id": 1154, "implemented": false, "kind": "function", "modifiers": [], "name": "setFeeRecipientAddress", "nameLocation": "891:22:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1151, "mutability": "mutable", "name": "feeRecipientAddress", "nameLocation": "922:19:4", "nodeType": "VariableDeclaration", "scope": 1154, "src": "914:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1150, "name": "address", "nodeType": "ElementaryTypeName", "src": "914:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "913:29:4"}, "returnParameters": {"id": 1153, "nodeType": "ParameterList", "parameters": [], "src": "951:0:4"}, "scope": 1181, "src": "882:70:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "e3e324b0", "id": 1162, "implemented": false, "kind": "function", "modifiers": [], "name": "updateModule", "nameLocation": "967:12:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1160, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1157, "mutability": "mutable", "name": "moduleId", "nameLocation": "991:8:4", "nodeType": "VariableDeclaration", "scope": 1162, "src": "980:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1156, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1155, "name": "SSVModules", "nameLocations": ["980:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "980:10:4"}, "referencedDeclaration": 1670, "src": "980:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1159, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1009:13:4", "nodeType": "VariableDeclaration", "scope": 1162, "src": "1001:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1158, "name": "address", "nodeType": "ElementaryTypeName", "src": "1001:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "979:44:4"}, "returnParameters": {"id": 1161, "nodeType": "ParameterList", "parameters": [], "src": "1032:0:4"}, "scope": 1181, "src": "958:75:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "3ed00469", "id": 1171, "implemented": false, "kind": "function", "modifiers": [], "name": "setRegisterAuth", "nameLocation": "1048:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1169, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1164, "mutability": "mutable", "name": "userAddress", "nameLocation": "1072:11:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1064:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1163, "name": "address", "nodeType": "ElementaryTypeName", "src": "1064:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1166, "mutability": "mutable", "name": "authOperators", "nameLocation": "1090:13:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1085:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1165, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1085:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1168, "mutability": "mutable", "name": "authValidators", "nameLocation": "1110:14:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1105:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1167, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1105:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1063:62:4"}, "returnParameters": {"id": 1170, "nodeType": "ParameterList", "parameters": [], "src": "1134:0:4"}, "scope": 1181, "src": "1039:96:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "7398ca6c", "id": 1180, "implemented": false, "kind": "function", "modifiers": [], "name": "getRegisterAuth", "nameLocation": "1150:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1173, "mutability": "mutable", "name": "userAddress", "nameLocation": "1174:11:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1166:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1172, "name": "address", "nodeType": "ElementaryTypeName", "src": "1166:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1165:21:4"}, "returnParameters": {"id": 1179, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1176, "mutability": "mutable", "name": "authOperators", "nameLocation": "1215:13:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1210:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1210:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1178, "mutability": "mutable", "name": "authValidators", "nameLocation": "1235:14:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1230:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1177, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1230:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1209:41:4"}, "scope": 1181, "src": "1141:110:4", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1182, "src": "327:926:4", "usedErrors": []}], "src": "45:1209:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [2308]}, "id": 2309, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2194, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 2308, "linearizedBaseContracts": [2308], "name": "ISSVNetworkCore", "nameLocation": "80:15:5", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 2204, "members": [{"constant": false, "id": 2197, "mutability": "mutable", "name": "block", "nameLocation": "343:5:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "336:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2196, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2200, "mutability": "mutable", "name": "index", "nameLocation": "461:5:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "454:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2199, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2203, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "587:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:5", "nodeType": "StructDefinition", "scope": 2308, "src": "248:360:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 2221, "members": [{"constant": false, "id": 2207, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "755:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2206, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2210, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "903:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2209, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2213, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "976:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2212, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2216, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "1051:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2215, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2220, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "1129:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2204_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 2219, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2218, "name": "Snapshot", "nameLocations": ["1129:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2204, "src": "1129:8:5"}, "referencedDeclaration": 2204, "src": "1129:8:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2204_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:5", "nodeType": "StructDefinition", "scope": 2308, "src": "657:496:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 2231, "members": [{"constant": false, "id": 2224, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1320:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2227, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1417:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2226, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2230, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1526:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2229, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:5", "nodeType": "StructDefinition", "scope": 2308, "src": "1224:331:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 2247, "members": [{"constant": false, "id": 2234, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1694:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2233, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2237, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1792:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2236, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2240, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1883:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2239, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2243, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1968:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2242, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2246, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "2033:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2245, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:5", "nodeType": "StructDefinition", "scope": 2308, "src": "1612:443:5", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 2249, "name": "CallerNotOwner", "nameLocation": "2119:14:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2248, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:5"}, "src": "2113:23:5"}, {"errorSelector": "8c6e5d71", "id": 2251, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2250, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:5"}, "src": "2155:29:5"}, {"errorSelector": "732f9413", "id": 2253, "name": "FeeTooLow", "nameLocation": "2209:9:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2252, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:5"}, "src": "2203:18:5"}, {"errorSelector": "958065d9", "id": 2255, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2254, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:5"}, "src": "2240:32:5"}, {"errorSelector": "1d226c30", "id": 2257, "name": "NoFeeDeclared", "nameLocation": "2297:13:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2256, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:5"}, "src": "2291:22:5"}, {"errorSelector": "97e4b518", "id": 2259, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2258, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:5"}, "src": "2332:35:5"}, {"errorSelector": "961e3e8c", "id": 2261, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2260, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:5"}, "src": "2386:29:5"}, {"errorSelector": "f4d678b8", "id": 2263, "name": "InsufficientBalance", "nameLocation": "2440:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2262, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:5"}, "src": "2434:28:5"}, {"errorSelector": "8d09a73e", "id": 2265, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2264, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:5"}, "src": "2481:31:5"}, {"errorSelector": "e51315d2", "id": 2267, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2266, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:5"}, "src": "2531:30:5"}, {"errorSelector": "2feda3c1", "id": 2269, "name": "IncorrectValidatorState", "nameLocation": "2586:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:5"}, "src": "2580:32:5"}, {"errorSelector": "60300a8d", "id": 2271, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2270, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:5"}, "src": "2631:31:5"}, {"errorSelector": "637297a4", "id": 2273, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2272, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:5"}, "src": "2681:31:5"}, {"errorSelector": "38186224", "id": 2275, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2274, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:5"}, "src": "2731:33:5"}, {"errorSelector": "3babafd2", "id": 2277, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2276, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:5"}, "src": "2783:30:5"}, {"errorSelector": "95a0cf33", "id": 2279, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2278, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:5"}, "src": "2832:28:5"}, {"errorSelector": "185e2b16", "id": 2281, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2280, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:5"}, "src": "2879:29:5"}, {"errorSelector": "12e04c87", "id": 2283, "name": "IncorrectClusterState", "nameLocation": "2933:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2282, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:5"}, "src": "2927:30:5"}, {"errorSelector": "dd020e25", "id": 2285, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2284, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:5"}, "src": "2976:30:5"}, {"errorSelector": "6e6c9cac", "id": 2287, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2286, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:5"}, "src": "3025:37:5"}, {"errorSelector": "6df5ab76", "id": 2289, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2288, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:5"}, "src": "3081:29:5"}, {"errorSelector": "045c4b02", "id": 2291, "name": "TokenTransferFailed", "nameLocation": "3135:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2290, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:5"}, "src": "3129:28:5"}, {"errorSelector": "c81272f8", "id": 2293, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2292, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:5"}, "src": "3176:32:5"}, {"errorSelector": "410a2b6c", "id": 2295, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2294, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:5"}, "src": "3227:30:5"}, {"errorSelector": "ea8e4eb5", "id": 2297, "name": "NotAuthorized", "nameLocation": "3282:13:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:5"}, "src": "3276:22:5"}, {"errorSelector": "a5a1ff5d", "id": 2299, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:5"}, "src": "3317:31:5"}, {"errorSelector": "289c9494", "id": 2301, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2300, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:5"}, "src": "3367:30:5"}, {"errorSelector": "8f9195fb", "id": 2303, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2302, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:5"}, "src": "3416:33:5"}, {"errorSelector": "91aa3017", "id": 2305, "name": "MaxValueExceeded", "nameLocation": "3474:16:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2304, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:5"}, "src": "3468:25:5"}, {"errorSelector": "cd4e6167", "id": 2307, "name": "FeeTooHigh", "nameLocation": "3518:10:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2306, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:5"}, "src": "3512:19:5"}], "scope": 2309, "src": "70:3477:5", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3503:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [2308], "ISSVOperators": [1317]}, "id": 1318, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1183, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1184, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1318, "sourceUnit": 2309, "src": "70:31:6", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1185, "name": "ISSVNetworkCore", "nameLocations": ["130:15:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "130:15:6"}, "id": 1186, "nodeType": "InheritanceSpecifier", "src": "130:15:6"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1317, "linearizedBaseContracts": [1317, 2308], "name": "ISSVOperators", "nameLocation": "113:13:6", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1187, "nodeType": "StructuredDocumentation", "src": "152:136:6", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1196, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1192, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1189, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:6", "nodeType": "VariableDeclaration", "scope": 1196, "src": "319:24:6", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1188, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1191, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:6", "nodeType": "VariableDeclaration", "scope": 1196, "src": "345:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1190, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:6"}, "returnParameters": {"id": 1195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1194, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1196, "src": "376:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1193, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:6"}, "scope": 1317, "src": "293:91:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1197, "nodeType": "StructuredDocumentation", "src": "390:103:6", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1202, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1200, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1199, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:6", "nodeType": "VariableDeclaration", "scope": 1202, "src": "522:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:6"}, "returnParameters": {"id": 1201, "nodeType": "ParameterList", "parameters": [], "src": "549:0:6"}, "scope": 1317, "src": "498:52:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1203, "nodeType": "StructuredDocumentation", "src": "556:152:6", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1210, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1208, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1205, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:6", "nodeType": "VariableDeclaration", "scope": 1210, "src": "743:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1204, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1207, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:6", "nodeType": "VariableDeclaration", "scope": 1210, "src": "762:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1206, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:6"}, "returnParameters": {"id": 1209, "nodeType": "ParameterList", "parameters": [], "src": "791:0:6"}, "scope": 1317, "src": "713:79:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1211, "nodeType": "StructuredDocumentation", "src": "798:136:6", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1218, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1216, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1213, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:6", "nodeType": "VariableDeclaration", "scope": 1218, "src": "967:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1212, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1215, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:6", "nodeType": "VariableDeclaration", "scope": 1218, "src": "986:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1214, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:6"}, "returnParameters": {"id": 1217, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:6"}, "scope": 1317, "src": "939:69:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1219, "nodeType": "StructuredDocumentation", "src": "1014:88:6", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1224, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1221, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:6", "nodeType": "VariableDeclaration", "scope": 1224, "src": "1135:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1220, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:6"}, "returnParameters": {"id": 1223, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:6"}, "scope": 1317, "src": "1107:56:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1225, "nodeType": "StructuredDocumentation", "src": "1169:96:6", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1230, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1228, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1227, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:6", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1305:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1226, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:6"}, "returnParameters": {"id": 1229, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:6"}, "scope": 1317, "src": "1270:63:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1231, "nodeType": "StructuredDocumentation", "src": "1339:135:6", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1238, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1236, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1233, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "1506:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1232, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1235, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "1525:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1234, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:6"}, "returnParameters": {"id": 1237, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:6"}, "scope": 1317, "src": "1479:68:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1239, "nodeType": "StructuredDocumentation", "src": "1553:154:6", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1246, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1241, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:6", "nodeType": "VariableDeclaration", "scope": 1246, "src": "1746:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1240, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1243, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:6", "nodeType": "VariableDeclaration", "scope": 1246, "src": "1765:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:6"}, "returnParameters": {"id": 1245, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:6"}, "scope": 1317, "src": "1712:83:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1247, "nodeType": "StructuredDocumentation", "src": "1801:92:6", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1252, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1249, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:6", "nodeType": "VariableDeclaration", "scope": 1252, "src": "1935:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:6"}, "returnParameters": {"id": 1251, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:6"}, "scope": 1317, "src": "1898:65:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1253, "nodeType": "StructuredDocumentation", "src": "1969:317:6", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1263, "name": "OperatorAdded", "nameLocation": "2297:13:6", "nodeType": "EventDefinition", "parameters": {"id": 1262, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1255, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2311:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1257, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2338:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1256, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1259, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2361:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1258, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1261, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2378:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:6"}, "src": "2291:100:6"}, {"anonymous": false, "documentation": {"id": 1264, "nodeType": "StructuredDocumentation", "src": "2397:103:6", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1268, "name": "OperatorRemoved", "nameLocation": "2511:15:6", "nodeType": "EventDefinition", "parameters": {"id": 1267, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1266, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:6", "nodeType": "VariableDeclaration", "scope": 1268, "src": "2527:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1265, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:6"}, "src": "2505:49:6"}, {"anonymous": false, "documentation": {"id": 1269, "nodeType": "StructuredDocumentation", "src": "2560:179:6", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1275, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:6", "nodeType": "EventDefinition", "parameters": {"id": 1274, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1271, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:6", "nodeType": "VariableDeclaration", "scope": 1275, "src": "2775:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1270, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1273, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:6", "nodeType": "VariableDeclaration", "scope": 1275, "src": "2802:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1272, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:6"}, "src": "2744:79:6"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1285, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:6", "nodeType": "EventDefinition", "parameters": {"id": 1284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1277, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2854:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1279, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2877:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1278, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1281, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2904:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1283, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2925:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:6"}, "src": "2828:110:6"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1291, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:6", "nodeType": "EventDefinition", "parameters": {"id": 1290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1287, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:6", "nodeType": "VariableDeclaration", "scope": 1291, "src": "2982:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1286, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1289, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:6", "nodeType": "VariableDeclaration", "scope": 1291, "src": "3005:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1288, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:6"}, "src": "2944:88:6"}, {"anonymous": false, "documentation": {"id": 1292, "nodeType": "StructuredDocumentation", "src": "3037:192:6", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1302, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:6", "nodeType": "EventDefinition", "parameters": {"id": 1301, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1294, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3260:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1293, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1296, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3283:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1295, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1298, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3310:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1300, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3331:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:6"}, "src": "3234:110:6"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1310, "name": "OperatorWithdrawn", "nameLocation": "3355:17:6", "nodeType": "EventDefinition", "parameters": {"id": 1309, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1304, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3373:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1303, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1306, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3396:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1305, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1308, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3423:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:6"}, "src": "3349:89:6"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 1316, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:6", "nodeType": "EventDefinition", "parameters": {"id": 1315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1312, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:6", "nodeType": "VariableDeclaration", "scope": 1316, "src": "3476:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1311, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1314, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:6", "nodeType": "VariableDeclaration", "scope": 1316, "src": "3499:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1313, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:6"}, "src": "3443:82:6"}], "scope": 1318, "src": "103:3424:6", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3483:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVViews.sol", "exportedSymbols": {"ISSVNetworkCore": [2308], "ISSVViews": [1493]}, "id": 1494, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1319, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1320, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1494, "sourceUnit": 2309, "src": "70:31:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1321, "name": "ISSVNetworkCore", "nameLocations": ["126:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "126:15:7"}, "id": 1322, "nodeType": "InheritanceSpecifier", "src": "126:15:7"}], "canonicalName": "ISSVViews", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1493, "linearizedBaseContracts": [1493, 2308], "name": "ISSVViews", "nameLocation": "113:9:7", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1323, "nodeType": "StructuredDocumentation", "src": "148:261:7", "text": "@notice Gets the validator status\n @param owner The address of the validator's owner\n @param publicKey The public key of the validator\n @return active A boolean indicating if the validator is active. If it does not exist, returns false."}, "functionSelector": "3e2ec160", "id": 1332, "implemented": false, "kind": "function", "modifiers": [], "name": "getValidator", "nameLocation": "423:12:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1325, "mutability": "mutable", "name": "owner", "nameLocation": "444:5:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "436:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1324, "name": "address", "nodeType": "ElementaryTypeName", "src": "436:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1327, "mutability": "mutable", "name": "publicKey", "nameLocation": "466:9:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "451:24:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1326, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "451:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "435:41:7"}, "returnParameters": {"id": 1331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1330, "mutability": "mutable", "name": "active", "nameLocation": "505:6:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "500:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1329, "name": "bool", "nodeType": "ElementaryTypeName", "src": "500:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "499:13:7"}, "scope": 1493, "src": "414:99:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1333, "nodeType": "StructuredDocumentation", "src": "519:203:7", "text": "@notice Gets the operator fee\n @param operatorId The ID of the operator\n @return fee The fee associated with the operator (SSV). If the operator does not exist, the returned value is 0."}, "functionSelector": "9ad3c745", "id": 1340, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFee", "nameLocation": "736:14:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1335, "mutability": "mutable", "name": "operatorId", "nameLocation": "758:10:7", "nodeType": "VariableDeclaration", "scope": 1340, "src": "751:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "751:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "750:19:7"}, "returnParameters": {"id": 1339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1338, "mutability": "mutable", "name": "fee", "nameLocation": "801:3:7", "nodeType": "VariableDeclaration", "scope": 1340, "src": "793:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "793:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "792:13:7"}, "scope": 1493, "src": "727:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1341, "nodeType": "StructuredDocumentation", "src": "812:373:7", "text": "@notice Gets the declared operator fee\n @param operatorId The ID of the operator\n @return isFeeDeclared A boolean indicating if the fee is declared\n @return fee The declared operator fee (SSV)\n @return approvalBeginTime The time when the fee approval process begins\n @return approvalEndTime The time when the fee approval process ends"}, "functionSelector": "03b3d436", "id": 1354, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorDeclaredFee", "nameLocation": "1199:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1343, "mutability": "mutable", "name": "operatorId", "nameLocation": "1238:10:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1231:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1231:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1221:33:7"}, "returnParameters": {"id": 1353, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1346, "mutability": "mutable", "name": "isFeeDeclared", "nameLocation": "1283:13:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1278:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1345, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1278:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1348, "mutability": "mutable", "name": "fee", "nameLocation": "1306:3:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1298:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1350, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1318:17:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1311:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1349, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1311:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1352, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1344:15:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1337:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1351, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1337:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1277:83:7"}, "scope": 1493, "src": "1190:171:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1355, "nodeType": "StructuredDocumentation", "src": "1367:503:7", "text": "@notice Gets operator details by ID\n @param operatorId The ID of the operator\n @return owner The owner of the operator\n @return fee The fee associated with the operator (SSV)\n @return validatorCount The count of validators associated with the operator\n @return whitelisted The whitelisted address of the operator, if any\n @return isPrivate A boolean indicating if the operator is private\n @return active A boolean indicating if the operator is active"}, "functionSelector": "be3f058e", "id": 1372, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorById", "nameLocation": "1884:15:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1357, "mutability": "mutable", "name": "operatorId", "nameLocation": "1916:10:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1909:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1356, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1909:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1899:33:7"}, "returnParameters": {"id": 1371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1360, "mutability": "mutable", "name": "owner", "nameLocation": "1988:5:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1980:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1359, "name": "address", "nodeType": "ElementaryTypeName", "src": "1980:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1362, "mutability": "mutable", "name": "fee", "nameLocation": "2003:3:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1995:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1361, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1995:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1364, "mutability": "mutable", "name": "validatorCount", "nameLocation": "2015:14:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2008:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1363, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2008:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1366, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2039:11:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2031:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1365, "name": "address", "nodeType": "ElementaryTypeName", "src": "2031:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1368, "mutability": "mutable", "name": "isPrivate", "nameLocation": "2057:9:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2052:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1367, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2052:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1370, "mutability": "mutable", "name": "active", "nameLocation": "2073:6:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2068:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1369, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2068:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1979:101:7"}, "scope": 1493, "src": "1875:206:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1373, "nodeType": "StructuredDocumentation", "src": "2087:257:7", "text": "@notice Checks if the cluster can be liquidated\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return isLiquidatable A boolean indicating if the cluster can be liquidated"}, "functionSelector": "16cff008", "id": 1386, "implemented": false, "kind": "function", "modifiers": [], "name": "isLiquidatable", "nameLocation": "2358:14:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1382, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1375, "mutability": "mutable", "name": "owner", "nameLocation": "2390:5:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2382:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2382:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1378, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2421:11:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2405:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1376, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2405:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1377, "nodeType": "ArrayTypeName", "src": "2405:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1381, "mutability": "mutable", "name": "cluster", "nameLocation": "2457:7:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2442:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1380, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1379, "name": "Cluster", "nameLocations": ["2442:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2442:7:7"}, "referencedDeclaration": 2247, "src": "2442:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2372:98:7"}, "returnParameters": {"id": 1385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1384, "mutability": "mutable", "name": "isLiquidatable", "nameLocation": "2499:14:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2494:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1383, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2494:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2493:21:7"}, "scope": 1493, "src": "2349:166:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1387, "nodeType": "StructuredDocumentation", "src": "2521:247:7", "text": "@notice Checks if the cluster is liquidated\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return isLiquidated A boolean indicating if the cluster is liquidated"}, "functionSelector": "a694695b", "id": 1400, "implemented": false, "kind": "function", "modifiers": [], "name": "isLiquidated", "nameLocation": "2782:12:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1389, "mutability": "mutable", "name": "owner", "nameLocation": "2812:5:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2804:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1388, "name": "address", "nodeType": "ElementaryTypeName", "src": "2804:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1392, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2843:11:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2827:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1390, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2827:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1391, "nodeType": "ArrayTypeName", "src": "2827:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1395, "mutability": "mutable", "name": "cluster", "nameLocation": "2879:7:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2864:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1393, "name": "Cluster", "nameLocations": ["2864:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2864:7:7"}, "referencedDeclaration": 2247, "src": "2864:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2794:98:7"}, "returnParameters": {"id": 1399, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1398, "mutability": "mutable", "name": "isLiquidated", "nameLocation": "2921:12:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2916:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1397, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2916:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2915:19:7"}, "scope": 1493, "src": "2773:162:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1401, "nodeType": "StructuredDocumentation", "src": "2941:226:7", "text": "@notice Gets the burn rate of the cluster\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return burnRate The burn rate of the cluster (SSV)"}, "functionSelector": "ca162e5e", "id": 1414, "implemented": false, "kind": "function", "modifiers": [], "name": "getBurnRate", "nameLocation": "3181:11:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1410, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1403, "mutability": "mutable", "name": "owner", "nameLocation": "3210:5:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3202:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1402, "name": "address", "nodeType": "ElementaryTypeName", "src": "3202:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1406, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3241:11:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3225:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1404, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3225:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1405, "nodeType": "ArrayTypeName", "src": "3225:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1409, "mutability": "mutable", "name": "cluster", "nameLocation": "3277:7:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3262:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1408, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1407, "name": "Cluster", "nameLocations": ["3262:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3262:7:7"}, "referencedDeclaration": 2247, "src": "3262:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3192:98:7"}, "returnParameters": {"id": 1413, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1412, "mutability": "mutable", "name": "burnRate", "nameLocation": "3322:8:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3314:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1411, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3314:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3313:18:7"}, "scope": 1493, "src": "3172:160:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1415, "nodeType": "StructuredDocumentation", "src": "3338:156:7", "text": "@notice Gets operator earnings\n @param operatorId The ID of the operator\n @return earnings The earnings associated with the operator (SSV)"}, "functionSelector": "6d0db0e4", "id": 1422, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorEarnings", "nameLocation": "3508:19:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1417, "mutability": "mutable", "name": "operatorId", "nameLocation": "3535:10:7", "nodeType": "VariableDeclaration", "scope": 1422, "src": "3528:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1416, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3528:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3527:19:7"}, "returnParameters": {"id": 1421, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1420, "mutability": "mutable", "name": "earnings", "nameLocation": "3578:8:7", "nodeType": "VariableDeclaration", "scope": 1422, "src": "3570:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1419, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3570:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3569:18:7"}, "scope": 1493, "src": "3499:89:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1423, "nodeType": "StructuredDocumentation", "src": "3594:221:7", "text": "@notice Gets the balance of the cluster\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return balance The balance of the cluster (SSV)"}, "functionSelector": "eb8ecfa7", "id": 1436, "implemented": false, "kind": "function", "modifiers": [], "name": "getBalance", "nameLocation": "3829:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1432, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1425, "mutability": "mutable", "name": "owner", "nameLocation": "3857:5:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3849:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1424, "name": "address", "nodeType": "ElementaryTypeName", "src": "3849:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1428, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3888:11:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3872:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1426, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3872:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1427, "nodeType": "ArrayTypeName", "src": "3872:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1431, "mutability": "mutable", "name": "cluster", "nameLocation": "3924:7:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3909:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1430, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1429, "name": "Cluster", "nameLocations": ["3909:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3909:7:7"}, "referencedDeclaration": 2247, "src": "3909:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3839:98:7"}, "returnParameters": {"id": 1435, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1434, "mutability": "mutable", "name": "balance", "nameLocation": "3969:7:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3961:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3961:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3960:17:7"}, "scope": 1493, "src": "3820:158:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1437, "nodeType": "StructuredDocumentation", "src": "3984:101:7", "text": "@notice Gets the network fee\n @return networkFee The fee associated with the network (SSV)"}, "functionSelector": "fc043830", "id": 1442, "implemented": false, "kind": "function", "modifiers": [], "name": "getNetworkFee", "nameLocation": "4099:13:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1438, "nodeType": "ParameterList", "parameters": [], "src": "4112:2:7"}, "returnParameters": {"id": 1441, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1440, "mutability": "mutable", "name": "networkFee", "nameLocation": "4146:10:7", "nodeType": "VariableDeclaration", "scope": 1442, "src": "4138:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1439, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4138:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4137:20:7"}, "scope": 1493, "src": "4090:68:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1443, "nodeType": "StructuredDocumentation", "src": "4164:116:7", "text": "@notice Gets the network earnings\n @return networkEarnings The earnings associated with the network (SSV)"}, "functionSelector": "777915cb", "id": 1448, "implemented": false, "kind": "function", "modifiers": [], "name": "getNetworkEarnings", "nameLocation": "4294:18:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1444, "nodeType": "ParameterList", "parameters": [], "src": "4312:2:7"}, "returnParameters": {"id": 1447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1446, "mutability": "mutable", "name": "networkEarnings", "nameLocation": "4346:15:7", "nodeType": "VariableDeclaration", "scope": 1448, "src": "4338:23:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4338:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4337:25:7"}, "scope": 1493, "src": "4285:78:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1449, "nodeType": "StructuredDocumentation", "src": "4369:130:7", "text": "@notice Gets the operator fee increase limit\n @return operatorMaxFeeIncrease The maximum limit of operator fee increase"}, "functionSelector": "68465f7d", "id": 1454, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFeeIncreaseLimit", "nameLocation": "4513:27:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1450, "nodeType": "ParameterList", "parameters": [], "src": "4540:2:7"}, "returnParameters": {"id": 1453, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1452, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "4573:22:7", "nodeType": "VariableDeclaration", "scope": 1454, "src": "4566:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1451, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4566:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4565:31:7"}, "scope": 1493, "src": "4504:93:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1455, "nodeType": "StructuredDocumentation", "src": "4603:133:7", "text": "@notice Gets the operator maximum fee for operators that use SSV token\n @return operatorMaxFee The maximum fee value (SSV)"}, "functionSelector": "df02ef7f", "id": 1460, "implemented": false, "kind": "function", "modifiers": [], "name": "getMaximumOperatorFee", "nameLocation": "4750:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1456, "nodeType": "ParameterList", "parameters": [], "src": "4771:2:7"}, "returnParameters": {"id": 1459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1458, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "4804:14:7", "nodeType": "VariableDeclaration", "scope": 1460, "src": "4797:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1457, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4797:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4796:23:7"}, "scope": 1493, "src": "4741:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1461, "nodeType": "StructuredDocumentation", "src": "4826:228:7", "text": "@notice Gets the periods of operator fee declaration and execution\n @return declareOperatorFeePeriod The period for declaring operator fee\n @return executeOperatorFeePeriod The period for executing operator fee"}, "functionSelector": "e6d2834d", "id": 1468, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFeePeriods", "nameLocation": "5068:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1462, "nodeType": "ParameterList", "parameters": [], "src": "5089:2:7"}, "returnParameters": {"id": 1467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1464, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "5146:24:7", "nodeType": "VariableDeclaration", "scope": 1468, "src": "5139:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1463, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5139:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1466, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "5179:24:7", "nodeType": "VariableDeclaration", "scope": 1468, "src": "5172:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1465, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5172:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5138:66:7"}, "scope": 1493, "src": "5059:146:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1469, "nodeType": "StructuredDocumentation", "src": "5211:130:7", "text": "@notice Gets the liquidation threshold period\n @return blocks The number of blocks for the liquidation threshold period"}, "functionSelector": "9040f7c3", "id": 1474, "implemented": false, "kind": "function", "modifiers": [], "name": "getLiquidationThresholdPeriod", "nameLocation": "5355:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1470, "nodeType": "ParameterList", "parameters": [], "src": "5384:2:7"}, "returnParameters": {"id": 1473, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1472, "mutability": "mutable", "name": "blocks", "nameLocation": "5417:6:7", "nodeType": "VariableDeclaration", "scope": 1474, "src": "5410:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5410:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5409:15:7"}, "scope": 1493, "src": "5346:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1475, "nodeType": "StructuredDocumentation", "src": "5431:129:7", "text": "@notice Gets the minimum liquidation collateral\n @return amount The minimum amount of collateral for liquidation (SSV)"}, "functionSelector": "5ba3d62a", "id": 1480, "implemented": false, "kind": "function", "modifiers": [], "name": "getMinimumLiquidationCollateral", "nameLocation": "5574:31:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1476, "nodeType": "ParameterList", "parameters": [], "src": "5605:2:7"}, "returnParameters": {"id": 1479, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1478, "mutability": "mutable", "name": "amount", "nameLocation": "5639:6:7", "nodeType": "VariableDeclaration", "scope": 1480, "src": "5631:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1477, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5631:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5630:16:7"}, "scope": 1493, "src": "5565:82:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1481, "nodeType": "StructuredDocumentation", "src": "5653:134:7", "text": "@notice Gets the maximum limit of validators per operator\n @return validators The maximum number of validators per operator"}, "functionSelector": "14cb9d7b", "id": 1486, "implemented": false, "kind": "function", "modifiers": [], "name": "getValidatorsPerOperatorLimit", "nameLocation": "5801:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1482, "nodeType": "ParameterList", "parameters": [], "src": "5830:2:7"}, "returnParameters": {"id": 1485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1484, "mutability": "mutable", "name": "validators", "nameLocation": "5863:10:7", "nodeType": "VariableDeclaration", "scope": 1486, "src": "5856:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1483, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "5856:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "5855:19:7"}, "scope": 1493, "src": "5792:83:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1487, "nodeType": "StructuredDocumentation", "src": "5881:96:7", "text": "@notice Gets the version of the contract\n @return version The version of the contract"}, "functionSelector": "0d8e6e2c", "id": 1492, "implemented": false, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "5991:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1488, "nodeType": "ParameterList", "parameters": [], "src": "6001:2:7"}, "returnParameters": {"id": 1491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1490, "mutability": "mutable", "name": "version", "nameLocation": "6041:7:7", "nodeType": "VariableDeclaration", "scope": 1492, "src": "6027:21:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1489, "name": "string", "nodeType": "ElementaryTypeName", "src": "6027:6:7", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6026:23:7"}, "scope": 1493, "src": "5982:68:7", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1494, "src": "103:5949:7", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:6008:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [1624], "Counters": [2382], "IERC20": [2192], "ISSVNetworkCore": [2308], "SSVModules": [1670], "SSVStorage": [1740], "StorageData": [1717]}, "id": 1625, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1495, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1496, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1625, "sourceUnit": 1741, "src": "70:26:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1624, "linearizedBaseContracts": [1624], "name": "CoreLib", "nameLocation": "106:7:8", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 1503, "name": "ModuleUpgraded", "nameLocation": "126:14:8", "nodeType": "EventDefinition", "parameters": {"id": 1502, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1499, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:8", "nodeType": "VariableDeclaration", "scope": 1503, "src": "141:27:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1498, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1497, "name": "SSVModules", "nameLocations": ["141:10:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "141:10:8"}, "referencedDeclaration": 1670, "src": "141:10:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1501, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:8", "nodeType": "VariableDeclaration", "scope": 1503, "src": "170:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1500, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:8"}, "src": "120:73:8"}, {"body": {"id": 1510, "nodeType": "Block", "src": "259:36:8", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 1507, "id": 1509, "nodeType": "Return", "src": "269:19:8"}]}, "id": 1511, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1504, "nodeType": "ParameterList", "parameters": [], "src": "218:2:8"}, "returnParameters": {"id": 1507, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1506, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1511, "src": "244:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1505, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:8"}, "scope": 1624, "src": "199:96:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1534, "nodeType": "Block", "src": "363:136:8", "statements": [{"condition": {"id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:8", "subExpression": {"arguments": [{"id": 1523, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1513, "src": "411:2:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1524, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "415:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1518, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "378:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "378:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:8", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "378:23:8", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:8", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2159, "src": "378:32:8", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1533, "nodeType": "IfStatement", "src": "373:120:8", "trueBody": {"id": 1532, "nodeType": "Block", "src": "424:69:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1527, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "445:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:8", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2291, "src": "445:35:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1531, "nodeType": "RevertStatement", "src": "438:44:8"}]}}]}, "id": 1535, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1516, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1513, "mutability": "mutable", "name": "to", "nameLocation": "334:2:8", "nodeType": "VariableDeclaration", "scope": 1535, "src": "326:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1512, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1515, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:8", "nodeType": "VariableDeclaration", "scope": 1535, "src": "338:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1514, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:8"}, "returnParameters": {"id": 1517, "nodeType": "ParameterList", "parameters": [], "src": "363:0:8"}, "scope": 1624, "src": "301:198:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1561, "nodeType": "Block", "src": "547:163:8", "statements": [{"condition": {"id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:8", "subExpression": {"arguments": [{"expression": {"id": 1545, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 1549, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:8", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$1624", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$1624", "typeString": "library CoreLib"}], "id": 1548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1547, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:8", "typeDescriptions": {}}}, "id": 1550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1551, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1537, "src": "626:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1540, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "562:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "562:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:8", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "562:23:8", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:8", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2191, "src": "562:36:8", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 1552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1560, "nodeType": "IfStatement", "src": "557:147:8", "trueBody": {"id": 1559, "nodeType": "Block", "src": "635:69:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1554, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "656:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:8", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2291, "src": "656:35:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1558, "nodeType": "RevertStatement", "src": "649:44:8"}]}}]}, "id": 1562, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1537, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:8", "nodeType": "VariableDeclaration", "scope": 1562, "src": "522:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:8"}, "returnParameters": {"id": 1539, "nodeType": "ParameterList", "parameters": [], "src": "547:0:8"}, "scope": 1624, "src": "505:205:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1588, "nodeType": "Block", "src": "1352:440:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1570, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1565, "src": "1366:7:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1573, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:8", "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": 1572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:8", "typeDescriptions": {}}}, "id": 1574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1579, "nodeType": "IfStatement", "src": "1362:64:8", "trueBody": {"id": 1578, "nodeType": "Block", "src": "1389:37:8", "statements": [{"expression": {"hexValue": "66616c7365", "id": 1576, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1569, "id": 1577, "nodeType": "Return", "src": "1403:12:8"}]}}, {"assignments": [1581], "declarations": [{"constant": false, "id": 1581, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:8", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1622:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1580, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1582, "nodeType": "VariableDeclarationStatement", "src": "1622:12:8"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:8", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:8", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:8"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:8"}, "nodeType": "YulFunctionCall", "src": "1731:20:8"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:8"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1565, "isOffset": false, "isSlot": false, "src": "1743:7:8", "valueSize": 1}, {"declaration": 1581, "isOffset": false, "isSlot": false, "src": "1723:4:8", "valueSize": 1}], "id": 1583, "nodeType": "InlineAssembly", "src": "1700:61:8"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1584, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "1777:4:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1569, "id": 1587, "nodeType": "Return", "src": "1770:15:8"}]}, "documentation": {"id": 1563, "nodeType": "StructuredDocumentation", "src": "716:565:8", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 1589, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1566, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1565, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:8", "nodeType": "VariableDeclaration", "scope": 1589, "src": "1306:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:8"}, "returnParameters": {"id": 1569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1568, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1589, "src": "1346:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1567, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:8"}, "scope": 1624, "src": "1286:506:8", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1622, "nodeType": "Block", "src": "1879:219:8", "statements": [{"condition": {"id": 1600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:8", "subExpression": {"arguments": [{"id": 1598, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "1905:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1597, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "1894:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1606, "nodeType": "IfStatement", "src": "1889:81:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1601, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "1928:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:8", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2303, "src": "1928:40:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1605, "nodeType": "RevertStatement", "src": "1921:49:8"}}, {"expression": {"id": 1615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1607, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "1981:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "1981:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1611, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:8", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "1981:30:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 1613, "indexExpression": {"id": 1612, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1592, "src": "2012:8:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1614, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "2024:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1616, "nodeType": "ExpressionStatement", "src": "1981:56:8"}, {"eventCall": {"arguments": [{"id": 1618, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1592, "src": "2067:8:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, {"id": 1619, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "2077:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1617, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1503, "src": "2052:14:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1670_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1621, "nodeType": "EmitStatement", "src": "2047:44:8"}]}, "id": 1623, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1592, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:8", "nodeType": "VariableDeclaration", "scope": 1623, "src": "1826:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1591, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1590, "name": "SSVModules", "nameLocations": ["1826:10:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "1826:10:8"}, "referencedDeclaration": 1670, "src": "1826:10:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1594, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:8", "nodeType": "VariableDeclaration", "scope": 1623, "src": "1847:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1593, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:8"}, "returnParameters": {"id": 1596, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:8"}, "scope": 1624, "src": "1799:299:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1625, "src": "98:2002:8", "usedErrors": []}], "src": "45:2056:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol": {"AST": {"absolutePath": "contracts/libraries/RegisterAuth.sol", "exportedSymbols": {"Authorization": [1631], "RegisterAuth": [1660]}, "id": 1661, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1626, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"canonicalName": "Authorization", "id": 1631, "members": [{"constant": false, "id": 1628, "mutability": "mutable", "name": "registerOperator", "nameLocation": "102:16:9", "nodeType": "VariableDeclaration", "scope": 1631, "src": "97:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1627, "name": "bool", "nodeType": "ElementaryTypeName", "src": "97:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1630, "mutability": "mutable", "name": "registerValidator", "nameLocation": "129:17:9", "nodeType": "VariableDeclaration", "scope": 1631, "src": "124:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1629, "name": "bool", "nodeType": "ElementaryTypeName", "src": "124:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Authorization", "nameLocation": "77:13:9", "nodeType": "StructDefinition", "scope": 1661, "src": "70:79:9", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "RegisterAuth", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1660, "linearizedBaseContracts": [1660], "name": "RegisterAuth", "nameLocation": "159:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1641, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "203:20:9", "nodeType": "VariableDeclaration", "scope": 1660, "src": "178:98:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "178:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e61757468", "id": 1636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "244:26:9", "typeDescriptions": {"typeIdentifier": "t_stringliteral_196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb239", "typeString": "literal_string \"ssv.network.storage.auth\""}, "value": "ssv.network.storage.auth"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb239", "typeString": "literal_string \"ssv.network.storage.auth\""}], "id": 1635, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "234:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "234:37:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "226:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1633, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "226:7:9", "typeDescriptions": {}}}, "id": 1638, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "226:46:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "275:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "226:50:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"canonicalName": "RegisterAuth.AuthData", "id": 1647, "members": [{"constant": false, "id": 1646, "mutability": "mutable", "name": "authorization", "nameLocation": "343:13:9", "nodeType": "VariableDeclaration", "scope": 1647, "src": "309:47:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization)"}, "typeName": {"id": 1645, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1642, "name": "address", "nodeType": "ElementaryTypeName", "src": "317:7:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "309:33:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1644, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1643, "name": "Authorization", "nameLocations": ["328:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1631, "src": "328:13:9"}, "referencedDeclaration": 1631, "src": "328:13:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage_ptr", "typeString": "struct Authorization"}}}, "visibility": "internal"}], "name": "AuthData", "nameLocation": "290:8:9", "nodeType": "StructDefinition", "scope": 1660, "src": "283:80:9", "visibility": "public"}, {"body": {"id": 1658, "nodeType": "Block", "src": "429:117:9", "statements": [{"assignments": [1654], "declarations": [{"constant": false, "id": 1654, "mutability": "mutable", "name": "position", "nameLocation": "447:8:9", "nodeType": "VariableDeclaration", "scope": 1658, "src": "439:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1653, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "439:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1656, "initialValue": {"id": 1655, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "458:20:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "439:39:9"}, {"AST": {"nodeType": "YulBlock", "src": "497:43:9", "statements": [{"nodeType": "YulAssignment", "src": "511:19:9", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "522:8:9"}, "variableNames": [{"name": "ad.slot", "nodeType": "YulIdentifier", "src": "511:7:9"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1651, "isOffset": false, "isSlot": true, "src": "511:7:9", "suffix": "slot", "valueSize": 1}, {"declaration": 1654, "isOffset": false, "isSlot": false, "src": "522:8:9", "valueSize": 1}], "id": 1657, "nodeType": "InlineAssembly", "src": "488:52:9"}]}, "id": 1659, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "378:4:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1648, "nodeType": "ParameterList", "parameters": [], "src": "382:2:9"}, "returnParameters": {"id": 1652, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1651, "mutability": "mutable", "name": "ad", "nameLocation": "425:2:9", "nodeType": "VariableDeclaration", "scope": 1659, "src": "408:19:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData"}, "typeName": {"id": 1650, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1649, "name": "AuthData", "nameLocations": ["408:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1647, "src": "408:8:9"}, "referencedDeclaration": 1647, "src": "408:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData"}}, "visibility": "internal"}], "src": "407:21:9"}, "scope": 1660, "src": "369:177:9", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1661, "src": "151:397:9", "usedErrors": []}], "src": "45:504:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2382], "IERC20": [2192], "ISSVNetworkCore": [2308], "SSVModules": [1670], "SSVStorage": [1740], "StorageData": [1717]}, "id": 1741, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1662, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:10"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1663, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2309, "src": "70:43:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1664, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2383, "src": "114:52:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1665, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2193, "src": "167:56:10", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1670, "members": [{"id": 1666, "name": "SSV_OPERATORS", "nameLocation": "247:13:10", "nodeType": "EnumValue", "src": "247:13:10"}, {"id": 1667, "name": "SSV_CLUSTERS", "nameLocation": "266:12:10", "nodeType": "EnumValue", "src": "266:12:10"}, {"id": 1668, "name": "SSV_DAO", "nameLocation": "284:7:10", "nodeType": "EnumValue", "src": "284:7:10"}, {"id": 1669, "name": "SSV_VIEWS", "nameLocation": "297:9:10", "nodeType": "EnumValue", "src": "297:9:10"}], "name": "SSVModules", "nameLocation": "230:10:10", "nodeType": "EnumDefinition", "src": "225:83:10"}, {"canonicalName": "StorageData", "id": 1717, "members": [{"constant": false, "id": 1675, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "599:40:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1674, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1672, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1673, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1680, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "756:36:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1679, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1678, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1685, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "870:39:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1684, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1682, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1691, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "998:43:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1690, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1688, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1687, "name": "SSVModules", "nameLocations": ["1006:10:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "1006:10:10"}, "referencedDeclaration": 1670, "src": "1006:10:10", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1689, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1696, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1159:45:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 1695, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1693, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1694, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1702, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1304:85:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2231_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 1701, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1698, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2231_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1700, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1699, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:10", "1338:24:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2231, "src": "1322:40:10"}, "referencedDeclaration": 2231, "src": "1322:40:10", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2231_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 1708, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1470:53:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2221_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 1707, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1704, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2221_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1706, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1705, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:10", "1504:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2221, "src": "1488:24:10"}, "referencedDeclaration": 2221, "src": "1488:24:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2221_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 1712, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1599:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 1711, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1710, "name": "IERC20", "nameLocations": ["1599:6:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "1599:6:10"}, "referencedDeclaration": 2192, "src": "1599:6:10", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1716, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1686:31:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1715, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1714, "name": "Counters.Counter", "nameLocations": ["1686:8:10", "1695:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1686:16:10"}, "referencedDeclaration": 2314, "src": "1686:16:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:10", "nodeType": "StructDefinition", "scope": 1741, "src": "419:1301:10", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1740, "linearizedBaseContracts": [1740], "name": "SSVStorage", "nameLocation": "1730:10:10", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1727, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:10", "nodeType": "VariableDeclaration", "scope": 1740, "src": "1747:98:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1718, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 1722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 1721, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1723, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1720, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:10", "typeDescriptions": {}}}, "id": 1724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1738, "nodeType": "Block", "src": "1915:117:10", "statements": [{"assignments": [1734], "declarations": [{"constant": false, "id": 1734, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:10", "nodeType": "VariableDeclaration", "scope": 1738, "src": "1925:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1733, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1736, "initialValue": {"id": 1735, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1727, "src": "1944:20:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:10"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:10", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:10", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:10"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:10"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1734, "isOffset": false, "isSlot": false, "src": "2008:8:10", "valueSize": 1}, {"declaration": 1731, "isOffset": false, "isSlot": true, "src": "1997:7:10", "suffix": "slot", "valueSize": 1}], "id": 1737, "nodeType": "InlineAssembly", "src": "1974:52:10"}]}, "id": 1739, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1728, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:10"}, "returnParameters": {"id": 1732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1731, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:10", "nodeType": "VariableDeclaration", "scope": 1739, "src": "1891:22:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1730, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1729, "name": "StorageData", "nameLocations": ["1891:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1717, "src": "1891:11:10"}, "referencedDeclaration": 1717, "src": "1891:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:10"}, "scope": 1740, "src": "1852:180:10", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1741, "src": "1722:312:10", "usedErrors": []}], "src": "45:1990:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1805], "StorageProtocol": [1782]}, "id": 1806, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1742, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:11"}, {"canonicalName": "StorageProtocol", "id": 1782, "members": [{"constant": false, "id": 1745, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "307:33:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1744, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1748, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "406:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1751, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "505:26:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1750, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1754, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "598:33:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "683:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1760, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "758:22:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1763, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "833:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1766, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "945:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1769, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1052:35:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1768, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1772, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1166:31:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1775, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1278:31:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1774, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1778, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1397:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1781, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1504:21:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:11", "nodeType": "StructDefinition", "scope": 1806, "src": "201:1327:11", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1805, "linearizedBaseContracts": [1805], "name": "SSVStorageProtocol", "nameLocation": "1538:18:11", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1792, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:11", "nodeType": "VariableDeclaration", "scope": 1805, "src": "1563:102:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1783, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1791, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1786, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:11", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1784, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:11", "typeDescriptions": {}}}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1803, "nodeType": "Block", "src": "1739:117:11", "statements": [{"assignments": [1799], "declarations": [{"constant": false, "id": 1799, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:11", "nodeType": "VariableDeclaration", "scope": 1803, "src": "1749:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1801, "initialValue": {"id": 1800, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1792, "src": "1768:20:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:11"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:11", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:11", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:11"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:11"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1799, "isOffset": false, "isSlot": false, "src": "1832:8:11", "valueSize": 1}, {"declaration": 1796, "isOffset": false, "isSlot": true, "src": "1821:7:11", "suffix": "slot", "valueSize": 1}], "id": 1802, "nodeType": "InlineAssembly", "src": "1798:52:11"}]}, "id": 1804, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1793, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:11"}, "returnParameters": {"id": 1797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1796, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:11", "nodeType": "VariableDeclaration", "scope": 1804, "src": "1711:26:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1795, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1794, "name": "StorageProtocol", "nameLocations": ["1711:15:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 1782, "src": "1711:15:11"}, "referencedDeclaration": 1782, "src": "1711:15:11", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:11"}, "scope": 1805, "src": "1672:184:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1806, "src": "1530:328:11", "usedErrors": []}], "src": "45:1814:11"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1810], "Types256": [1872], "Types64": [1823]}, "id": 1873, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1807, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:12"}, {"constant": true, "id": 1810, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:12", "nodeType": "VariableDeclaration", "scope": 1873, "src": "70:45:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1808, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:12", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1823, "linearizedBaseContracts": [1823], "name": "Types64", "nameLocation": "126:7:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1821, "nodeType": "Block", "src": "202:47:12", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1817, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1812, "src": "219:5:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1818, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "227:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1816, "id": 1820, "nodeType": "Return", "src": "212:30:12"}]}, "id": 1822, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1813, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1812, "mutability": "mutable", "name": "value", "nameLocation": "163:5:12", "nodeType": "VariableDeclaration", "scope": 1822, "src": "156:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1811, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:12"}, "returnParameters": {"id": 1816, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1815, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1822, "src": "193:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:12"}, "scope": 1823, "src": "140:109:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1873, "src": "118:133:12", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1872, "linearizedBaseContracts": [1872], "name": "Types256", "nameLocation": "261:8:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1851, "nodeType": "Block", "src": "338:144:12", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1831, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1825, "src": "356:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1832, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:12", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:12", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1835, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "376:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1837, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1830, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1841, "nodeType": "ExpressionStatement", "src": "348:67:12"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1848, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1845, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1825, "src": "450:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1844, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "439:10:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1847, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "459:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1843, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1842, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:12", "typeDescriptions": {}}}, "id": 1849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1829, "id": 1850, "nodeType": "Return", "src": "425:50:12"}]}, "id": 1852, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1826, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1825, "mutability": "mutable", "name": "value", "nameLocation": "300:5:12", "nodeType": "VariableDeclaration", "scope": 1852, "src": "292:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1824, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:12"}, "returnParameters": {"id": 1829, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1828, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1852, "src": "330:6:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1827, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:12"}, "scope": 1872, "src": "276:206:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1870, "nodeType": "Block", "src": "555:102:12", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1860, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "573:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1861, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "581:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1867, "nodeType": "ExpressionStatement", "src": "565:63:12"}, {"expression": {"id": 1868, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "645:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1858, "id": 1869, "nodeType": "Return", "src": "638:12:12"}]}, "id": 1871, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1854, "mutability": "mutable", "name": "value", "nameLocation": "516:5:12", "nodeType": "VariableDeclaration", "scope": 1871, "src": "508:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:12"}, "returnParameters": {"id": 1858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1857, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1871, "src": "546:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:12"}, "scope": 1872, "src": "488:169:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1873, "src": "253:406:12", "usedErrors": []}], "src": "45:615:12"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683], "Ownable2StepUpgradeable": [1978], "OwnableUpgradeable": [2514]}, "id": 1979, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1874, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:13"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "./OwnableUpgradeable.sol", "id": 1875, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1979, "sourceUnit": 2515, "src": "132:34:13", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 1876, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1979, "sourceUnit": 2684, "src": "167:42:13", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1878, "name": "Initializable", "nameLocations": ["698:13:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "698:13:13"}, "id": 1879, "nodeType": "InheritanceSpecifier", "src": "698:13:13"}, {"baseName": {"id": 1880, "name": "OwnableUpgradeable", "nameLocations": ["713:18:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2514, "src": "713:18:13"}, "id": 1881, "nodeType": "InheritanceSpecifier", "src": "713:18:13"}], "canonicalName": "Ownable2StepUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1877, "nodeType": "StructuredDocumentation", "src": "211:441:13", "text": " @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."}, "fullyImplemented": true, "id": 1978, "linearizedBaseContracts": [1978, 2514, 3059, 2683], "name": "Ownable2StepUpgradeable", "nameLocation": "671:23:13", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1889, "nodeType": "Block", "src": "795:43:13", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 1886, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "805:24:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 1887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1888, "nodeType": "ExpressionStatement", "src": "805:26:13"}]}, "id": 1890, "implemented": true, "kind": "function", "modifiers": [{"id": 1884, "kind": "modifierInvocation", "modifierName": {"id": 1883, "name": "onlyInitializing", "nameLocations": ["778:16:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "778:16:13"}, "nodeType": "ModifierInvocation", "src": "778:16:13"}], "name": "__Ownable2Step_init", "nameLocation": "747:19:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1882, "nodeType": "ParameterList", "parameters": [], "src": "766:2:13"}, "returnParameters": {"id": 1885, "nodeType": "ParameterList", "parameters": [], "src": "795:0:13"}, "scope": 1978, "src": "738:100:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1895, "nodeType": "Block", "src": "911:7:13", "statements": []}, "id": 1896, "implemented": true, "kind": "function", "modifiers": [{"id": 1893, "kind": "modifierInvocation", "modifierName": {"id": 1892, "name": "onlyInitializing", "nameLocations": ["894:16:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "894:16:13"}, "nodeType": "ModifierInvocation", "src": "894:16:13"}], "name": "__Ownable2Step_init_unchained", "nameLocation": "853:29:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1891, "nodeType": "ParameterList", "parameters": [], "src": "882:2:13"}, "returnParameters": {"id": 1894, "nodeType": "ParameterList", "parameters": [], "src": "911:0:13"}, "scope": 1978, "src": "844:74:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "id": 1898, "mutability": "mutable", "name": "_pendingOwner", "nameLocation": "939:13:13", "nodeType": "VariableDeclaration", "scope": 1978, "src": "923:29:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1897, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700", "id": 1904, "name": "OwnershipTransferStarted", "nameLocation": "965:24:13", "nodeType": "EventDefinition", "parameters": {"id": 1903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1900, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "1006:13:13", "nodeType": "VariableDeclaration", "scope": 1904, "src": "990:29:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1899, "name": "address", "nodeType": "ElementaryTypeName", "src": "990:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1902, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "1037:8:13", "nodeType": "VariableDeclaration", "scope": 1904, "src": "1021:24:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1901, "name": "address", "nodeType": "ElementaryTypeName", "src": "1021:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "989:57:13"}, "src": "959:88:13"}, {"body": {"id": 1912, "nodeType": "Block", "src": "1185:37:13", "statements": [{"expression": {"id": 1910, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1202:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1909, "id": 1911, "nodeType": "Return", "src": "1195:20:13"}]}, "documentation": {"id": 1905, "nodeType": "StructuredDocumentation", "src": "1053:65:13", "text": " @dev Returns the address of the pending owner."}, "functionSelector": "e30c3978", "id": 1913, "implemented": true, "kind": "function", "modifiers": [], "name": "pendingOwner", "nameLocation": "1132:12:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1906, "nodeType": "ParameterList", "parameters": [], "src": "1144:2:13"}, "returnParameters": {"id": 1909, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1908, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1913, "src": "1176:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1907, "name": "address", "nodeType": "ElementaryTypeName", "src": "1176:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1175:9:13"}, "scope": 1978, "src": "1123:99:13", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [2488], "body": {"id": 1932, "nodeType": "Block", "src": "1494:99:13", "statements": [{"expression": {"id": 1924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1922, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1504:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1923, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1916, "src": "1520:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1504:24:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1925, "nodeType": "ExpressionStatement", "src": "1504:24:13"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1927, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2437, "src": "1568:5:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1568:7:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1929, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1916, "src": "1577:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1926, "name": "OwnershipTransferStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1904, "src": "1543:24:13", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1543:43:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1931, "nodeType": "EmitStatement", "src": "1538:48:13"}]}, "documentation": {"id": 1914, "nodeType": "StructuredDocumentation", "src": "1228:182:13", "text": " @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 1933, "implemented": true, "kind": "function", "modifiers": [{"id": 1920, "kind": "modifierInvocation", "modifierName": {"id": 1919, "name": "onlyOwner", "nameLocations": ["1484:9:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "1484:9:13"}, "nodeType": "ModifierInvocation", "src": "1484:9:13"}], "name": "transferOwnership", "nameLocation": "1424:17:13", "nodeType": "FunctionDefinition", "overrides": {"id": 1918, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1475:8:13"}, "parameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1916, "mutability": "mutable", "name": "newOwner", "nameLocation": "1450:8:13", "nodeType": "VariableDeclaration", "scope": 1933, "src": "1442:16:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1915, "name": "address", "nodeType": "ElementaryTypeName", "src": "1442:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1441:18:13"}, "returnParameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "1494:0:13"}, "scope": 1978, "src": "1415:178:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [2508], "body": {"id": 1949, "nodeType": "Block", "src": "1849:81:13", "statements": [{"expression": {"id": 1941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "1859:20:13", "subExpression": {"id": 1940, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1866:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1942, "nodeType": "ExpressionStatement", "src": "1859:20:13"}, {"expression": {"arguments": [{"id": 1946, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1936, "src": "1914:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 1943, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1889:5:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_Ownable2StepUpgradeable_$1978_$", "typeString": "type(contract super Ownable2StepUpgradeable)"}}, "id": 1945, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1895:18:13", "memberName": "_transferOwnership", "nodeType": "MemberAccess", "referencedDeclaration": 2508, "src": "1889:24:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1947, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1889:34:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1948, "nodeType": "ExpressionStatement", "src": "1889:34:13"}]}, "documentation": {"id": 1934, "nodeType": "StructuredDocumentation", "src": "1599:173:13", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."}, "id": 1950, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "1786:18:13", "nodeType": "FunctionDefinition", "overrides": {"id": 1938, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1840:8:13"}, "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1936, "mutability": "mutable", "name": "newOwner", "nameLocation": "1813:8:13", "nodeType": "VariableDeclaration", "scope": 1950, "src": "1805:16:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1935, "name": "address", "nodeType": "ElementaryTypeName", "src": "1805:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1804:18:13"}, "returnParameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "1849:0:13"}, "scope": 1978, "src": "1777:153:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1971, "nodeType": "Block", "src": "2052:170:13", "statements": [{"assignments": [1955], "declarations": [{"constant": false, "id": 1955, "mutability": "mutable", "name": "sender", "nameLocation": "2070:6:13", "nodeType": "VariableDeclaration", "scope": 1971, "src": "2062:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1954, "name": "address", "nodeType": "ElementaryTypeName", "src": "2062:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1958, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 1956, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "2079:10:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2079:12:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2062:29:13"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 1960, "name": "pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1913, "src": "2109:12:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2109:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1962, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2127:6:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2109:24:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572", "id": 1964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2135:43:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc", "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""}, "value": "Ownable2Step: caller is not the new owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc", "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""}], "id": 1959, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2101:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2101:78:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1966, "nodeType": "ExpressionStatement", "src": "2101:78:13"}, {"expression": {"arguments": [{"id": 1968, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2208:6:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1967, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [1950], "referencedDeclaration": 1950, "src": "2189:18:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2189:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1970, "nodeType": "ExpressionStatement", "src": "2189:26:13"}]}, "documentation": {"id": 1951, "nodeType": "StructuredDocumentation", "src": "1936:69:13", "text": " @dev The new owner accepts the ownership transfer."}, "functionSelector": "79ba5097", "id": 1972, "implemented": true, "kind": "function", "modifiers": [], "name": "acceptOwnership", "nameLocation": "2019:15:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1952, "nodeType": "ParameterList", "parameters": [], "src": "2034:2:13"}, "returnParameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [], "src": "2052:0:13"}, "scope": 1978, "src": "2010:212:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"constant": false, "documentation": {"id": 1973, "nodeType": "StructuredDocumentation", "src": "2228:254:13", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1977, "mutability": "mutable", "name": "__gap", "nameLocation": "2507:5:13", "nodeType": "VariableDeclaration", "scope": 1978, "src": "2487:25:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 1974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2487:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1976, "length": {"hexValue": "3439", "id": 1975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2495:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "2487:11:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 1979, "src": "653:1862:13", "usedErrors": []}], "src": "107:2409:13"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683], "OwnableUpgradeable": [2514]}, "id": 2515, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2384, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:14"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../utils/ContextUpgradeable.sol", "id": 2385, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2515, "sourceUnit": 3060, "src": "127:41:14", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 2386, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2515, "sourceUnit": 2684, "src": "169:42:14", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2388, "name": "Initializable", "nameLocations": ["748:13:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "748:13:14"}, "id": 2389, "nodeType": "InheritanceSpecifier", "src": "748:13:14"}, {"baseName": {"id": 2390, "name": "ContextUpgradeable", "nameLocations": ["763:18:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 3059, "src": "763:18:14"}, "id": 2391, "nodeType": "InheritanceSpecifier", "src": "763:18:14"}], "canonicalName": "OwnableUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2387, "nodeType": "StructuredDocumentation", "src": "213:494:14", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 2514, "linearizedBaseContracts": [2514, 3059, 2683], "name": "OwnableUpgradeable", "nameLocation": "726:18:14", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2393, "mutability": "mutable", "name": "_owner", "nameLocation": "804:6:14", "nodeType": "VariableDeclaration", "scope": 2514, "src": "788:22:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2392, "name": "address", "nodeType": "ElementaryTypeName", "src": "788:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 2399, "name": "OwnershipTransferred", "nameLocation": "823:20:14", "nodeType": "EventDefinition", "parameters": {"id": 2398, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2395, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "860:13:14", "nodeType": "VariableDeclaration", "scope": 2399, "src": "844:29:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2394, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2397, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "891:8:14", "nodeType": "VariableDeclaration", "scope": 2399, "src": "875:24:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2396, "name": "address", "nodeType": "ElementaryTypeName", "src": "875:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "843:57:14"}, "src": "817:84:14"}, {"body": {"id": 2408, "nodeType": "Block", "src": "1055:43:14", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2405, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "1065:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 2406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1065:26:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2407, "nodeType": "ExpressionStatement", "src": "1065:26:14"}]}, "documentation": {"id": 2400, "nodeType": "StructuredDocumentation", "src": "907:91:14", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 2409, "implemented": true, "kind": "function", "modifiers": [{"id": 2403, "kind": "modifierInvocation", "modifierName": {"id": 2402, "name": "onlyInitializing", "nameLocations": ["1038:16:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1038:16:14"}, "nodeType": "ModifierInvocation", "src": "1038:16:14"}], "name": "__Ownable_init", "nameLocation": "1012:14:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2401, "nodeType": "ParameterList", "parameters": [], "src": "1026:2:14"}, "returnParameters": {"id": 2404, "nodeType": "ParameterList", "parameters": [], "src": "1055:0:14"}, "scope": 2514, "src": "1003:95:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2419, "nodeType": "Block", "src": "1166:49:14", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2415, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "1195:10:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:12:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2414, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "1176:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1176:32:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2418, "nodeType": "ExpressionStatement", "src": "1176:32:14"}]}, "id": 2420, "implemented": true, "kind": "function", "modifiers": [{"id": 2412, "kind": "modifierInvocation", "modifierName": {"id": 2411, "name": "onlyInitializing", "nameLocations": ["1149:16:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1149:16:14"}, "nodeType": "ModifierInvocation", "src": "1149:16:14"}], "name": "__Ownable_init_unchained", "nameLocation": "1113:24:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2410, "nodeType": "ParameterList", "parameters": [], "src": "1137:2:14"}, "returnParameters": {"id": 2413, "nodeType": "ParameterList", "parameters": [], "src": "1166:0:14"}, "scope": 2514, "src": "1104:111:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2427, "nodeType": "Block", "src": "1324:41:14", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2423, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2451, "src": "1334:11:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1334:13:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2425, "nodeType": "ExpressionStatement", "src": "1334:13:14"}, {"id": 2426, "nodeType": "PlaceholderStatement", "src": "1357:1:14"}]}, "documentation": {"id": 2421, "nodeType": "StructuredDocumentation", "src": "1221:77:14", "text": " @dev Throws if called by any account other than the owner."}, "id": 2428, "name": "onlyOwner", "nameLocation": "1312:9:14", "nodeType": "ModifierDefinition", "parameters": {"id": 2422, "nodeType": "ParameterList", "parameters": [], "src": "1321:2:14"}, "src": "1303:62:14", "virtual": false, "visibility": "internal"}, {"body": {"id": 2436, "nodeType": "Block", "src": "1496:30:14", "statements": [{"expression": {"id": 2434, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "1513:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2433, "id": 2435, "nodeType": "Return", "src": "1506:13:14"}]}, "documentation": {"id": 2429, "nodeType": "StructuredDocumentation", "src": "1371:65:14", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 2437, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1450:5:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2430, "nodeType": "ParameterList", "parameters": [], "src": "1455:2:14"}, "returnParameters": {"id": 2433, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2432, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2437, "src": "1487:7:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2431, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1486:9:14"}, "scope": 2514, "src": "1441:85:14", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 2450, "nodeType": "Block", "src": "1644:85:14", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2442, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2437, "src": "1662:5:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1662:7:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2444, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "1673:10:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1673:12:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1662:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 2447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1687:34:14", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 2441, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1654:7:14", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1654:68:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2449, "nodeType": "ExpressionStatement", "src": "1654:68:14"}]}, "documentation": {"id": 2438, "nodeType": "StructuredDocumentation", "src": "1532:62:14", "text": " @dev Throws if the sender is not the owner."}, "id": 2451, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1608:11:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2439, "nodeType": "ParameterList", "parameters": [], "src": "1619:2:14"}, "returnParameters": {"id": 2440, "nodeType": "ParameterList", "parameters": [], "src": "1644:0:14"}, "scope": 2514, "src": "1599:130:14", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2464, "nodeType": "Block", "src": "2118:47:14", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 2460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2155:1:14", "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": 2459, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2147:7:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2458, "name": "address", "nodeType": "ElementaryTypeName", "src": "2147:7:14", "typeDescriptions": {}}}, "id": 2461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2147:10:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2457, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "2128:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2462, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2128:30:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2463, "nodeType": "ExpressionStatement", "src": "2128:30:14"}]}, "documentation": {"id": 2452, "nodeType": "StructuredDocumentation", "src": "1735:324:14", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 2465, "implemented": true, "kind": "function", "modifiers": [{"id": 2455, "kind": "modifierInvocation", "modifierName": {"id": 2454, "name": "onlyOwner", "nameLocations": ["2108:9:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "2108:9:14"}, "nodeType": "ModifierInvocation", "src": "2108:9:14"}], "name": "renounceOwnership", "nameLocation": "2073:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2453, "nodeType": "ParameterList", "parameters": [], "src": "2090:2:14"}, "returnParameters": {"id": 2456, "nodeType": "ParameterList", "parameters": [], "src": "2118:0:14"}, "scope": 2514, "src": "2064:101:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2487, "nodeType": "Block", "src": "2384:128:14", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2474, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "2402:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2422:1:14", "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": 2476, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2414:7:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2475, "name": "address", "nodeType": "ElementaryTypeName", "src": "2414:7:14", "typeDescriptions": {}}}, "id": 2478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2414:10:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2402:22:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 2480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2426:40:14", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 2473, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2394:7:14", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2394:73:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2482, "nodeType": "ExpressionStatement", "src": "2394:73:14"}, {"expression": {"arguments": [{"id": 2484, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "2496:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2483, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "2477:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2477:28:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2486, "nodeType": "ExpressionStatement", "src": "2477:28:14"}]}, "documentation": {"id": 2466, "nodeType": "StructuredDocumentation", "src": "2171:138:14", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 2488, "implemented": true, "kind": "function", "modifiers": [{"id": 2471, "kind": "modifierInvocation", "modifierName": {"id": 2470, "name": "onlyOwner", "nameLocations": ["2374:9:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "2374:9:14"}, "nodeType": "ModifierInvocation", "src": "2374:9:14"}], "name": "transferOwnership", "nameLocation": "2323:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2468, "mutability": "mutable", "name": "newOwner", "nameLocation": "2349:8:14", "nodeType": "VariableDeclaration", "scope": 2488, "src": "2341:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2467, "name": "address", "nodeType": "ElementaryTypeName", "src": "2341:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2340:18:14"}, "returnParameters": {"id": 2472, "nodeType": "ParameterList", "parameters": [], "src": "2384:0:14"}, "scope": 2514, "src": "2314:198:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2507, "nodeType": "Block", "src": "2729:124:14", "statements": [{"assignments": [2495], "declarations": [{"constant": false, "id": 2495, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2747:8:14", "nodeType": "VariableDeclaration", "scope": 2507, "src": "2739:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2494, "name": "address", "nodeType": "ElementaryTypeName", "src": "2739:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 2497, "initialValue": {"id": 2496, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "2758:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2739:25:14"}, {"expression": {"id": 2500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2498, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "2774:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2499, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2491, "src": "2783:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2774:17:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2501, "nodeType": "ExpressionStatement", "src": "2774:17:14"}, {"eventCall": {"arguments": [{"id": 2503, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2495, "src": "2827:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2504, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2491, "src": "2837:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2502, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2399, "src": "2806:20:14", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2806:40:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2506, "nodeType": "EmitStatement", "src": "2801:45:14"}]}, "documentation": {"id": 2489, "nodeType": "StructuredDocumentation", "src": "2518:143:14", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 2508, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2675:18:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2492, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2491, "mutability": "mutable", "name": "newOwner", "nameLocation": "2702:8:14", "nodeType": "VariableDeclaration", "scope": 2508, "src": "2694:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2490, "name": "address", "nodeType": "ElementaryTypeName", "src": "2694:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2693:18:14"}, "returnParameters": {"id": 2493, "nodeType": "ParameterList", "parameters": [], "src": "2729:0:14"}, "scope": 2514, "src": "2666:187:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2509, "nodeType": "StructuredDocumentation", "src": "2859:254:14", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2513, "mutability": "mutable", "name": "__gap", "nameLocation": "3138:5:14", "nodeType": "VariableDeclaration", "scope": 2514, "src": "3118:25:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 2510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3118:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2512, "length": {"hexValue": "3439", "id": 2511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3126:2:14", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3118:11:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 2515, "src": "708:2438:14", "usedErrors": []}], "src": "102:3045:14"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "exportedSymbols": {"IERC1967Upgradeable": [3410]}, "id": 3411, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3391, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:15"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC1967Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3392, "nodeType": "StructuredDocumentation", "src": "132:133:15", "text": " @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"}, "fullyImplemented": true, "id": 3410, "linearizedBaseContracts": [3410], "name": "IERC1967Upgradeable", "nameLocation": "276:19:15", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 3393, "nodeType": "StructuredDocumentation", "src": "302:68:15", "text": " @dev Emitted when the implementation is upgraded."}, "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", "id": 3397, "name": "Upgraded", "nameLocation": "381:8:15", "nodeType": "EventDefinition", "parameters": {"id": 3396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3395, "indexed": true, "mutability": "mutable", "name": "implementation", "nameLocation": "406:14:15", "nodeType": "VariableDeclaration", "scope": 3397, "src": "390:30:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3394, "name": "address", "nodeType": "ElementaryTypeName", "src": "390:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "389:32:15"}, "src": "375:47:15"}, {"anonymous": false, "documentation": {"id": 3398, "nodeType": "StructuredDocumentation", "src": "428:67:15", "text": " @dev Emitted when the admin account has changed."}, "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", "id": 3404, "name": "AdminChanged", "nameLocation": "506:12:15", "nodeType": "EventDefinition", "parameters": {"id": 3403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3400, "indexed": false, "mutability": "mutable", "name": "previousAdmin", "nameLocation": "527:13:15", "nodeType": "VariableDeclaration", "scope": 3404, "src": "519:21:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3399, "name": "address", "nodeType": "ElementaryTypeName", "src": "519:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3402, "indexed": false, "mutability": "mutable", "name": "newAdmin", "nameLocation": "550:8:15", "nodeType": "VariableDeclaration", "scope": 3404, "src": "542:16:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3401, "name": "address", "nodeType": "ElementaryTypeName", "src": "542:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "518:41:15"}, "src": "500:60:15"}, {"anonymous": false, "documentation": {"id": 3405, "nodeType": "StructuredDocumentation", "src": "566:59:15", "text": " @dev Emitted when the beacon is changed."}, "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", "id": 3409, "name": "BeaconUpgraded", "nameLocation": "636:14:15", "nodeType": "EventDefinition", "parameters": {"id": 3408, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3407, "indexed": true, "mutability": "mutable", "name": "beacon", "nameLocation": "667:6:15", "nodeType": "VariableDeclaration", "scope": 3409, "src": "651:22:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3406, "name": "address", "nodeType": "ElementaryTypeName", "src": "651:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "650:24:15"}, "src": "630:45:15"}], "scope": 3411, "src": "266:411:15", "usedErrors": []}], "src": "107:571:15"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "exportedSymbols": {"IERC1822ProxiableUpgradeable": [2693]}, "id": 2694, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2685, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "113:23:16"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC1822ProxiableUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2686, "nodeType": "StructuredDocumentation", "src": "138:203:16", "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."}, "fullyImplemented": false, "id": 2693, "linearizedBaseContracts": [2693], "name": "IERC1822ProxiableUpgradeable", "nameLocation": "352:28:16", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2687, "nodeType": "StructuredDocumentation", "src": "387:438:16", "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."}, "functionSelector": "52d1902d", "id": 2692, "implemented": false, "kind": "function", "modifiers": [], "name": "proxiableUUID", "nameLocation": "839:13:16", "nodeType": "FunctionDefinition", "parameters": {"id": 2688, "nodeType": "ParameterList", "parameters": [], "src": "852:2:16"}, "returnParameters": {"id": 2691, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2690, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2692, "src": "878:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2689, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:16", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "877:9:16"}, "scope": 2693, "src": "830:57:16", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2694, "src": "342:547:16", "usedErrors": []}], "src": "113:777:16"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "Initializable": [2683], "StorageSlotUpgradeable": [3530]}, "id": 3018, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2695, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "116:23:17"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "file": "../beacon/IBeaconUpgradeable.sol", "id": 2696, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3421, "src": "141:42:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "file": "../../interfaces/IERC1967Upgradeable.sol", "id": 2697, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3411, "src": "184:50:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "file": "../../interfaces/draft-IERC1822Upgradeable.sol", "id": 2698, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 2694, "src": "235:56:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 2699, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3390, "src": "292:44:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "file": "../../utils/StorageSlotUpgradeable.sol", "id": 2700, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3531, "src": "337:48:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../utils/Initializable.sol", "id": 2701, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 2684, "src": "386:36:17", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2703, "name": "Initializable", "nameLocations": ["656:13:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "656:13:17"}, "id": 2704, "nodeType": "InheritanceSpecifier", "src": "656:13:17"}, {"baseName": {"id": 2705, "name": "IERC1967Upgradeable", "nameLocations": ["671:19:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 3410, "src": "671:19:17"}, "id": 2706, "nodeType": "InheritanceSpecifier", "src": "671:19:17"}], "canonicalName": "ERC1967UpgradeUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2702, "nodeType": "StructuredDocumentation", "src": "424:184:17", "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"}, "fullyImplemented": true, "id": 3017, "linearizedBaseContracts": [3017, 3410, 2683], "name": "ERC1967UpgradeUpgradeable", "nameLocation": "627:25:17", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2711, "nodeType": "Block", "src": "756:7:17", "statements": []}, "id": 2712, "implemented": true, "kind": "function", "modifiers": [{"id": 2709, "kind": "modifierInvocation", "modifierName": {"id": 2708, "name": "onlyInitializing", "nameLocations": ["739:16:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "739:16:17"}, "nodeType": "ModifierInvocation", "src": "739:16:17"}], "name": "__ERC1967Upgrade_init", "nameLocation": "706:21:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2707, "nodeType": "ParameterList", "parameters": [], "src": "727:2:17"}, "returnParameters": {"id": 2710, "nodeType": "ParameterList", "parameters": [], "src": "756:0:17"}, "scope": 3017, "src": "697:66:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2717, "nodeType": "Block", "src": "838:7:17", "statements": []}, "id": 2718, "implemented": true, "kind": "function", "modifiers": [{"id": 2715, "kind": "modifierInvocation", "modifierName": {"id": 2714, "name": "onlyInitializing", "nameLocations": ["821:16:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "821:16:17"}, "nodeType": "ModifierInvocation", "src": "821:16:17"}], "name": "__ERC1967Upgrade_init_unchained", "nameLocation": "778:31:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2713, "nodeType": "ParameterList", "parameters": [], "src": "809:2:17"}, "returnParameters": {"id": 2716, "nodeType": "ParameterList", "parameters": [], "src": "838:0:17"}, "scope": 3017, "src": "769:76:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "id": 2721, "mutability": "constant", "name": "_ROLLBACK_SLOT", "nameLocation": "954:14:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "929:108:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2719, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "929:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433", "id": 2720, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "971:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1", "typeString": "int_const 3304...(69 digits omitted)...9347"}, "value": "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"}, "visibility": "private"}, {"constant": true, "documentation": {"id": 2722, "nodeType": "StructuredDocumentation", "src": "1044:214:17", "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."}, "id": 2725, "mutability": "constant", "name": "_IMPLEMENTATION_SLOT", "nameLocation": "1289:20:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "1263:115:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2723, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1263:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", "id": 2724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1312:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", "typeString": "int_const 2444...(69 digits omitted)...5612"}, "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"}, "visibility": "internal"}, {"body": {"id": 2737, "nodeType": "Block", "src": "1519:89:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2733, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "1574:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2731, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "1536:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1559:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "1536:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2734, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1536:59:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2735, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1596:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "1536:65:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2730, "id": 2736, "nodeType": "Return", "src": "1529:72:17"}]}, "documentation": {"id": 2726, "nodeType": "StructuredDocumentation", "src": "1385:67:17", "text": " @dev Returns the current implementation address."}, "id": 2738, "implemented": true, "kind": "function", "modifiers": [], "name": "_getImplementation", "nameLocation": "1466:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2727, "nodeType": "ParameterList", "parameters": [], "src": "1484:2:17"}, "returnParameters": {"id": 2730, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2729, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2738, "src": "1510:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2728, "name": "address", "nodeType": "ElementaryTypeName", "src": "1510:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1509:9:17"}, "scope": 3017, "src": "1457:151:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2761, "nodeType": "Block", "src": "1762:218:17", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2747, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2741, "src": "1810:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2745, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "1780:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1799:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "1780:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2748, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1780:48:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", "id": 2749, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1830:47:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65", "typeString": "literal_string \"ERC1967: new implementation is not a contract\""}, "value": "ERC1967: new implementation is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65", "typeString": "literal_string \"ERC1967: new implementation is not a contract\""}], "id": 2744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1772:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1772:106:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2751, "nodeType": "ExpressionStatement", "src": "1772:106:17"}, {"expression": {"id": 2759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2755, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "1926:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2752, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "1888:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1911:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "1888:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1888:59:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2757, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1948:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "1888:65:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2758, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2741, "src": "1956:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1888:85:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2760, "nodeType": "ExpressionStatement", "src": "1888:85:17"}]}, "documentation": {"id": 2739, "nodeType": "StructuredDocumentation", "src": "1614:80:17", "text": " @dev Stores a new address in the EIP1967 implementation slot."}, "id": 2762, "implemented": true, "kind": "function", "modifiers": [], "name": "_setImplementation", "nameLocation": "1708:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2742, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2741, "mutability": "mutable", "name": "newImplementation", "nameLocation": "1735:17:17", "nodeType": "VariableDeclaration", "scope": 2762, "src": "1727:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2740, "name": "address", "nodeType": "ElementaryTypeName", "src": "1727:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1726:27:17"}, "returnParameters": {"id": 2743, "nodeType": "ParameterList", "parameters": [], "src": "1762:0:17"}, "scope": 3017, "src": "1699:281:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 2776, "nodeType": "Block", "src": "2142:96:17", "statements": [{"expression": {"arguments": [{"id": 2769, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2765, "src": "2171:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2768, "name": "_setImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "2152:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2152:37:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2771, "nodeType": "ExpressionStatement", "src": "2152:37:17"}, {"eventCall": {"arguments": [{"id": 2773, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2765, "src": "2213:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2772, "name": "Upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3397, "src": "2204:8:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2204:27:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2775, "nodeType": "EmitStatement", "src": "2199:32:17"}]}, "documentation": {"id": 2763, "nodeType": "StructuredDocumentation", "src": "1986:95:17", "text": " @dev Perform implementation upgrade\n Emits an {Upgraded} event."}, "id": 2777, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeTo", "nameLocation": "2095:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2766, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2765, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2114:17:17", "nodeType": "VariableDeclaration", "scope": 2777, "src": "2106:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2764, "name": "address", "nodeType": "ElementaryTypeName", "src": "2106:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2105:27:17"}, "returnParameters": {"id": 2767, "nodeType": "ParameterList", "parameters": [], "src": "2142:0:17"}, "scope": 3017, "src": "2086:152:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2806, "nodeType": "Block", "src": "2470:178:17", "statements": [{"expression": {"arguments": [{"id": 2788, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2780, "src": "2491:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2787, "name": "_upgradeTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2777, "src": "2480:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2480:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2790, "nodeType": "ExpressionStatement", "src": "2480:29:17"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2791, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2782, "src": "2523:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2528:6:17", "memberName": "length", "nodeType": "MemberAccess", "src": "2523:11:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2537:1:17", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2523:15:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 2795, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2784, "src": "2542:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2523:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2805, "nodeType": "IfStatement", "src": "2519:123:17", "trueBody": {"id": 2804, "nodeType": "Block", "src": "2553:89:17", "statements": [{"expression": {"arguments": [{"id": 2800, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2780, "src": "2607:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2801, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2782, "src": "2626:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2797, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "2567:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2586:20:17", "memberName": "functionDelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": 3276, "src": "2567:39:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)"}}, "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2567:64:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2803, "nodeType": "ExpressionStatement", "src": "2567:64:17"}]}}]}, "documentation": {"id": 2778, "nodeType": "StructuredDocumentation", "src": "2244:123:17", "text": " @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."}, "id": 2807, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeToAndCall", "nameLocation": "2381:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2785, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2780, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2407:17:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2399:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2779, "name": "address", "nodeType": "ElementaryTypeName", "src": "2399:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2782, "mutability": "mutable", "name": "data", "nameLocation": "2439:4:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2426:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2781, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2426:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2784, "mutability": "mutable", "name": "forceCall", "nameLocation": "2450:9:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2445:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2783, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2445:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2398:62:17"}, "returnParameters": {"id": 2786, "nodeType": "ParameterList", "parameters": [], "src": "2470:0:17"}, "scope": 3017, "src": "2372:276:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2859, "nodeType": "Block", "src": "2922:842:17", "statements": [{"condition": {"expression": {"arguments": [{"id": 2819, "name": "_ROLLBACK_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2721, "src": "3274:14:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2817, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "3236:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3259:14:17", "memberName": "getBooleanSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "3236:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$3429_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}}, "id": 2820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3236:53:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot storage pointer"}}, "id": 2821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3290:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3428, "src": "3236:59:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2857, "nodeType": "Block", "src": "3365:393:17", "statements": [{"clauses": [{"block": {"id": 2842, "nodeType": "Block", "src": "3470:115:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 2838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2836, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2833, "src": "3496:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2837, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "3504:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3496:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944", "id": 2839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3526:43:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c", "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}, "value": "ERC1967Upgrade: unsupported proxiableUUID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c", "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}], "id": 2835, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3488:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3488:82:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2841, "nodeType": "ExpressionStatement", "src": "3488:82:17"}]}, "errorName": "", "id": 2843, "nodeType": "TryCatchClause", "parameters": {"id": 2834, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2833, "mutability": "mutable", "name": "slot", "nameLocation": "3464:4:17", "nodeType": "VariableDeclaration", "scope": 2843, "src": "3456:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2832, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3456:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3455:14:17"}, "src": "3447:138:17"}, {"block": {"id": 2848, "nodeType": "Block", "src": "3592:89:17", "statements": [{"expression": {"arguments": [{"hexValue": "45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053", "id": 2845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:48:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24", "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}, "value": "ERC1967Upgrade: new implementation is not UUPS"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24", "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}], "id": 2844, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "3610:6:17", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 2846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3610:56:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2847, "nodeType": "ExpressionStatement", "src": "3610:56:17"}]}, "errorName": "", "id": 2849, "nodeType": "TryCatchClause", "src": "3586:95:17"}], "externalCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 2828, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3412:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2827, "name": "IERC1822ProxiableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2693, "src": "3383:28:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC1822ProxiableUpgradeable_$2693_$", "typeString": "type(contract IERC1822ProxiableUpgradeable)"}}, "id": 2829, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3383:47:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC1822ProxiableUpgradeable_$2693", "typeString": "contract IERC1822ProxiableUpgradeable"}}, "id": 2830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3431:13:17", "memberName": "proxiableUUID", "nodeType": "MemberAccess", "referencedDeclaration": 2692, "src": "3383:61:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)"}}, "id": 2831, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3383:63:17", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 2850, "nodeType": "TryStatement", "src": "3379:302:17"}, {"expression": {"arguments": [{"id": 2852, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3712:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2853, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2812, "src": "3731:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2854, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2814, "src": "3737:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2851, "name": "_upgradeToAndCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "3694:17:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3694:53:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2856, "nodeType": "ExpressionStatement", "src": "3694:53:17"}]}, "id": 2858, "nodeType": "IfStatement", "src": "3232:526:17", "trueBody": {"id": 2826, "nodeType": "Block", "src": "3297:62:17", "statements": [{"expression": {"arguments": [{"id": 2823, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3330:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2822, "name": "_setImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "3311:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2824, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3311:37:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2825, "nodeType": "ExpressionStatement", "src": "3311:37:17"}]}}]}, "documentation": {"id": 2808, "nodeType": "StructuredDocumentation", "src": "2654:161:17", "text": " @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."}, "id": 2860, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeToAndCallUUPS", "nameLocation": "2829:21:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2815, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2810, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2859:17:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2851:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2809, "name": "address", "nodeType": "ElementaryTypeName", "src": "2851:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2812, "mutability": "mutable", "name": "data", "nameLocation": "2891:4:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2878:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2811, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2878:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2814, "mutability": "mutable", "name": "forceCall", "nameLocation": "2902:9:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2897:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2813, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2897:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2850:62:17"}, "returnParameters": {"id": 2816, "nodeType": "ParameterList", "parameters": [], "src": "2922:0:17"}, "scope": 3017, "src": "2820:944:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "documentation": {"id": 2861, "nodeType": "StructuredDocumentation", "src": "3770:189:17", "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."}, "id": 2864, "mutability": "constant", "name": "_ADMIN_SLOT", "nameLocation": "3990:11:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "3964:106:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2862, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3964:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", "id": 2863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4004:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", "typeString": "int_const 8195...(69 digits omitted)...7091"}, "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"}, "visibility": "internal"}, {"body": {"id": 2876, "nodeType": "Block", "src": "4185:80:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2872, "name": "_ADMIN_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "4240:11:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2870, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "4202:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4225:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "4202:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2873, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4202:50:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2874, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4253:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "4202:56:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2869, "id": 2875, "nodeType": "Return", "src": "4195:63:17"}]}, "documentation": {"id": 2865, "nodeType": "StructuredDocumentation", "src": "4077:50:17", "text": " @dev Returns the current admin."}, "id": 2877, "implemented": true, "kind": "function", "modifiers": [], "name": "_getAdmin", "nameLocation": "4141:9:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2866, "nodeType": "ParameterList", "parameters": [], "src": "4150:2:17"}, "returnParameters": {"id": 2869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2868, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2877, "src": "4176:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2867, "name": "address", "nodeType": "ElementaryTypeName", "src": "4176:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4175:9:17"}, "scope": 3017, "src": "4132:133:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2902, "nodeType": "Block", "src": "4392:167:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2884, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2880, "src": "4410:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4430:1:17", "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": 2886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4422:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2885, "name": "address", "nodeType": "ElementaryTypeName", "src": "4422:7:17", "typeDescriptions": {}}}, "id": 2888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4422:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4410:22:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", "id": 2890, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4434:40:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5", "typeString": "literal_string \"ERC1967: new admin is the zero address\""}, "value": "ERC1967: new admin is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5", "typeString": "literal_string \"ERC1967: new admin is the zero address\""}], "id": 2883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4402:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4402:73:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2892, "nodeType": "ExpressionStatement", "src": "4402:73:17"}, {"expression": {"id": 2900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2896, "name": "_ADMIN_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "4523:11:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2893, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "4485:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4508:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "4485:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4485:50:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4536:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "4485:56:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2899, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2880, "src": "4544:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4485:67:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2901, "nodeType": "ExpressionStatement", "src": "4485:67:17"}]}, "documentation": {"id": 2878, "nodeType": "StructuredDocumentation", "src": "4271:71:17", "text": " @dev Stores a new address in the EIP1967 admin slot."}, "id": 2903, "implemented": true, "kind": "function", "modifiers": [], "name": "_setAdmin", "nameLocation": "4356:9:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2881, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2880, "mutability": "mutable", "name": "newAdmin", "nameLocation": "4374:8:17", "nodeType": "VariableDeclaration", "scope": 2903, "src": "4366:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2879, "name": "address", "nodeType": "ElementaryTypeName", "src": "4366:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4365:18:17"}, "returnParameters": {"id": 2882, "nodeType": "ParameterList", "parameters": [], "src": "4392:0:17"}, "scope": 3017, "src": "4347:212:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 2919, "nodeType": "Block", "src": "4719:86:17", "statements": [{"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2910, "name": "_getAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "4747:9:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4747:11:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2912, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2906, "src": "4760:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2909, "name": "AdminChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3404, "src": "4734:12:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2913, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4734:35:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2914, "nodeType": "EmitStatement", "src": "4729:40:17"}, {"expression": {"arguments": [{"id": 2916, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2906, "src": "4789:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2915, "name": "_setAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2903, "src": "4779:9:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4779:19:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2918, "nodeType": "ExpressionStatement", "src": "4779:19:17"}]}, "documentation": {"id": 2904, "nodeType": "StructuredDocumentation", "src": "4565:100:17", "text": " @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."}, "id": 2920, "implemented": true, "kind": "function", "modifiers": [], "name": "_changeAdmin", "nameLocation": "4679:12:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2907, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2906, "mutability": "mutable", "name": "newAdmin", "nameLocation": "4700:8:17", "nodeType": "VariableDeclaration", "scope": 2920, "src": "4692:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2905, "name": "address", "nodeType": "ElementaryTypeName", "src": "4692:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4691:18:17"}, "returnParameters": {"id": 2908, "nodeType": "ParameterList", "parameters": [], "src": "4719:0:17"}, "scope": 3017, "src": "4670:135:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "documentation": {"id": 2921, "nodeType": "StructuredDocumentation", "src": "4811:232:17", "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."}, "id": 2924, "mutability": "constant", "name": "_BEACON_SLOT", "nameLocation": "5074:12:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "5048:107:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2922, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5048:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", "id": 2923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5089:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", "typeString": "int_const 7415...(69 digits omitted)...4704"}, "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"}, "visibility": "internal"}, {"body": {"id": 2936, "nodeType": "Block", "src": "5272:81:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2932, "name": "_BEACON_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2924, "src": "5327:12:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2930, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "5289:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5312:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "5289:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2933, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5289:51:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2934, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5341:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "5289:57:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2929, "id": 2935, "nodeType": "Return", "src": "5282:64:17"}]}, "documentation": {"id": 2925, "nodeType": "StructuredDocumentation", "src": "5162:51:17", "text": " @dev Returns the current beacon."}, "id": 2937, "implemented": true, "kind": "function", "modifiers": [], "name": "_getBeacon", "nameLocation": "5227:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2926, "nodeType": "ParameterList", "parameters": [], "src": "5237:2:17"}, "returnParameters": {"id": 2929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2928, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2937, "src": "5263:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2927, "name": "address", "nodeType": "ElementaryTypeName", "src": "5263:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5262:9:17"}, "scope": 3017, "src": "5218:135:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2972, "nodeType": "Block", "src": "5482:368:17", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2946, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5530:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2944, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "5500:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2945, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5519:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "5500:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2947, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5500:40:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", "id": 2948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5542:39:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470", "typeString": "literal_string \"ERC1967: new beacon is not a contract\""}, "value": "ERC1967: new beacon is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470", "typeString": "literal_string \"ERC1967: new beacon is not a contract\""}], "id": 2943, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5492:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:90:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2950, "nodeType": "ExpressionStatement", "src": "5492:90:17"}, {"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 2955, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5662:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2954, "name": "IBeaconUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3420, "src": "5643:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$3420_$", "typeString": "type(contract IBeaconUpgradeable)"}}, "id": 2956, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5643:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IBeaconUpgradeable_$3420", "typeString": "contract IBeaconUpgradeable"}}, "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5673:14:17", "memberName": "implementation", "nodeType": "MemberAccess", "referencedDeclaration": 3419, "src": "5643:44:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)"}}, "id": 2958, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5643:46:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2952, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "5613:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5632:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "5613:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5613:77:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", "id": 2960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5704:50:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8", "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""}, "value": "ERC1967: beacon implementation is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8", "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""}], "id": 2951, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5592:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5592:172:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2962, "nodeType": "ExpressionStatement", "src": "5592:172:17"}, {"expression": {"id": 2970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2966, "name": "_BEACON_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2924, "src": "5812:12:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2963, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "5774:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5797:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "5774:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5774:51:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2968, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5826:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "5774:57:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2969, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5834:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "5774:69:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2971, "nodeType": "ExpressionStatement", "src": "5774:69:17"}]}, "documentation": {"id": 2938, "nodeType": "StructuredDocumentation", "src": "5359:71:17", "text": " @dev Stores a new beacon in the EIP1967 beacon slot."}, "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "_setBeacon", "nameLocation": "5444:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2940, "mutability": "mutable", "name": "newBeacon", "nameLocation": "5463:9:17", "nodeType": "VariableDeclaration", "scope": 2973, "src": "5455:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2939, "name": "address", "nodeType": "ElementaryTypeName", "src": "5455:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5454:19:17"}, "returnParameters": {"id": 2942, "nodeType": "ParameterList", "parameters": [], "src": "5482:0:17"}, "scope": 3017, "src": "5435:415:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 3010, "nodeType": "Block", "src": "6249:239:17", "statements": [{"expression": {"arguments": [{"id": 2984, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6270:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2983, "name": "_setBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2973, "src": "6259:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2985, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6259:21:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2986, "nodeType": "ExpressionStatement", "src": "6259:21:17"}, {"eventCall": {"arguments": [{"id": 2988, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6310:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2987, "name": "BeaconUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3409, "src": "6295:14:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6295:25:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2990, "nodeType": "EmitStatement", "src": "6290:30:17"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2991, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2978, "src": "6334:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6339:6:17", "memberName": "length", "nodeType": "MemberAccess", "src": "6334:11:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6348:1:17", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6334:15:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 2995, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2980, "src": "6353:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6334:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3009, "nodeType": "IfStatement", "src": "6330:152:17", "trueBody": {"id": 3008, "nodeType": "Block", "src": "6364:118:17", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 3001, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6437:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 3000, "name": "IBeaconUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3420, "src": "6418:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$3420_$", "typeString": "type(contract IBeaconUpgradeable)"}}, "id": 3002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6418:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IBeaconUpgradeable_$3420", "typeString": "contract IBeaconUpgradeable"}}, "id": 3003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6448:14:17", "memberName": "implementation", "nodeType": "MemberAccess", "referencedDeclaration": 3419, "src": "6418:44:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)"}}, "id": 3004, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6418:46:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3005, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2978, "src": "6466:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2997, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "6378:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2999, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6397:20:17", "memberName": "functionDelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": 3276, "src": "6378:39:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)"}}, "id": 3006, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6378:93:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3007, "nodeType": "ExpressionStatement", "src": "6378:93:17"}]}}]}, "documentation": {"id": 2974, "nodeType": "StructuredDocumentation", "src": "5856:292:17", "text": " @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."}, "id": 3011, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeBeaconToAndCall", "nameLocation": "6162:23:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "newBeacon", "nameLocation": "6194:9:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6186:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2975, "name": "address", "nodeType": "ElementaryTypeName", "src": "6186:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2978, "mutability": "mutable", "name": "data", "nameLocation": "6218:4:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6205:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2977, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6205:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2980, "mutability": "mutable", "name": "forceCall", "nameLocation": "6229:9:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6224:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2979, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6224:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6185:54:17"}, "returnParameters": {"id": 2982, "nodeType": "ParameterList", "parameters": [], "src": "6249:0:17"}, "scope": 3017, "src": "6153:335:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 3012, "nodeType": "StructuredDocumentation", "src": "6494:254:17", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 3016, "mutability": "mutable", "name": "__gap", "nameLocation": "6773:5:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "6753:25:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 3013, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6753:7:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3015, "length": {"hexValue": "3530", "id": 3014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6761:2:17", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "6753:11:17", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 3018, "src": "609:6172:17", "usedErrors": []}], "src": "116:6666:17"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "exportedSymbols": {"IBeaconUpgradeable": [3420]}, "id": 3421, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3412, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "93:23:18"}, {"abstract": false, "baseContracts": [], "canonicalName": "IBeaconUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3413, "nodeType": "StructuredDocumentation", "src": "118:79:18", "text": " @dev This is the interface that {BeaconProxy} expects of its beacon."}, "fullyImplemented": false, "id": 3420, "linearizedBaseContracts": [3420], "name": "IBeaconUpgradeable", "nameLocation": "208:18:18", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 3414, "nodeType": "StructuredDocumentation", "src": "233:162:18", "text": " @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."}, "functionSelector": "5c60da1b", "id": 3419, "implemented": false, "kind": "function", "modifiers": [], "name": "implementation", "nameLocation": "409:14:18", "nodeType": "FunctionDefinition", "parameters": {"id": 3415, "nodeType": "ParameterList", "parameters": [], "src": "423:2:18"}, "returnParameters": {"id": 3418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3417, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3419, "src": "449:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3416, "name": "address", "nodeType": "ElementaryTypeName", "src": "449:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "448:9:18"}, "scope": 3420, "src": "400:58:18", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 3421, "src": "198:262:18", "usedErrors": []}], "src": "93:368:18"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "Initializable": [2683]}, "id": 2684, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2516, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "113:23:19"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 2517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 3390, "src": "138:44:19", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "Initializable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2518, "nodeType": "StructuredDocumentation", "src": "184:2209:19", "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="}, "fullyImplemented": true, "id": 2683, "linearizedBaseContracts": [2683], "name": "Initializable", "nameLocation": "2412:13:19", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 2519, "nodeType": "StructuredDocumentation", "src": "2432:109:19", "text": " @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"}, "id": 2521, "mutability": "mutable", "name": "_initialized", "nameLocation": "2560:12:19", "nodeType": "VariableDeclaration", "scope": 2683, "src": "2546:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2520, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2546:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "private"}, {"constant": false, "documentation": {"id": 2522, "nodeType": "StructuredDocumentation", "src": "2579:91:19", "text": " @dev Indicates that the contract is in the process of being initialized."}, "id": 2524, "mutability": "mutable", "name": "_initializing", "nameLocation": "2688:13:19", "nodeType": "VariableDeclaration", "scope": 2683, "src": "2675:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2523, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2675:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"anonymous": false, "documentation": {"id": 2525, "nodeType": "StructuredDocumentation", "src": "2708:90:19", "text": " @dev Triggered when the contract has been initialized or reinitialized."}, "eventSelector": "7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498", "id": 2529, "name": "Initialized", "nameLocation": "2809:11:19", "nodeType": "EventDefinition", "parameters": {"id": 2528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2527, "indexed": false, "mutability": "mutable", "name": "version", "nameLocation": "2827:7:19", "nodeType": "VariableDeclaration", "scope": 2529, "src": "2821:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2526, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2821:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "2820:15:19"}, "src": "2803:33:19"}, {"body": {"id": 2584, "nodeType": "Block", "src": "3269:483:19", "statements": [{"assignments": [2533], "declarations": [{"constant": false, "id": 2533, "mutability": "mutable", "name": "isTopLevelCall", "nameLocation": "3284:14:19", "nodeType": "VariableDeclaration", "scope": 2584, "src": "3279:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2532, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3279:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 2536, "initialValue": {"id": 2535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3301:14:19", "subExpression": {"id": 2534, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3302:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3279:36:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2538, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3347:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2539, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3365:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "31", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3380:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3365:16:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3347:34:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 2543, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3346:36:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3387:45:19", "subExpression": {"arguments": [{"arguments": [{"id": 2548, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3426:4:19", "typeDescriptions": {"typeIdentifier": "t_contract$_Initializable_$2683", "typeString": "contract Initializable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Initializable_$2683", "typeString": "contract Initializable"}], "id": 2547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3418:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2546, "name": "address", "nodeType": "ElementaryTypeName", "src": "3418:7:19", "typeDescriptions": {}}}, "id": 2549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3418:13:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2544, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "3388:18:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3407:10:19", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "3388:29:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3388:44:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2552, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3436:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "31", "id": 2553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3452:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3436:17:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3387:66:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 2556, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3386:68:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3346:108:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 2558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3468:48:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 2537, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3325:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3325:201:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2560, "nodeType": "ExpressionStatement", "src": "3325:201:19"}, {"expression": {"id": 2563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2561, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3536:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31", "id": 2562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3551:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3536:16:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2564, "nodeType": "ExpressionStatement", "src": "3536:16:19"}, {"condition": {"id": 2565, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3566:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2571, "nodeType": "IfStatement", "src": "3562:65:19", "trueBody": {"id": 2570, "nodeType": "Block", "src": "3582:45:19", "statements": [{"expression": {"id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2566, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3596:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 2567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3612:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3596:20:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2569, "nodeType": "ExpressionStatement", "src": "3596:20:19"}]}}, {"id": 2572, "nodeType": "PlaceholderStatement", "src": "3636:1:19"}, {"condition": {"id": 2573, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3651:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2583, "nodeType": "IfStatement", "src": "3647:99:19", "trueBody": {"id": 2582, "nodeType": "Block", "src": "3667:79:19", "statements": [{"expression": {"id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2574, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3681:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 2575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3697:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "3681:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2577, "nodeType": "ExpressionStatement", "src": "3681:21:19"}, {"eventCall": {"arguments": [{"hexValue": "31", "id": 2579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3733:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 2578, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "3721:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3721:14:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2581, "nodeType": "EmitStatement", "src": "3716:19:19"}]}}]}, "documentation": {"id": 2530, "nodeType": "StructuredDocumentation", "src": "2842:399:19", "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."}, "id": 2585, "name": "initializer", "nameLocation": "3255:11:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2531, "nodeType": "ParameterList", "parameters": [], "src": "3266:2:19"}, "src": "3246:506:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2617, "nodeType": "Block", "src": "4863:255:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4881:14:19", "subExpression": {"id": 2591, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "4882:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2593, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "4899:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2594, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "4914:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4899:22:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4881:40:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 2597, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4923:48:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 2590, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4873:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2598, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4873:99:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2599, "nodeType": "ExpressionStatement", "src": "4873:99:19"}, {"expression": {"id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2600, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "4982:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2601, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "4997:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4982:22:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "4982:22:19"}, {"expression": {"id": 2606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2604, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5014:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 2605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5030:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "5014:20:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2607, "nodeType": "ExpressionStatement", "src": "5014:20:19"}, {"id": 2608, "nodeType": "PlaceholderStatement", "src": "5044:1:19"}, {"expression": {"id": 2611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2609, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5055:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 2610, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5071:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "5055:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2612, "nodeType": "ExpressionStatement", "src": "5055:21:19"}, {"eventCall": {"arguments": [{"id": 2614, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "5103:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2613, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "5091:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5091:20:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2616, "nodeType": "EmitStatement", "src": "5086:25:19"}]}, "documentation": {"id": 2586, "nodeType": "StructuredDocumentation", "src": "3758:1062:19", "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."}, "id": 2618, "name": "reinitializer", "nameLocation": "4834:13:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2589, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2588, "mutability": "mutable", "name": "version", "nameLocation": "4854:7:19", "nodeType": "VariableDeclaration", "scope": 2618, "src": "4848:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2587, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4848:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "4847:15:19"}, "src": "4825:293:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2627, "nodeType": "Block", "src": "5356:97:19", "statements": [{"expression": {"arguments": [{"id": 2622, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5374:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67", "id": 2623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5389:45:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}, "value": "Initializable: contract is not initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}], "id": 2621, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5366:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5366:69:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2625, "nodeType": "ExpressionStatement", "src": "5366:69:19"}, {"id": 2626, "nodeType": "PlaceholderStatement", "src": "5445:1:19"}]}, "documentation": {"id": 2619, "nodeType": "StructuredDocumentation", "src": "5124:199:19", "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."}, "id": 2628, "name": "onlyInitializing", "nameLocation": "5337:16:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2620, "nodeType": "ParameterList", "parameters": [], "src": "5353:2:19"}, "src": "5328:125:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2663, "nodeType": "Block", "src": "5988:231:19", "statements": [{"expression": {"arguments": [{"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6006:14:19", "subExpression": {"id": 2633, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "6007:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67", "id": 2635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6022:41:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}, "value": "Initializable: contract is initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}], "id": 2632, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5998:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5998:66:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2637, "nodeType": "ExpressionStatement", "src": "5998:66:19"}, {"condition": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2638, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6078:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"arguments": [{"id": 2641, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6099:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2640, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6099:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2639, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6094:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6094:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2643, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6106:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6094:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "6078:31:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2662, "nodeType": "IfStatement", "src": "6074:139:19", "trueBody": {"id": 2661, "nodeType": "Block", "src": "6111:102:19", "statements": [{"expression": {"id": 2651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2645, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6125:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"arguments": [{"id": 2648, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6145:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2647, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6145:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2646, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6140:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2649, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6140:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6152:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6140:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "6125:30:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2652, "nodeType": "ExpressionStatement", "src": "6125:30:19"}, {"eventCall": {"arguments": [{"expression": {"arguments": [{"id": 2656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6191:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2655, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6191:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2654, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6186:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6186:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2658, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6198:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6186:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2653, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "6174:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6174:28:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2660, "nodeType": "EmitStatement", "src": "6169:33:19"}]}}]}, "documentation": {"id": 2629, "nodeType": "StructuredDocumentation", "src": "5459:475:19", "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."}, "id": 2664, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableInitializers", "nameLocation": "5948:20:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2630, "nodeType": "ParameterList", "parameters": [], "src": "5968:2:19"}, "returnParameters": {"id": 2631, "nodeType": "ParameterList", "parameters": [], "src": "5988:0:19"}, "scope": 2683, "src": "5939:280:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 2672, "nodeType": "Block", "src": "6393:36:19", "statements": [{"expression": {"id": 2670, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6410:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "functionReturnParameters": 2669, "id": 2671, "nodeType": "Return", "src": "6403:19:19"}]}, "documentation": {"id": 2665, "nodeType": "StructuredDocumentation", "src": "6225:99:19", "text": " @dev Returns the highest version that has been initialized. See {reinitializer}."}, "id": 2673, "implemented": true, "kind": "function", "modifiers": [], "name": "_getInitializedVersion", "nameLocation": "6338:22:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2666, "nodeType": "ParameterList", "parameters": [], "src": "6360:2:19"}, "returnParameters": {"id": 2669, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2668, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2673, "src": "6386:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2667, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6386:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "6385:7:19"}, "scope": 2683, "src": "6329:100:19", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2681, "nodeType": "Block", "src": "6601:37:19", "statements": [{"expression": {"id": 2679, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "6618:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2678, "id": 2680, "nodeType": "Return", "src": "6611:20:19"}]}, "documentation": {"id": 2674, "nodeType": "StructuredDocumentation", "src": "6435:105:19", "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."}, "id": 2682, "implemented": true, "kind": "function", "modifiers": [], "name": "_isInitializing", "nameLocation": "6554:15:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2675, "nodeType": "ParameterList", "parameters": [], "src": "6569:2:19"}, "returnParameters": {"id": 2678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2677, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2682, "src": "6595:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2676, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6595:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6594:6:19"}, "scope": 2683, "src": "6545:93:19", "stateMutability": "view", "virtual": false, "visibility": "internal"}], "scope": 2684, "src": "2394:4246:19", "usedErrors": []}], "src": "113:6528:19"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "Initializable": [2683], "StorageSlotUpgradeable": [3530], "UUPSUpgradeable": [2114]}, "id": 2115, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1980, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "115:23:20"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "file": "../../interfaces/draft-IERC1822Upgradeable.sol", "id": 1981, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 2694, "src": "140:56:20", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "file": "../ERC1967/ERC1967UpgradeUpgradeable.sol", "id": 1982, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 3018, "src": "197:50:20", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "./Initializable.sol", "id": 1983, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 2684, "src": "248:29:20", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1985, "name": "Initializable", "nameLocations": ["965:13:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "965:13:20"}, "id": 1986, "nodeType": "InheritanceSpecifier", "src": "965:13:20"}, {"baseName": {"id": 1987, "name": "IERC1822ProxiableUpgradeable", "nameLocations": ["980:28:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2693, "src": "980:28:20"}, "id": 1988, "nodeType": "InheritanceSpecifier", "src": "980:28:20"}, {"baseName": {"id": 1989, "name": "ERC1967UpgradeUpgradeable", "nameLocations": ["1010:25:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 3017, "src": "1010:25:20"}, "id": 1990, "nodeType": "InheritanceSpecifier", "src": "1010:25:20"}], "canonicalName": "UUPSUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1984, "nodeType": "StructuredDocumentation", "src": "279:648:20", "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"}, "fullyImplemented": false, "id": 2114, "linearizedBaseContracts": [2114, 3017, 3410, 2693, 2683], "name": "UUPSUpgradeable", "nameLocation": "946:15:20", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1995, "nodeType": "Block", "src": "1102:7:20", "statements": []}, "id": 1996, "implemented": true, "kind": "function", "modifiers": [{"id": 1993, "kind": "modifierInvocation", "modifierName": {"id": 1992, "name": "onlyInitializing", "nameLocations": ["1085:16:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1085:16:20"}, "nodeType": "ModifierInvocation", "src": "1085:16:20"}], "name": "__UUPSUpgradeable_init", "nameLocation": "1051:22:20", "nodeType": "FunctionDefinition", "parameters": {"id": 1991, "nodeType": "ParameterList", "parameters": [], "src": "1073:2:20"}, "returnParameters": {"id": 1994, "nodeType": "ParameterList", "parameters": [], "src": "1102:0:20"}, "scope": 2114, "src": "1042:67:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2001, "nodeType": "Block", "src": "1185:7:20", "statements": []}, "id": 2002, "implemented": true, "kind": "function", "modifiers": [{"id": 1999, "kind": "modifierInvocation", "modifierName": {"id": 1998, "name": "onlyInitializing", "nameLocations": ["1168:16:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1168:16:20"}, "nodeType": "ModifierInvocation", "src": "1168:16:20"}], "name": "__UUPSUpgradeable_init_unchained", "nameLocation": "1124:32:20", "nodeType": "FunctionDefinition", "parameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [], "src": "1156:2:20"}, "returnParameters": {"id": 2000, "nodeType": "ParameterList", "parameters": [], "src": "1185:0:20"}, "scope": 2114, "src": "1115:77:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2003, "nodeType": "StructuredDocumentation", "src": "1197:87:20", "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"}, "id": 2009, "mutability": "immutable", "name": "__self", "nameLocation": "1315:6:20", "nodeType": "VariableDeclaration", "scope": 2114, "src": "1289:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2004, "name": "address", "nodeType": "ElementaryTypeName", "src": "1289:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": {"arguments": [{"id": 2007, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1332:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1324:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2005, "name": "address", "nodeType": "ElementaryTypeName", "src": "1324:7:20", "typeDescriptions": {}}}, "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1324:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"body": {"id": 2031, "nodeType": "Block", "src": "1863:205:20", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2015, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1889:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2014, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1881:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2013, "name": "address", "nodeType": "ElementaryTypeName", "src": "1881:7:20", "typeDescriptions": {}}}, "id": 2016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1881:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 2017, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "1898:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1881:23:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c", "id": 2019, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1906:46:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb", "typeString": "literal_string \"Function must be called through delegatecall\""}, "value": "Function must be called through delegatecall"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb", "typeString": "literal_string \"Function must be called through delegatecall\""}], "id": 2012, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1873:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1873:80:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2021, "nodeType": "ExpressionStatement", "src": "1873:80:20"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2023, "name": "_getImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2738, "src": "1971:18:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1971:20:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2025, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "1995:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1971:30:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879", "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2003:46:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434", "typeString": "literal_string \"Function must be called through active proxy\""}, "value": "Function must be called through active proxy"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434", "typeString": "literal_string \"Function must be called through active proxy\""}], "id": 2022, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1963:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1963:87:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2029, "nodeType": "ExpressionStatement", "src": "1963:87:20"}, {"id": 2030, "nodeType": "PlaceholderStatement", "src": "2060:1:20"}]}, "documentation": {"id": 2010, "nodeType": "StructuredDocumentation", "src": "1344:493:20", "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."}, "id": 2032, "name": "onlyProxy", "nameLocation": "1851:9:20", "nodeType": "ModifierDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [], "src": "1860:2:20"}, "src": "1842:226:20", "virtual": false, "visibility": "internal"}, {"body": {"id": 2046, "nodeType": "Block", "src": "2298:120:20", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2038, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2324:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2037, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2316:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2036, "name": "address", "nodeType": "ElementaryTypeName", "src": "2316:7:20", "typeDescriptions": {}}}, "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2316:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2040, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "2333:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2316:23:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c", "id": 2042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2341:58:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4", "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}, "value": "UUPSUpgradeable: must not be called through delegatecall"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4", "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}], "id": 2035, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2308:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2043, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2308:92:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2044, "nodeType": "ExpressionStatement", "src": "2308:92:20"}, {"id": 2045, "nodeType": "PlaceholderStatement", "src": "2410:1:20"}]}, "documentation": {"id": 2033, "nodeType": "StructuredDocumentation", "src": "2074:195:20", "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."}, "id": 2047, "name": "notDelegated", "nameLocation": "2283:12:20", "nodeType": "ModifierDefinition", "parameters": {"id": 2034, "nodeType": "ParameterList", "parameters": [], "src": "2295:2:20"}, "src": "2274:144:20", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2692], "body": {"id": 2058, "nodeType": "Block", "src": "3093:44:20", "statements": [{"expression": {"id": 2056, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "3110:20:20", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 2055, "id": 2057, "nodeType": "Return", "src": "3103:27:20"}]}, "documentation": {"id": 2048, "nodeType": "StructuredDocumentation", "src": "2424:577:20", "text": " @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."}, "functionSelector": "52d1902d", "id": 2059, "implemented": true, "kind": "function", "modifiers": [{"id": 2052, "kind": "modifierInvocation", "modifierName": {"id": 2051, "name": "notDelegated", "nameLocations": ["3062:12:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2047, "src": "3062:12:20"}, "nodeType": "ModifierInvocation", "src": "3062:12:20"}], "name": "proxiableUUID", "nameLocation": "3015:13:20", "nodeType": "FunctionDefinition", "overrides": {"id": 2050, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3053:8:20"}, "parameters": {"id": 2049, "nodeType": "ParameterList", "parameters": [], "src": "3028:2:20"}, "returnParameters": {"id": 2055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2054, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2059, "src": "3084:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2053, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3084:7:20", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3083:9:20"}, "scope": 2114, "src": "3006:131:20", "stateMutability": "view", "virtual": true, "visibility": "external"}, {"body": {"id": 2080, "nodeType": "Block", "src": "3458:124:20", "statements": [{"expression": {"arguments": [{"id": 2068, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2062, "src": "3486:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2067, "name": "_authorizeUpgrade", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2108, "src": "3468:17:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3468:36:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2070, "nodeType": "ExpressionStatement", "src": "3468:36:20"}, {"expression": {"arguments": [{"id": 2072, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2062, "src": "3536:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 2075, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:20", "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": 2074, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "3555:9:20", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2073, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3559:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3555:12:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "66616c7365", "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3569:5:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2071, "name": "_upgradeToAndCallUUPS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2860, "src": "3514:21:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3514:61:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2079, "nodeType": "ExpressionStatement", "src": "3514:61:20"}]}, "documentation": {"id": 2060, "nodeType": "StructuredDocumentation", "src": "3143:239:20", "text": " @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"}, "functionSelector": "3659cfe6", "id": 2081, "implemented": true, "kind": "function", "modifiers": [{"id": 2065, "kind": "modifierInvocation", "modifierName": {"id": 2064, "name": "onlyProxy", "nameLocations": ["3448:9:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "3448:9:20"}, "nodeType": "ModifierInvocation", "src": "3448:9:20"}], "name": "upgradeTo", "nameLocation": "3396:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2062, "mutability": "mutable", "name": "newImplementation", "nameLocation": "3414:17:20", "nodeType": "VariableDeclaration", "scope": 2081, "src": "3406:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2061, "name": "address", "nodeType": "ElementaryTypeName", "src": "3406:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3405:27:20"}, "returnParameters": {"id": 2066, "nodeType": "ParameterList", "parameters": [], "src": "3458:0:20"}, "scope": 2114, "src": "3387:195:20", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2101, "nodeType": "Block", "src": "4006:115:20", "statements": [{"expression": {"arguments": [{"id": 2092, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2084, "src": "4034:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2091, "name": "_authorizeUpgrade", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2108, "src": "4016:17:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2093, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4016:36:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2094, "nodeType": "ExpressionStatement", "src": "4016:36:20"}, {"expression": {"arguments": [{"id": 2096, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2084, "src": "4084:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2097, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2086, "src": "4103:4:20", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "74727565", "id": 2098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4109:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2095, "name": "_upgradeToAndCallUUPS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2860, "src": "4062:21:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4062:52:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2100, "nodeType": "ExpressionStatement", "src": "4062:52:20"}]}, "documentation": {"id": 2082, "nodeType": "StructuredDocumentation", "src": "3588:308:20", "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"}, "functionSelector": "4f1ef286", "id": 2102, "implemented": true, "kind": "function", "modifiers": [{"id": 2089, "kind": "modifierInvocation", "modifierName": {"id": 2088, "name": "onlyProxy", "nameLocations": ["3996:9:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "3996:9:20"}, "nodeType": "ModifierInvocation", "src": "3996:9:20"}], "name": "upgradeToAndCall", "nameLocation": "3910:16:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2084, "mutability": "mutable", "name": "newImplementation", "nameLocation": "3935:17:20", "nodeType": "VariableDeclaration", "scope": 2102, "src": "3927:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2083, "name": "address", "nodeType": "ElementaryTypeName", "src": "3927:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2086, "mutability": "mutable", "name": "data", "nameLocation": "3967:4:20", "nodeType": "VariableDeclaration", "scope": 2102, "src": "3954:17:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2085, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3954:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3926:46:20"}, "returnParameters": {"id": 2090, "nodeType": "ParameterList", "parameters": [], "src": "4006:0:20"}, "scope": 2114, "src": "3901:220:20", "stateMutability": "payable", "virtual": true, "visibility": "public"}, {"documentation": {"id": 2103, "nodeType": "StructuredDocumentation", "src": "4127:397:20", "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"}, "id": 2108, "implemented": false, "kind": "function", "modifiers": [], "name": "_authorizeUpgrade", "nameLocation": "4538:17:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2106, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2105, "mutability": "mutable", "name": "newImplementation", "nameLocation": "4564:17:20", "nodeType": "VariableDeclaration", "scope": 2108, "src": "4556:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2104, "name": "address", "nodeType": "ElementaryTypeName", "src": "4556:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4555:27:20"}, "returnParameters": {"id": 2107, "nodeType": "ParameterList", "parameters": [], "src": "4599:0:20"}, "scope": 2114, "src": "4529:71:20", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2109, "nodeType": "StructuredDocumentation", "src": "4606:254:20", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2113, "mutability": "mutable", "name": "__gap", "nameLocation": "4885:5:20", "nodeType": "VariableDeclaration", "scope": 2114, "src": "4865:25:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4865:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2112, "length": {"hexValue": "3530", "id": 2111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4873:2:20", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "4865:11:20", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2115, "src": "928:3965:20", "usedErrors": []}], "src": "115:4779:20"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389]}, "id": 3390, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3061, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:21"}, {"abstract": false, "baseContracts": [], "canonicalName": "AddressUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 3062, "nodeType": "StructuredDocumentation", "src": "126:67:21", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 3389, "linearizedBaseContracts": [3389], "name": "AddressUpgradeable", "nameLocation": "202:18:21", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3076, "nodeType": "Block", "src": "1489:254:21", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 3070, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3065, "src": "1713:7:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1721:4:21", "memberName": "code", "nodeType": "MemberAccess", "src": "1713:12:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1726:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "1713:19:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3073, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1735:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1713:23:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3069, "id": 3075, "nodeType": "Return", "src": "1706:30:21"}]}, "documentation": {"id": 3063, "nodeType": "StructuredDocumentation", "src": "227:1191:21", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 3077, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1432:10:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3066, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3065, "mutability": "mutable", "name": "account", "nameLocation": "1451:7:21", "nodeType": "VariableDeclaration", "scope": 3077, "src": "1443:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3064, "name": "address", "nodeType": "ElementaryTypeName", "src": "1443:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1442:17:21"}, "returnParameters": {"id": 3069, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3068, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3077, "src": "1483:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3067, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1483:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1482:6:21"}, "scope": 3389, "src": "1423:320:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3110, "nodeType": "Block", "src": "2729:241:21", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3088, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2755:4:21", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}], "id": 3087, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2747:7:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3086, "name": "address", "nodeType": "ElementaryTypeName", "src": "2747:7:21", "typeDescriptions": {}}}, "id": 3089, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2747:13:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2761:7:21", "memberName": "balance", "nodeType": "MemberAccess", "src": "2747:21:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3091, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3082, "src": "2772:6:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2747:31:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 3093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2780:31:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 3085, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2739:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3094, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2739:73:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3095, "nodeType": "ExpressionStatement", "src": "2739:73:21"}, {"assignments": [3097, null], "declarations": [{"constant": false, "id": 3097, "mutability": "mutable", "name": "success", "nameLocation": "2829:7:21", "nodeType": "VariableDeclaration", "scope": 3110, "src": "2824:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3096, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2824:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 3104, "initialValue": {"arguments": [{"hexValue": "", "id": 3102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2872:2:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "expression": {"id": 3098, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3080, "src": "2842:9:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 3099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2852:4:21", "memberName": "call", "nodeType": "MemberAccess", "src": "2842:14:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 3100, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3082, "src": "2864:6:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2842:29:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2842:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2823:52:21"}, {"expression": {"arguments": [{"id": 3106, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3097, "src": "2893:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 3107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2902:60:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 3105, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2885:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2885:78:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3109, "nodeType": "ExpressionStatement", "src": "2885:78:21"}]}, "documentation": {"id": 3078, "nodeType": "StructuredDocumentation", "src": "1749:904:21", "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 3111, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2667:9:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3083, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3080, "mutability": "mutable", "name": "recipient", "nameLocation": "2693:9:21", "nodeType": "VariableDeclaration", "scope": 3111, "src": "2677:25:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 3079, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:15:21", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 3082, "mutability": "mutable", "name": "amount", "nameLocation": "2712:6:21", "nodeType": "VariableDeclaration", "scope": 3111, "src": "2704:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2704:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2676:43:21"}, "returnParameters": {"id": 3084, "nodeType": "ParameterList", "parameters": [], "src": "2729:0:21"}, "scope": 3389, "src": "2658:312:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3128, "nodeType": "Block", "src": "3801:96:21", "statements": [{"expression": {"arguments": [{"id": 3122, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3114, "src": "3840:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3123, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3116, "src": "3848:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 3124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3854:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 3125, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3857:32:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 3121, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "3818:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3818:72:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3120, "id": 3127, "nodeType": "Return", "src": "3811:79:21"}]}, "documentation": {"id": 3112, "nodeType": "StructuredDocumentation", "src": "2976:731:21", "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"}, "id": 3129, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3721:12:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3117, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3114, "mutability": "mutable", "name": "target", "nameLocation": "3742:6:21", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3734:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3113, "name": "address", "nodeType": "ElementaryTypeName", "src": "3734:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3116, "mutability": "mutable", "name": "data", "nameLocation": "3763:4:21", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3750:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3115, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3750:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3733:35:21"}, "returnParameters": {"id": 3120, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3119, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3787:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3118, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3787:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3786:14:21"}, "scope": 3389, "src": "3712:185:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3148, "nodeType": "Block", "src": "4266:76:21", "statements": [{"expression": {"arguments": [{"id": 3142, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3132, "src": "4305:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3143, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3134, "src": "4313:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 3144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4319:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 3145, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3136, "src": "4322:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3141, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "4283:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4283:52:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3140, "id": 3147, "nodeType": "Return", "src": "4276:59:21"}]}, "documentation": {"id": 3130, "nodeType": "StructuredDocumentation", "src": "3903:211:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 3149, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "4128:12:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3137, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3132, "mutability": "mutable", "name": "target", "nameLocation": "4158:6:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4150:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3131, "name": "address", "nodeType": "ElementaryTypeName", "src": "4150:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3134, "mutability": "mutable", "name": "data", "nameLocation": "4187:4:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4174:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3133, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4174:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3136, "mutability": "mutable", "name": "errorMessage", "nameLocation": "4215:12:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4201:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3135, "name": "string", "nodeType": "ElementaryTypeName", "src": "4201:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4140:93:21"}, "returnParameters": {"id": 3140, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3139, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4252:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3138, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4252:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4251:14:21"}, "scope": 3389, "src": "4119:223:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3168, "nodeType": "Block", "src": "4817:111:21", "statements": [{"expression": {"arguments": [{"id": 3162, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3152, "src": "4856:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3163, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3154, "src": "4864:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3164, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3156, "src": "4870:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 3165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4877:43:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 3161, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "4834:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4834:87:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3160, "id": 3167, "nodeType": "Return", "src": "4827:94:21"}]}, "documentation": {"id": 3150, "nodeType": "StructuredDocumentation", "src": "4348:351:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"}, "id": 3169, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4713:21:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3152, "mutability": "mutable", "name": "target", "nameLocation": "4743:6:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4735:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3151, "name": "address", "nodeType": "ElementaryTypeName", "src": "4735:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3154, "mutability": "mutable", "name": "data", "nameLocation": "4764:4:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4751:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3153, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4751:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3156, "mutability": "mutable", "name": "value", "nameLocation": "4778:5:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4770:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3155, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4770:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4734:50:21"}, "returnParameters": {"id": 3160, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3159, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4803:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3158, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4803:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4802:14:21"}, "scope": 3389, "src": "4704:224:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3212, "nodeType": "Block", "src": "5355:267:21", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3186, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5381:4:21", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}], "id": 3185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5373:7:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3184, "name": "address", "nodeType": "ElementaryTypeName", "src": "5373:7:21", "typeDescriptions": {}}}, "id": 3187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5373:13:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5387:7:21", "memberName": "balance", "nodeType": "MemberAccess", "src": "5373:21:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3189, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "5398:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5373:30:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 3191, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5405:40:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 3183, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5365:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5365:81:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3193, "nodeType": "ExpressionStatement", "src": "5365:81:21"}, {"assignments": [3195, 3197], "declarations": [{"constant": false, "id": 3195, "mutability": "mutable", "name": "success", "nameLocation": "5462:7:21", "nodeType": "VariableDeclaration", "scope": 3212, "src": "5457:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3194, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5457:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3197, "mutability": "mutable", "name": "returndata", "nameLocation": "5484:10:21", "nodeType": "VariableDeclaration", "scope": 3212, "src": "5471:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3196, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5471:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3204, "initialValue": {"arguments": [{"id": 3202, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3174, "src": "5524:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3198, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3172, "src": "5498:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5505:4:21", "memberName": "call", "nodeType": "MemberAccess", "src": "5498:11:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 3200, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "5517:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5498:25:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3203, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5498:31:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5456:73:21"}, {"expression": {"arguments": [{"id": 3206, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3172, "src": "5573:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3207, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "5581:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3208, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3197, "src": "5590:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3209, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3178, "src": "5602:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3205, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "5546:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5546:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3182, "id": 3211, "nodeType": "Return", "src": "5539:76:21"}]}, "documentation": {"id": 3170, "nodeType": "StructuredDocumentation", "src": "4934:237:21", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 3213, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "5185:21:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3179, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3172, "mutability": "mutable", "name": "target", "nameLocation": "5224:6:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5216:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3171, "name": "address", "nodeType": "ElementaryTypeName", "src": "5216:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3174, "mutability": "mutable", "name": "data", "nameLocation": "5253:4:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5240:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3173, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5240:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3176, "mutability": "mutable", "name": "value", "nameLocation": "5275:5:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5267:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3175, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5267:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3178, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5304:12:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5290:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3177, "name": "string", "nodeType": "ElementaryTypeName", "src": "5290:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "5206:116:21"}, "returnParameters": {"id": 3182, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3181, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5341:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3180, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5341:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5340:14:21"}, "scope": 3389, "src": "5176:446:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3229, "nodeType": "Block", "src": "5899:97:21", "statements": [{"expression": {"arguments": [{"id": 3224, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3216, "src": "5935:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3225, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3218, "src": "5943:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 3226, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5949:39:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 3223, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [3230, 3259], "referencedDeclaration": 3259, "src": "5916:18:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5916:73:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3222, "id": 3228, "nodeType": "Return", "src": "5909:80:21"}]}, "documentation": {"id": 3214, "nodeType": "StructuredDocumentation", "src": "5628:166:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 3230, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5808:18:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3219, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3216, "mutability": "mutable", "name": "target", "nameLocation": "5835:6:21", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5827:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3215, "name": "address", "nodeType": "ElementaryTypeName", "src": "5827:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3218, "mutability": "mutable", "name": "data", "nameLocation": "5856:4:21", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5843:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3217, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5843:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5826:35:21"}, "returnParameters": {"id": 3222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3221, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5885:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3220, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5885:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5884:14:21"}, "scope": 3389, "src": "5799:197:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3258, "nodeType": "Block", "src": "6338:168:21", "statements": [{"assignments": [3243, 3245], "declarations": [{"constant": false, "id": 3243, "mutability": "mutable", "name": "success", "nameLocation": "6354:7:21", "nodeType": "VariableDeclaration", "scope": 3258, "src": "6349:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3242, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6349:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3245, "mutability": "mutable", "name": "returndata", "nameLocation": "6376:10:21", "nodeType": "VariableDeclaration", "scope": 3258, "src": "6363:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6363:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3250, "initialValue": {"arguments": [{"id": 3248, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "6408:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3246, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3233, "src": "6390:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6397:10:21", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6390:17:21", "typeDescriptions": {"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) view returns (bool,bytes memory)"}}, "id": 3249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6390:23:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6348:65:21"}, {"expression": {"arguments": [{"id": 3252, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3233, "src": "6457:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3253, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3243, "src": "6465:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3254, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3245, "src": "6474:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3255, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3237, "src": "6486:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3251, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "6430:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6430:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3241, "id": 3257, "nodeType": "Return", "src": "6423:76:21"}]}, "documentation": {"id": 3231, "nodeType": "StructuredDocumentation", "src": "6002:173:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 3259, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6189:18:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3238, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3233, "mutability": "mutable", "name": "target", "nameLocation": "6225:6:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6217:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3232, "name": "address", "nodeType": "ElementaryTypeName", "src": "6217:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3235, "mutability": "mutable", "name": "data", "nameLocation": "6254:4:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6241:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3234, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6241:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3237, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6282:12:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6268:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3236, "name": "string", "nodeType": "ElementaryTypeName", "src": "6268:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6207:93:21"}, "returnParameters": {"id": 3241, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3240, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6324:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3239, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6324:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6323:14:21"}, "scope": 3389, "src": "6180:326:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3275, "nodeType": "Block", "src": "6782:101:21", "statements": [{"expression": {"arguments": [{"id": 3270, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3262, "src": "6820:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3271, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3264, "src": "6828:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "id": 3272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6834:41:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}, "value": "Address: low-level delegate call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}], "id": 3269, "name": "functionDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [3276, 3305], "referencedDeclaration": 3305, "src": "6799:20:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 3273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6799:77:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3268, "id": 3274, "nodeType": "Return", "src": "6792:84:21"}]}, "documentation": {"id": 3260, "nodeType": "StructuredDocumentation", "src": "6512:168:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 3276, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6694:20:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3262, "mutability": "mutable", "name": "target", "nameLocation": "6723:6:21", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6715:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3261, "name": "address", "nodeType": "ElementaryTypeName", "src": "6715:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3264, "mutability": "mutable", "name": "data", "nameLocation": "6744:4:21", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6731:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3263, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6731:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6714:35:21"}, "returnParameters": {"id": 3268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6768:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3266, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6768:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6767:14:21"}, "scope": 3389, "src": "6685:198:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3304, "nodeType": "Block", "src": "7224:170:21", "statements": [{"assignments": [3289, 3291], "declarations": [{"constant": false, "id": 3289, "mutability": "mutable", "name": "success", "nameLocation": "7240:7:21", "nodeType": "VariableDeclaration", "scope": 3304, "src": "7235:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3288, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7235:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3291, "mutability": "mutable", "name": "returndata", "nameLocation": "7262:10:21", "nodeType": "VariableDeclaration", "scope": 3304, "src": "7249:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3290, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7249:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3296, "initialValue": {"arguments": [{"id": 3294, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3281, "src": "7296:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3292, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3279, "src": "7276:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7283:12:21", "memberName": "delegatecall", "nodeType": "MemberAccess", "src": "7276:19:21", "typeDescriptions": {"typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) returns (bool,bytes memory)"}}, "id": 3295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7276:25:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "7234:67:21"}, {"expression": {"arguments": [{"id": 3298, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3279, "src": "7345:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3299, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3289, "src": "7353:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3300, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3291, "src": "7362:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3301, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3283, "src": "7374:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3297, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "7318:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7318:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3287, "id": 3303, "nodeType": "Return", "src": "7311:76:21"}]}, "documentation": {"id": 3277, "nodeType": "StructuredDocumentation", "src": "6889:175:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 3305, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "7078:20:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3279, "mutability": "mutable", "name": "target", "nameLocation": "7116:6:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7108:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3278, "name": "address", "nodeType": "ElementaryTypeName", "src": "7108:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3281, "mutability": "mutable", "name": "data", "nameLocation": "7145:4:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7132:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3280, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7132:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3283, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7173:12:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7159:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3282, "name": "string", "nodeType": "ElementaryTypeName", "src": "7159:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7098:93:21"}, "returnParameters": {"id": 3287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3286, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7210:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3285, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7210:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7209:14:21"}, "scope": 3389, "src": "7069:325:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3343, "nodeType": "Block", "src": "7876:434:21", "statements": [{"condition": {"id": 3319, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3310, "src": "7890:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3341, "nodeType": "Block", "src": "8246:58:21", "statements": [{"expression": {"arguments": [{"id": 3337, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "8268:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3338, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3314, "src": "8280:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3336, "name": "_revert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "8260:7:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bytes memory,string memory) pure"}}, "id": 3339, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8260:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3340, "nodeType": "ExpressionStatement", "src": "8260:33:21"}]}, "id": 3342, "nodeType": "IfStatement", "src": "7886:418:21", "trueBody": {"id": 3335, "nodeType": "Block", "src": "7899:341:21", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 3320, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "7917:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7928:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "7917:17:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 3322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7938:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7917:22:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3332, "nodeType": "IfStatement", "src": "7913:286:21", "trueBody": {"id": 3331, "nodeType": "Block", "src": "7941:258:21", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 3326, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3308, "src": "8143:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 3325, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3077, "src": "8132:10:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8132:18:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 3328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8152:31:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 3324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8124:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8124:60:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3330, "nodeType": "ExpressionStatement", "src": "8124:60:21"}]}}, {"expression": {"id": 3333, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "8219:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3318, "id": 3334, "nodeType": "Return", "src": "8212:17:21"}]}}]}, "documentation": {"id": 3306, "nodeType": "StructuredDocumentation", "src": "7400:277:21", "text": " @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"}, "id": 3344, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResultFromTarget", "nameLocation": "7691:26:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3308, "mutability": "mutable", "name": "target", "nameLocation": "7735:6:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7727:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3307, "name": "address", "nodeType": "ElementaryTypeName", "src": "7727:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3310, "mutability": "mutable", "name": "success", "nameLocation": "7756:7:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7751:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3309, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7751:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3312, "mutability": "mutable", "name": "returndata", "nameLocation": "7786:10:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7773:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3311, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7773:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3314, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7820:12:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7806:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3313, "name": "string", "nodeType": "ElementaryTypeName", "src": "7806:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7717:121:21"}, "returnParameters": {"id": 3318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3317, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7862:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3316, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7862:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7861:14:21"}, "scope": 3389, "src": "7682:628:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3367, "nodeType": "Block", "src": "8691:135:21", "statements": [{"condition": {"id": 3356, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3347, "src": "8705:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3365, "nodeType": "Block", "src": "8762:58:21", "statements": [{"expression": {"arguments": [{"id": 3361, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3349, "src": "8784:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3362, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3351, "src": "8796:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3360, "name": "_revert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "8776:7:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bytes memory,string memory) pure"}}, "id": 3363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8776:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3364, "nodeType": "ExpressionStatement", "src": "8776:33:21"}]}, "id": 3366, "nodeType": "IfStatement", "src": "8701:119:21", "trueBody": {"id": 3359, "nodeType": "Block", "src": "8714:42:21", "statements": [{"expression": {"id": 3357, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3349, "src": "8735:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3355, "id": 3358, "nodeType": "Return", "src": "8728:17:21"}]}}]}, "documentation": {"id": 3345, "nodeType": "StructuredDocumentation", "src": "8316:210:21", "text": " @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"}, "id": 3368, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "8540:16:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3347, "mutability": "mutable", "name": "success", "nameLocation": "8571:7:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8566:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3346, "name": "bool", "nodeType": "ElementaryTypeName", "src": "8566:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3349, "mutability": "mutable", "name": "returndata", "nameLocation": "8601:10:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8588:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3348, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8588:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3351, "mutability": "mutable", "name": "errorMessage", "nameLocation": "8635:12:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8621:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3350, "name": "string", "nodeType": "ElementaryTypeName", "src": "8621:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "8556:97:21"}, "returnParameters": {"id": 3355, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3354, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8677:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3353, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8677:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8676:14:21"}, "scope": 3389, "src": "8531:295:21", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3387, "nodeType": "Block", "src": "8915:457:21", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 3375, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "8991:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9002:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "8991:17:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9011:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8991:21:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3385, "nodeType": "Block", "src": "9321:45:21", "statements": [{"expression": {"arguments": [{"id": 3382, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3372, "src": "9342:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3381, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9335:6:21", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 3383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9335:20:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3384, "nodeType": "ExpressionStatement", "src": "9335:20:21"}]}, "id": 3386, "nodeType": "IfStatement", "src": "8987:379:21", "trueBody": {"id": 3380, "nodeType": "Block", "src": "9014:301:21", "statements": [{"AST": {"nodeType": "YulBlock", "src": "9172:133:21", "statements": [{"nodeType": "YulVariableDeclaration", "src": "9190:40:21", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "9219:10:21"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "9213:5:21"}, "nodeType": "YulFunctionCall", "src": "9213:17:21"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "9194:15:21", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "9258:2:21", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "9262:10:21"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "9254:3:21"}, "nodeType": "YulFunctionCall", "src": "9254:19:21"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "9275:15:21"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "9247:6:21"}, "nodeType": "YulFunctionCall", "src": "9247:44:21"}, "nodeType": "YulExpressionStatement", "src": "9247:44:21"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3370, "isOffset": false, "isSlot": false, "src": "9219:10:21", "valueSize": 1}, {"declaration": 3370, "isOffset": false, "isSlot": false, "src": "9262:10:21", "valueSize": 1}], "id": 3379, "nodeType": "InlineAssembly", "src": "9163:142:21"}]}}]}, "id": 3388, "implemented": true, "kind": "function", "modifiers": [], "name": "_revert", "nameLocation": "8841:7:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3373, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3370, "mutability": "mutable", "name": "returndata", "nameLocation": "8862:10:21", "nodeType": "VariableDeclaration", "scope": 3388, "src": "8849:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3369, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8849:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3372, "mutability": "mutable", "name": "errorMessage", "nameLocation": "8888:12:21", "nodeType": "VariableDeclaration", "scope": 3388, "src": "8874:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3371, "name": "string", "nodeType": "ElementaryTypeName", "src": "8874:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "8848:53:21"}, "returnParameters": {"id": 3374, "nodeType": "ParameterList", "parameters": [], "src": "8915:0:21"}, "scope": 3389, "src": "8832:540:21", "stateMutability": "pure", "virtual": false, "visibility": "private"}], "scope": 3390, "src": "194:9180:21", "usedErrors": []}], "src": "101:9274:21"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683]}, "id": 3060, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3019, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:22"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 3020, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3060, "sourceUnit": 2684, "src": "110:42:22", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 3022, "name": "Initializable", "nameLocations": ["691:13:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "691:13:22"}, "id": 3023, "nodeType": "InheritanceSpecifier", "src": "691:13:22"}], "canonicalName": "ContextUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 3021, "nodeType": "StructuredDocumentation", "src": "154:496:22", "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."}, "fullyImplemented": true, "id": 3059, "linearizedBaseContracts": [3059, 2683], "name": "ContextUpgradeable", "nameLocation": "669:18:22", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3028, "nodeType": "Block", "src": "763:7:22", "statements": []}, "id": 3029, "implemented": true, "kind": "function", "modifiers": [{"id": 3026, "kind": "modifierInvocation", "modifierName": {"id": 3025, "name": "onlyInitializing", "nameLocations": ["746:16:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "746:16:22"}, "nodeType": "ModifierInvocation", "src": "746:16:22"}], "name": "__Context_init", "nameLocation": "720:14:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3024, "nodeType": "ParameterList", "parameters": [], "src": "734:2:22"}, "returnParameters": {"id": 3027, "nodeType": "ParameterList", "parameters": [], "src": "763:0:22"}, "scope": 3059, "src": "711:59:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3034, "nodeType": "Block", "src": "838:7:22", "statements": []}, "id": 3035, "implemented": true, "kind": "function", "modifiers": [{"id": 3032, "kind": "modifierInvocation", "modifierName": {"id": 3031, "name": "onlyInitializing", "nameLocations": ["821:16:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "821:16:22"}, "nodeType": "ModifierInvocation", "src": "821:16:22"}], "name": "__Context_init_unchained", "nameLocation": "785:24:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3030, "nodeType": "ParameterList", "parameters": [], "src": "809:2:22"}, "returnParameters": {"id": 3033, "nodeType": "ParameterList", "parameters": [], "src": "838:0:22"}, "scope": 3059, "src": "776:69:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3043, "nodeType": "Block", "src": "912:34:22", "statements": [{"expression": {"expression": {"id": 3040, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "929:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "933:6:22", "memberName": "sender", "nodeType": "MemberAccess", "src": "929:10:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3039, "id": 3042, "nodeType": "Return", "src": "922:17:22"}]}, "id": 3044, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "859:10:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3036, "nodeType": "ParameterList", "parameters": [], "src": "869:2:22"}, "returnParameters": {"id": 3039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3038, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3044, "src": "903:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3037, "name": "address", "nodeType": "ElementaryTypeName", "src": "903:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "902:9:22"}, "scope": 3059, "src": "850:96:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 3052, "nodeType": "Block", "src": "1019:32:22", "statements": [{"expression": {"expression": {"id": 3049, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1036:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1040:4:22", "memberName": "data", "nodeType": "MemberAccess", "src": "1036:8:22", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 3048, "id": 3051, "nodeType": "Return", "src": "1029:15:22"}]}, "id": 3053, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "961:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3045, "nodeType": "ParameterList", "parameters": [], "src": "969:2:22"}, "returnParameters": {"id": 3048, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3047, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3053, "src": "1003:14:22", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 3046, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1003:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1002:16:22"}, "scope": 3059, "src": "952:99:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 3054, "nodeType": "StructuredDocumentation", "src": "1057:254:22", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 3058, "mutability": "mutable", "name": "__gap", "nameLocation": "1336:5:22", "nodeType": "VariableDeclaration", "scope": 3059, "src": "1316:25:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 3055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3057, "length": {"hexValue": "3530", "id": 3056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1324:2:22", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1316:11:22", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 3060, "src": "651:693:22", "usedErrors": []}], "src": "86:1259:22"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "exportedSymbols": {"StorageSlotUpgradeable": [3530]}, "id": 3531, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3422, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "193:23:23"}, {"abstract": false, "baseContracts": [], "canonicalName": "StorageSlotUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 3423, "nodeType": "StructuredDocumentation", "src": "218:1201:23", "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"}, "fullyImplemented": true, "id": 3530, "linearizedBaseContracts": [3530], "name": "StorageSlotUpgradeable", "nameLocation": "1428:22:23", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "StorageSlotUpgradeable.AddressSlot", "id": 3426, "members": [{"constant": false, "id": 3425, "mutability": "mutable", "name": "value", "nameLocation": "1494:5:23", "nodeType": "VariableDeclaration", "scope": 3426, "src": "1486:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3424, "name": "address", "nodeType": "ElementaryTypeName", "src": "1486:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "name": "AddressSlot", "nameLocation": "1464:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1457:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.BooleanSlot", "id": 3429, "members": [{"constant": false, "id": 3428, "mutability": "mutable", "name": "value", "nameLocation": "1546:5:23", "nodeType": "VariableDeclaration", "scope": 3429, "src": "1541:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3427, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1541:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "BooleanSlot", "nameLocation": "1519:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1512:46:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.Bytes32Slot", "id": 3432, "members": [{"constant": false, "id": 3431, "mutability": "mutable", "name": "value", "nameLocation": "1601:5:23", "nodeType": "VariableDeclaration", "scope": 3432, "src": "1593:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3430, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1593:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "name": "Bytes32Slot", "nameLocation": "1571:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1564:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.Uint256Slot", "id": 3435, "members": [{"constant": false, "id": 3434, "mutability": "mutable", "name": "value", "nameLocation": "1656:5:23", "nodeType": "VariableDeclaration", "scope": 3435, "src": "1648:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1648:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Uint256Slot", "nameLocation": "1626:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1619:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.StringSlot", "id": 3438, "members": [{"constant": false, "id": 3437, "mutability": "mutable", "name": "value", "nameLocation": "1709:5:23", "nodeType": "VariableDeclaration", "scope": 3438, "src": "1702:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 3436, "name": "string", "nodeType": "ElementaryTypeName", "src": "1702:6:23", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "name": "StringSlot", "nameLocation": "1681:10:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1674:47:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.BytesSlot", "id": 3441, "members": [{"constant": false, "id": 3440, "mutability": "mutable", "name": "value", "nameLocation": "1760:5:23", "nodeType": "VariableDeclaration", "scope": 3441, "src": "1754:11:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 3439, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1754:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "name": "BytesSlot", "nameLocation": "1734:9:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1727:45:23", "visibility": "public"}, {"body": {"id": 3451, "nodeType": "Block", "src": "1954:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2016:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2030:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2040:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2030:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3448, "isOffset": false, "isSlot": true, "src": "2030:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3444, "isOffset": false, "isSlot": false, "src": "2040:4:23", "valueSize": 1}], "id": 3450, "nodeType": "InlineAssembly", "src": "2007:47:23"}]}, "documentation": {"id": 3442, "nodeType": "StructuredDocumentation", "src": "1778:87:23", "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."}, "id": 3452, "implemented": true, "kind": "function", "modifiers": [], "name": "getAddressSlot", "nameLocation": "1879:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3444, "mutability": "mutable", "name": "slot", "nameLocation": "1902:4:23", "nodeType": "VariableDeclaration", "scope": 3452, "src": "1894:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3443, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1894:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1893:14:23"}, "returnParameters": {"id": 3449, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3448, "mutability": "mutable", "name": "r", "nameLocation": "1951:1:23", "nodeType": "VariableDeclaration", "scope": 3452, "src": "1931:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot"}, "typeName": {"id": 3447, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3446, "name": "AddressSlot", "nameLocations": ["1931:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3426, "src": "1931:11:23"}, "referencedDeclaration": 3426, "src": "1931:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot"}}, "visibility": "internal"}], "src": "1930:23:23"}, "scope": 3530, "src": "1870:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3462, "nodeType": "Block", "src": "2242:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2304:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2318:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2328:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2318:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3459, "isOffset": false, "isSlot": true, "src": "2318:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3455, "isOffset": false, "isSlot": false, "src": "2328:4:23", "valueSize": 1}], "id": 3461, "nodeType": "InlineAssembly", "src": "2295:47:23"}]}, "documentation": {"id": 3453, "nodeType": "StructuredDocumentation", "src": "2066:87:23", "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."}, "id": 3463, "implemented": true, "kind": "function", "modifiers": [], "name": "getBooleanSlot", "nameLocation": "2167:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3455, "mutability": "mutable", "name": "slot", "nameLocation": "2190:4:23", "nodeType": "VariableDeclaration", "scope": 3463, "src": "2182:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3454, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2182:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2181:14:23"}, "returnParameters": {"id": 3460, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3459, "mutability": "mutable", "name": "r", "nameLocation": "2239:1:23", "nodeType": "VariableDeclaration", "scope": 3463, "src": "2219:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot"}, "typeName": {"id": 3458, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3457, "name": "BooleanSlot", "nameLocations": ["2219:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3429, "src": "2219:11:23"}, "referencedDeclaration": 3429, "src": "2219:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot"}}, "visibility": "internal"}], "src": "2218:23:23"}, "scope": 3530, "src": "2158:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3473, "nodeType": "Block", "src": "2530:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2592:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2606:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2616:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2606:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3470, "isOffset": false, "isSlot": true, "src": "2606:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3466, "isOffset": false, "isSlot": false, "src": "2616:4:23", "valueSize": 1}], "id": 3472, "nodeType": "InlineAssembly", "src": "2583:47:23"}]}, "documentation": {"id": 3464, "nodeType": "StructuredDocumentation", "src": "2354:87:23", "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."}, "id": 3474, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytes32Slot", "nameLocation": "2455:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3466, "mutability": "mutable", "name": "slot", "nameLocation": "2478:4:23", "nodeType": "VariableDeclaration", "scope": 3474, "src": "2470:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3465, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2470:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2469:14:23"}, "returnParameters": {"id": 3471, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3470, "mutability": "mutable", "name": "r", "nameLocation": "2527:1:23", "nodeType": "VariableDeclaration", "scope": 3474, "src": "2507:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Bytes32Slot_$3432_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"}, "typeName": {"id": 3469, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3468, "name": "Bytes32Slot", "nameLocations": ["2507:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3432, "src": "2507:11:23"}, "referencedDeclaration": 3432, "src": "2507:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_Bytes32Slot_$3432_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"}}, "visibility": "internal"}], "src": "2506:23:23"}, "scope": 3530, "src": "2446:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3484, "nodeType": "Block", "src": "2818:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2880:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2894:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2904:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2894:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3481, "isOffset": false, "isSlot": true, "src": "2894:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3477, "isOffset": false, "isSlot": false, "src": "2904:4:23", "valueSize": 1}], "id": 3483, "nodeType": "InlineAssembly", "src": "2871:47:23"}]}, "documentation": {"id": 3475, "nodeType": "StructuredDocumentation", "src": "2642:87:23", "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."}, "id": 3485, "implemented": true, "kind": "function", "modifiers": [], "name": "getUint256Slot", "nameLocation": "2743:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3478, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3477, "mutability": "mutable", "name": "slot", "nameLocation": "2766:4:23", "nodeType": "VariableDeclaration", "scope": 3485, "src": "2758:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3476, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2758:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2757:14:23"}, "returnParameters": {"id": 3482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3481, "mutability": "mutable", "name": "r", "nameLocation": "2815:1:23", "nodeType": "VariableDeclaration", "scope": 3485, "src": "2795:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Uint256Slot_$3435_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Uint256Slot"}, "typeName": {"id": 3480, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3479, "name": "Uint256Slot", "nameLocations": ["2795:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3435, "src": "2795:11:23"}, "referencedDeclaration": 3435, "src": "2795:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_Uint256Slot_$3435_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Uint256Slot"}}, "visibility": "internal"}], "src": "2794:23:23"}, "scope": 3530, "src": "2734:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3495, "nodeType": "Block", "src": "3103:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3165:38:23", "statements": [{"nodeType": "YulAssignment", "src": "3179:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "3189:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3179:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3492, "isOffset": false, "isSlot": true, "src": "3179:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3488, "isOffset": false, "isSlot": false, "src": "3189:4:23", "valueSize": 1}], "id": 3494, "nodeType": "InlineAssembly", "src": "3156:47:23"}]}, "documentation": {"id": 3486, "nodeType": "StructuredDocumentation", "src": "2930:86:23", "text": " @dev Returns an `StringSlot` with member `value` located at `slot`."}, "id": 3496, "implemented": true, "kind": "function", "modifiers": [], "name": "getStringSlot", "nameLocation": "3030:13:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3489, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3488, "mutability": "mutable", "name": "slot", "nameLocation": "3052:4:23", "nodeType": "VariableDeclaration", "scope": 3496, "src": "3044:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3487, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3044:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3043:14:23"}, "returnParameters": {"id": 3493, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3492, "mutability": "mutable", "name": "r", "nameLocation": "3100:1:23", "nodeType": "VariableDeclaration", "scope": 3496, "src": "3081:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}, "typeName": {"id": 3491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3490, "name": "StringSlot", "nameLocations": ["3081:10:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3438, "src": "3081:10:23"}, "referencedDeclaration": 3438, "src": "3081:10:23", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}}, "visibility": "internal"}], "src": "3080:22:23"}, "scope": 3530, "src": "3021:188:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3506, "nodeType": "Block", "src": "3411:112:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3473:44:23", "statements": [{"nodeType": "YulAssignment", "src": "3487:20:23", "value": {"name": "store.slot", "nodeType": "YulIdentifier", "src": "3497:10:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3487:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3503, "isOffset": false, "isSlot": true, "src": "3487:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3499, "isOffset": false, "isSlot": true, "src": "3497:10:23", "suffix": "slot", "valueSize": 1}], "id": 3505, "nodeType": "InlineAssembly", "src": "3464:53:23"}]}, "documentation": {"id": 3497, "nodeType": "StructuredDocumentation", "src": "3215:101:23", "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`."}, "id": 3507, "implemented": true, "kind": "function", "modifiers": [], "name": "getStringSlot", "nameLocation": "3330:13:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3499, "mutability": "mutable", "name": "store", "nameLocation": "3359:5:23", "nodeType": "VariableDeclaration", "scope": 3507, "src": "3344:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 3498, "name": "string", "nodeType": "ElementaryTypeName", "src": "3344:6:23", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3343:22:23"}, "returnParameters": {"id": 3504, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3503, "mutability": "mutable", "name": "r", "nameLocation": "3408:1:23", "nodeType": "VariableDeclaration", "scope": 3507, "src": "3389:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}, "typeName": {"id": 3502, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3501, "name": "StringSlot", "nameLocations": ["3389:10:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3438, "src": "3389:10:23"}, "referencedDeclaration": 3438, "src": "3389:10:23", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}}, "visibility": "internal"}], "src": "3388:22:23"}, "scope": 3530, "src": "3321:202:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3517, "nodeType": "Block", "src": "3699:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3761:38:23", "statements": [{"nodeType": "YulAssignment", "src": "3775:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "3785:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3775:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3514, "isOffset": false, "isSlot": true, "src": "3775:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3510, "isOffset": false, "isSlot": false, "src": "3785:4:23", "valueSize": 1}], "id": 3516, "nodeType": "InlineAssembly", "src": "3752:47:23"}]}, "documentation": {"id": 3508, "nodeType": "StructuredDocumentation", "src": "3529:85:23", "text": " @dev Returns an `BytesSlot` with member `value` located at `slot`."}, "id": 3518, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytesSlot", "nameLocation": "3628:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3511, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3510, "mutability": "mutable", "name": "slot", "nameLocation": "3649:4:23", "nodeType": "VariableDeclaration", "scope": 3518, "src": "3641:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3641:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3640:14:23"}, "returnParameters": {"id": 3515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3514, "mutability": "mutable", "name": "r", "nameLocation": "3696:1:23", "nodeType": "VariableDeclaration", "scope": 3518, "src": "3678:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}, "typeName": {"id": 3513, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3512, "name": "BytesSlot", "nameLocations": ["3678:9:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3441, "src": "3678:9:23"}, "referencedDeclaration": 3441, "src": "3678:9:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}}, "visibility": "internal"}], "src": "3677:21:23"}, "scope": 3530, "src": "3619:186:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3528, "nodeType": "Block", "src": "4002:112:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "4064:44:23", "statements": [{"nodeType": "YulAssignment", "src": "4078:20:23", "value": {"name": "store.slot", "nodeType": "YulIdentifier", "src": "4088:10:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "4078:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3525, "isOffset": false, "isSlot": true, "src": "4078:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3521, "isOffset": false, "isSlot": true, "src": "4088:10:23", "suffix": "slot", "valueSize": 1}], "id": 3527, "nodeType": "InlineAssembly", "src": "4055:53:23"}]}, "documentation": {"id": 3519, "nodeType": "StructuredDocumentation", "src": "3811:99:23", "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."}, "id": 3529, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytesSlot", "nameLocation": "3924:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3521, "mutability": "mutable", "name": "store", "nameLocation": "3951:5:23", "nodeType": "VariableDeclaration", "scope": 3529, "src": "3937:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 3520, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3937:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3936:21:23"}, "returnParameters": {"id": 3526, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3525, "mutability": "mutable", "name": "r", "nameLocation": "3999:1:23", "nodeType": "VariableDeclaration", "scope": 3529, "src": "3981:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}, "typeName": {"id": 3524, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3523, "name": "BytesSlot", "nameLocations": ["3981:9:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3441, "src": "3981:9:23"}, "referencedDeclaration": 3441, "src": "3981:9:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}}, "visibility": "internal"}], "src": "3980:21:23"}, "scope": 3530, "src": "3915:199:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 3531, "src": "1420:2696:23", "usedErrors": []}], "src": "193:3924:23"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2192]}, "id": 2193, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2116, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:24"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2117, "nodeType": "StructuredDocumentation", "src": "131:70:24", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2192, "linearizedBaseContracts": [2192], "name": "IERC20", "nameLocation": "212:6:24", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2118, "nodeType": "StructuredDocumentation", "src": "225:158:24", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2126, "name": "Transfer", "nameLocation": "394:8:24", "nodeType": "EventDefinition", "parameters": {"id": 2125, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2120, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "403:20:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2119, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2122, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "425:18:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2121, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2124, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "445:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2123, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:24"}, "src": "388:72:24"}, {"anonymous": false, "documentation": {"id": 2127, "nodeType": "StructuredDocumentation", "src": "466:148:24", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2135, "name": "Approval", "nameLocation": "625:8:24", "nodeType": "EventDefinition", "parameters": {"id": 2134, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2129, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "634:21:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2128, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2131, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "657:23:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2130, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2133, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "682:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:24"}, "src": "619:78:24"}, {"documentation": {"id": 2136, "nodeType": "StructuredDocumentation", "src": "703:66:24", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2141, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2137, "nodeType": "ParameterList", "parameters": [], "src": "794:2:24"}, "returnParameters": {"id": 2140, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2139, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2141, "src": "820:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:24"}, "scope": 2192, "src": "774:55:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2142, "nodeType": "StructuredDocumentation", "src": "835:72:24", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2149, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2144, "mutability": "mutable", "name": "account", "nameLocation": "939:7:24", "nodeType": "VariableDeclaration", "scope": 2149, "src": "931:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2143, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:24"}, "returnParameters": {"id": 2148, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2147, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2149, "src": "971:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2146, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:24"}, "scope": 2192, "src": "912:68:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2150, "nodeType": "StructuredDocumentation", "src": "986:202:24", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2159, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2152, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:24", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1211:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2151, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2154, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:24", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1223:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2153, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:24"}, "returnParameters": {"id": 2158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2157, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1257:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2156, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:24"}, "scope": 2192, "src": "1193:70:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2160, "nodeType": "StructuredDocumentation", "src": "1269:264:24", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2169, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2165, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2162, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:24", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1557:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2161, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2164, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:24", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1572:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2163, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:24"}, "returnParameters": {"id": 2168, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2167, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1612:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2166, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:24"}, "scope": 2192, "src": "1538:83:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2170, "nodeType": "StructuredDocumentation", "src": "1627:642:24", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2179, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2172, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:24", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2291:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2171, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2174, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:24", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2308:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:24"}, "returnParameters": {"id": 2178, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2177, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2342:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2176, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:24"}, "scope": 2192, "src": "2274:74:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2180, "nodeType": "StructuredDocumentation", "src": "2354:287:24", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2191, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2182, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2668:12:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2181, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2184, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2682:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2183, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2186, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2694:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:24"}, "returnParameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2189, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2728:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2188, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:24"}, "scope": 2192, "src": "2646:88:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2193, "src": "202:2534:24", "usedErrors": []}], "src": "106:2631:24"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2382]}, "id": 2383, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2310, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:25"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2311, "nodeType": "StructuredDocumentation", "src": "112:311:25", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2382, "linearizedBaseContracts": [2382], "name": "Counters", "nameLocation": "432:8:25", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2314, "members": [{"constant": false, "id": 2313, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:25", "nodeType": "VariableDeclaration", "scope": 2314, "src": "786:14:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:25", "nodeType": "StructDefinition", "scope": 2382, "src": "447:374:25", "visibility": "public"}, {"body": {"id": 2325, "nodeType": "Block", "src": "901:38:25", "statements": [{"expression": {"expression": {"id": 2322, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2317, "src": "918:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "918:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2321, "id": 2324, "nodeType": "Return", "src": "911:21:25"}]}, "id": 2326, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2317, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:25", "nodeType": "VariableDeclaration", "scope": 2326, "src": "844:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2316, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2315, "name": "Counter", "nameLocations": ["844:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "844:7:25"}, "referencedDeclaration": 2314, "src": "844:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:25"}, "returnParameters": {"id": 2321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2320, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2326, "src": "892:7:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2319, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:25"}, "scope": 2382, "src": "827:112:25", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2339, "nodeType": "Block", "src": "998:70:25", "statements": [{"id": 2338, "nodeType": "UncheckedBlock", "src": "1008:54:25", "statements": [{"expression": {"id": 2336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2332, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2329, "src": "1032:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1032:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2337, "nodeType": "ExpressionStatement", "src": "1032:19:25"}]}]}, "id": 2340, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2330, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2329, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:25", "nodeType": "VariableDeclaration", "scope": 2340, "src": "964:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2328, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2327, "name": "Counter", "nameLocations": ["964:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "964:7:25"}, "referencedDeclaration": 2314, "src": "964:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:25"}, "returnParameters": {"id": 2331, "nodeType": "ParameterList", "parameters": [], "src": "998:0:25"}, "scope": 2382, "src": "945:123:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2367, "nodeType": "Block", "src": "1127:176:25", "statements": [{"assignments": [2347], "declarations": [{"constant": false, "id": 2347, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:25", "nodeType": "VariableDeclaration", "scope": 2367, "src": "1137:13:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2346, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2350, "initialValue": {"expression": {"id": 2348, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2343, "src": "1153:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1153:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:25"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2352, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "1185:5:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:25", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:25", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2357, "nodeType": "ExpressionStatement", "src": "1177:49:25"}, {"id": 2366, "nodeType": "UncheckedBlock", "src": "1236:61:25", "statements": [{"expression": {"id": 2364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2358, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2343, "src": "1260:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1260:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2361, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "1277:5:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2365, "nodeType": "ExpressionStatement", "src": "1260:26:25"}]}]}, "id": 2368, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2343, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:25", "nodeType": "VariableDeclaration", "scope": 2368, "src": "1093:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2342, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2341, "name": "Counter", "nameLocations": ["1093:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1093:7:25"}, "referencedDeclaration": 2314, "src": "1093:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:25"}, "returnParameters": {"id": 2345, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:25"}, "scope": 2382, "src": "1074:229:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2380, "nodeType": "Block", "src": "1358:35:25", "statements": [{"expression": {"id": 2378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2374, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "1368:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2376, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1368:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2379, "nodeType": "ExpressionStatement", "src": "1368:18:25"}]}, "id": 2381, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2371, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:25", "nodeType": "VariableDeclaration", "scope": 2381, "src": "1324:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2370, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2369, "name": "Counter", "nameLocations": ["1324:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1324:7:25"}, "referencedDeclaration": 2314, "src": "1324:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:25"}, "returnParameters": {"id": 2373, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:25"}, "scope": 2382, "src": "1309:84:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2383, "src": "424:971:25", "usedErrors": []}], "src": "87:1309:25"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol:SSVNetwork": {"srcmap": "751:9241:0:-:0;;;1332:4:20;1289:48;;;;;;;;;3367:53:0;;;;;;;;;;3391:22;:20;;;:22;;:::i;:::-;751:9241;;5939:280:19;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:26:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;751:9241:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "751:9241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3754:63;3764:17;:15;:17::i;:::-;:30;;:52;3795:20;3764:52;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3754:9;:63::i;:::-;751:9241;5952:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8962:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6373:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5054:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7629:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4892:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4240:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5221:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7941:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3387:195:20;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9475:221:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5398:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3901:220:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3006:131;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6872:238:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8460:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7387:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:14;;;;;;;;;;;;;:::i;:::-;;9702:288:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2010:212:13;;;;;;;;;;;;;:::i;:::-;;8112:168:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4737:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:14;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4569:162:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8629:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7116:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6632:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1013:963;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4391:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7780:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5676:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1123:99:13;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8801:155:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9203:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1415:178:13;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3945:289:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:180:10;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;185:887:1:-;515:14;512:1;509;496:34;729:1;726;710:14;707:1;691:14;684:5;671:60;805:16;802:1;799;784:38;843:6;915:1;910:66;;;;1025:16;1022:1;1015:27;910:66;945:16;942:1;935:27;5952:415:0;6196:19;:17;:19::i;:::-;:33;;:45;6230:10;6196:45;;;;;;;;;;;;;;;:63;;;;;;;;;;;;6191:92;;6268:15;;;;;;;;;;;;;;6191:92;6294:66;6304:17;:15;:17::i;:::-;:30;;:55;6335:23;6304:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6294:9;:66::i;:::-;5952:415;;;;;;;:::o;8962:121::-;9016:21;9056:20;:18;:20::i;:::-;9049:27;;8962:121;:::o;6373:253::-;6553:66;6563:17;:15;:17::i;:::-;:30;;:55;6594:23;6563:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6553:9;:66::i;:::-;6373:253;;;;;:::o;5054:161::-;5141:67;5151:17;:15;:17::i;:::-;:30;;:56;5182:24;5151:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5141:9;:67::i;:::-;5054:161;;:::o;7629:145::-;1334:13:14;:11;:13::i;:::-;7706:61:0::1;7716:17;:15;:17::i;:::-;:30;;:50;7747:18;7716:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7706:9;:61::i;:::-;7629:145:::0;:::o;4892:156::-;4974:67;4984:17;:15;:17::i;:::-;:30;;:56;5015:24;4984:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4974:9;:67::i;:::-;4892:156;:::o;4240:145::-;4311:67;4321:17;:15;:17::i;:::-;:30;;:56;4352:24;4321:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4311:9;:67::i;:::-;4240:145;:::o;5221:171::-;5318:67;5328:17;:15;:17::i;:::-;:30;;:56;5359:24;5328:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5318:9;:67::i;:::-;5221:171;;:::o;7941:165::-;1334:13:14;:11;:13::i;:::-;8038:61:0::1;8048:17;:15;:17::i;:::-;:30;;:50;8079:18;8048:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8038:9;:61::i;:::-;7941:165:::0;:::o;3387:195:20:-;1898:6;1881:23;;1889:4;1881:23;;;1873:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;3468:36:::1;3486:17;3468;:36::i;:::-;3514:61;3536:17;3565:1;3555:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3569:5;3514:21;:61::i;:::-;3387:195:::0;:::o;9475:221:0:-;1334:13:14;:11;:13::i;:::-;9647:42:0::1;;;;;;;;9661:12;9647:42;;;;;;9675:13;9647:42;;;;::::0;9598:19:::1;:17;:19::i;:::-;:33;;:46;9632:11;9598:46;;;;;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9475:221:::0;;;:::o;5398:158::-;5482:67;5492:17;:15;:17::i;:::-;:30;;:56;5523:24;5492:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5482:9;:67::i;:::-;5398:158;:::o;3901:220:20:-;1898:6;1881:23;;1889:4;1881:23;;;1873:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;4016:36:::1;4034:17;4016;:36::i;:::-;4062:52;4084:17;4103:4;4109;4062:21;:52::i;:::-;3901:220:::0;;:::o;3006:131::-;3084:7;2333:6;2316:23;;2324:4;2316:23;;;2308:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;1312:66:17::1;3110:20:20;;3103:27;;3006:131:::0;:::o;6872:238:0:-;7037:66;7047:17;:15;:17::i;:::-;:30;;:55;7078:23;7047:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7037:9;:66::i;:::-;6872:238;;;;:::o;8460:163::-;1334:13:14;:11;:13::i;:::-;8555:61:0::1;8565:17;:15;:17::i;:::-;:30;;:50;8596:18;8565:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8555:9;:61::i;:::-;8460:163:::0;:::o;7387:236::-;7550:66;7560:17;:15;:17::i;:::-;:30;;:55;7591:23;7560:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7550:9;:66::i;:::-;7387:236;;;;:::o;2064:101:14:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;9702:288:0:-;9794:18;9814:19;9845:25;9873:19;:17;:19::i;:::-;:33;;:46;9907:11;9873:46;;;;;;;;;;;;;;;9845:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9937:4;:21;;;9960:4;:22;;;9929:54;;;;;9702:288;;;:::o;2010:212:13:-;2062:14;2079:12;:10;:12::i;:::-;2062:29;;2127:6;2109:24;;:14;:12;:14::i;:::-;:24;;;2101:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2189:26;2208:6;2189:18;:26::i;:::-;2052:170;2010:212::o;8112:168:0:-;1334:13:14;:11;:13::i;:::-;8212:61:0::1;8222:17;:15;:17::i;:::-;:30;;:50;8253:18;8222:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8212:9;:61::i;:::-;8112:168:::0;:::o;4737:149::-;4812:67;4822:17;:15;:17::i;:::-;:30;;:56;4853:24;4822:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4812:9;:67::i;:::-;4737:149;:::o;1441:85:14:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;4569:162:0:-;4657:67;4667:17;:15;:17::i;:::-;:30;;:56;4698:24;4667:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4657:9;:67::i;:::-;4569:162;;:::o;8629:166::-;1334:13:14;:11;:13::i;:::-;8727:61:0::1;8737:17;:15;:17::i;:::-;:30;;:50;8768:18;8737:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8727:9;:61::i;:::-;8629:166:::0;:::o;7116:265::-;7308:66;7318:17;:15;:17::i;:::-;:30;;:55;7349:23;7318:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7308:9;:66::i;:::-;7116:265;;;;;:::o;6632:234::-;6793:66;6803:17;:15;:17::i;:::-;:30;;:55;6834:23;6803:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6793:9;:66::i;:::-;6632:234;;;;:::o;1013:963::-;3279:19:19;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;1898:6:20::1;1881:23;;1889:4;1881:23;;::::0;1873:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1501:24:0::2;:22;:24::i;:::-;1535:26;:24;:26::i;:::-;1571:398;1612:6;1632:13;1659:12;1685:7;1706:9;1729:31;1774:29;1817:27;1858:25;1897;1936:23;1571:27;:398::i;:::-;3651:14:19::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;1013:963:0;;;;;;;;;;;:::o;4391:172::-;4489:67;4499:17;:15;:17::i;:::-;:30;;:56;4530:24;4499:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4489:9;:67::i;:::-;4391:172;;:::o;7780:155::-;1334:13:14;:11;:13::i;:::-;7867:61:0::1;7877:17;:15;:17::i;:::-;:30;;:50;7908:18;7877:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7867:9;:61::i;:::-;7780:155:::0;:::o;5676:154::-;5794:10;5767:56;;;5806:16;5767:56;;;;;;:::i;:::-;;;;;;;;5676:154;:::o;1123:99:13:-;1176:7;1202:13;;;;;;;;;;;1195:20;;1123:99;:::o;8801:155:0:-;1334:13:14;:11;:13::i;:::-;8888:61:0::1;8898:17;:15;:17::i;:::-;:30;;:50;8929:18;8898:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8888:9;:61::i;:::-;8801:155:::0;:::o;9203:152::-;1334:13:14;:11;:13::i;:::-;9298:50:0::1;9324:8;9334:13;9298:25;:50::i;:::-;9203:152:::0;;:::o;8286:168::-;1334:13:14;:11;:13::i;:::-;8386:61:0::1;8396:17;:15;:17::i;:::-;:30;;:50;8427:18;8396:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8386:9;:61::i;:::-;8286:168:::0;:::o;1415:178:13:-;1334:13:14;:11;:13::i;:::-;1520:8:13::1;1504:13;;:24;;;;;;;;;;;;;;;;;;1577:8;1543:43;;1568:7;:5;:7::i;:::-;1543:43;;;;;;;;;;;;1415:178:::0;:::o;3945:289:0:-;4037:9;4063:19;:17;:19::i;:::-;:33;;:45;4097:10;4063:45;;;;;;;;;;;;;;;:62;;;;;;;;;;;;4058:91;;4134:15;;;;;;;;;;;;;;4058:91;4160:67;4170:17;:15;:17::i;:::-;:30;;:56;4201:24;4170:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4160:9;:67::i;:::-;3945:289;;;;;:::o;369:177:9:-;408:19;439:16;275:1;234:37;226:46;;:50;;;;:::i;:::-;439:39;;522:8;511:19;;497:43;369:177;:::o;199:96:8:-;244:13;269:19;;;;;;;;;;;;;;;;;;;199:96;:::o;1599:130:14:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;1457:151:17:-;1510:7;1536:59;1312:66;1574:20;;1536:37;:59::i;:::-;:65;;;;;;;;;;;;1529:72;;1457:151;:::o;3499:66:0:-;1334:13:14;:11;:13::i;:::-;3499:66:0;:::o;2820:944:17:-;3236:53;971:66;3274:14;;3236:37;:53::i;:::-;:59;;;;;;;;;;;;3232:526;;;3311:37;3330:17;3311:18;:37::i;:::-;3232:526;;;3412:17;3383:61;;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3379:302;;3610:56;;;;;;;;;;:::i;:::-;;;;;;;;3379:302;1312:66;3504:20;;3496:4;:28;3488:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;3447:138;3694:53;3712:17;3731:4;3737:9;3694:17;:53::i;:::-;3232:526;2820:944;;;:::o;1777:153:13:-;1866:13;;1859:20;;;;;;;;;;;1889:34;1914:8;1889:24;:34::i;:::-;1777:153;:::o;850:96:22:-;903:7;929:10;922:17;;850:96;:::o;1423:320:21:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1042:67:20:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:67:20:o;1104:111:14:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:14::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;1982:1326:0:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2473:21:0::1;2497:17;:15;:17::i;:::-;2473:41;;2524:26;2553:25;:23;:25::i;:::-;2524:54;;2598:6;2588:1;:7;;;:16;;;;;;;;;;;;;;;;;;2665:13;2614:1;:14;;:40;2629:24:::0;2614:40:::1;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;2739:12;2689:1;:14;;:39;2704:23;2689:39;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2807:7;2762:1;:14;;:34;2777:18;2762:34;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;2872:9;2825:1;:14;;:36;2840:20;2825:36:::0;::::1;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;2928:31;2892:2;:33;;;:67;;;;;;;;;;;;;;;;;;3003:38;:29;:36;:38::i;:::-;2969:2;:31;;;:72;;;;;;;;;;;;;;;;;;3083:27;3051:2;:29;;;:59;;;;;;;;;;;;;;;;;;3150:25;3120:2;:27;;;:55;;;;;;;;;;;;;;;;;;3215:25;3185:2;:27;;;:55;;;;;;;;;;;;;;;;;;3278:23;3250:2;:25;;;:51;;;;;;;;;;;;;;;;;;2463:845;;1982:1326:::0;;;;;;;;;;;:::o;1799:299:8:-;1894:25;1905:13;1894:10;:25::i;:::-;1889:81;;1928:42;;;;;;;;;;;;;;1889:81;2024:13;1981:17;:15;:17::i;:::-;:30;;:40;2012:8;1981:40;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;2067:8;2052:39;;;;;;;;:::i;:::-;;;2077:13;2052:39;;;;;;:::i;:::-;;;;;;;;1799:299;;:::o;1870:190:23:-;1931:21;2040:4;2030:14;;1870:190;;;:::o;2158:::-;2219:21;2328:4;2318:14;;2158:190;;;:::o;1699:281:17:-;1780:48;1810:17;1780:29;:48::i;:::-;1772:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;1956:17;1888:59;1312:66;1926:20;;1888:37;:59::i;:::-;:65;;;:85;;;;;;;;;;;;;;;;;;1699:281;:::o;2372:276::-;2480:29;2491:17;2480:10;:29::i;:::-;2537:1;2523:4;:11;:15;:28;;;;2542:9;2523:28;2519:123;;;2567:64;2607:17;2626:4;2567:39;:64::i;:::-;;2519:123;2372:276;;;:::o;2666:187:14:-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1672:184:11:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:12:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1286:506:8:-;1346:4;1385:1;1366:21;;:7;:21;;;1362:64;;1410:5;1403:12;;;;1362:64;1622:12;1743:7;1731:20;1723:28;;1784:1;1777:4;:8;1770:15;;;1286:506;;;;:::o;2086:152:17:-;2152:37;2171:17;2152:18;:37::i;:::-;2213:17;2204:27;;;;;;;;;;;;2086:152;:::o;6685:198:21:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;;6685:198;;;;:::o;488:169:12:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;7069:325:21:-;7210:12;7235;7249:23;7276:6;:19;;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;;;;7069:325;;;;;:::o;7682:628::-;7862:12;7890:7;7886:418;;;7938:1;7917:10;:17;:22;7913:286;;8132:18;8143:6;8132:10;:18::i;:::-;8124:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7913:286;8219:10;8212:17;;;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;;:::o;8832:540::-;9011:1;8991:10;:17;:21;8987:379;;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:180:26;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;193:75;226:6;259:2;253:9;243:19;;193:75;:::o;274:117::-;383:1;380;373:12;397:117;506:1;503;496:12;520:117;629:1;626;619:12;643:117;752:1;749;742:12;766:117;875:1;872;865:12;902:552;959:8;969:6;1019:3;1012:4;1004:6;1000:17;996:27;986:122;;1027:79;;:::i;:::-;986:122;1140:6;1127:20;1117:30;;1170:18;1162:6;1159:30;1156:117;;;1192:79;;:::i;:::-;1156:117;1306:4;1298:6;1294:17;1282:29;;1360:3;1352:4;1344:6;1340:17;1330:8;1326:32;1323:41;1320:128;;;1367:79;;:::i;:::-;1320:128;902:552;;;;;:::o;1460:102::-;1501:6;1552:2;1548:7;1543:2;1536:5;1532:14;1528:28;1518:38;;1460:102;;;:::o;1568:180::-;1616:77;1613:1;1606:88;1713:4;1710:1;1703:15;1737:4;1734:1;1727:15;1754:281;1837:27;1859:4;1837:27;:::i;:::-;1829:6;1825:40;1967:6;1955:10;1952:22;1931:18;1919:10;1916:34;1913:62;1910:88;;;1978:18;;:::i;:::-;1910:88;2018:10;2014:2;2007:22;1797:238;1754:281;;:::o;2041:129::-;2075:6;2102:20;;:::i;:::-;2092:30;;2131:33;2159:4;2151:6;2131:33;:::i;:::-;2041:129;;;:::o;2176:310::-;2252:4;2342:18;2334:6;2331:30;2328:56;;;2364:18;;:::i;:::-;2328:56;2414:4;2406:6;2402:17;2394:25;;2474:4;2468;2464:15;2456:23;;2176:310;;;:::o;2492:101::-;2528:7;2568:18;2561:5;2557:30;2546:41;;2492:101;;;:::o;2599:120::-;2671:23;2688:5;2671:23;:::i;:::-;2664:5;2661:34;2651:62;;2709:1;2706;2699:12;2651:62;2599:120;:::o;2725:137::-;2770:5;2808:6;2795:20;2786:29;;2824:32;2850:5;2824:32;:::i;:::-;2725:137;;;;:::o;2884:707::-;2979:5;3004:80;3020:63;3076:6;3020:63;:::i;:::-;3004:80;:::i;:::-;2995:89;;3104:5;3133:6;3126:5;3119:21;3167:4;3160:5;3156:16;3149:23;;3220:4;3212:6;3208:17;3200:6;3196:30;3249:3;3241:6;3238:15;3235:122;;;3268:79;;:::i;:::-;3235:122;3383:6;3366:219;3400:6;3395:3;3392:15;3366:219;;;3475:3;3504:36;3536:3;3524:10;3504:36;:::i;:::-;3499:3;3492:49;3570:4;3565:3;3561:14;3554:21;;3442:143;3426:4;3421:3;3417:14;3410:21;;3366:219;;;3370:21;2985:606;;2884:707;;;;;:::o;3613:368::-;3683:5;3732:3;3725:4;3717:6;3713:17;3709:27;3699:122;;3740:79;;:::i;:::-;3699:122;3857:6;3844:20;3882:93;3971:3;3963:6;3956:4;3948:6;3944:17;3882:93;:::i;:::-;3873:102;;3689:292;3613:368;;;;:::o;3987:77::-;4024:7;4053:5;4042:16;;3987:77;;;:::o;4070:122::-;4143:24;4161:5;4143:24;:::i;:::-;4136:5;4133:35;4123:63;;4182:1;4179;4172:12;4123:63;4070:122;:::o;4198:139::-;4244:5;4282:6;4269:20;4260:29;;4298:33;4325:5;4298:33;:::i;:::-;4198:139;;;;:::o;4343:117::-;4452:1;4449;4442:12;4589:93;4625:7;4665:10;4658:5;4654:22;4643:33;;4589:93;;;:::o;4688:120::-;4760:23;4777:5;4760:23;:::i;:::-;4753:5;4750:34;4740:62;;4798:1;4795;4788:12;4740:62;4688:120;:::o;4814:137::-;4859:5;4897:6;4884:20;4875:29;;4913:32;4939:5;4913:32;:::i;:::-;4814:137;;;;:::o;4957:90::-;4991:7;5034:5;5027:13;5020:21;5009:32;;4957:90;;;:::o;5053:116::-;5123:21;5138:5;5123:21;:::i;:::-;5116:5;5113:32;5103:60;;5159:1;5156;5149:12;5103:60;5053:116;:::o;5175:133::-;5218:5;5256:6;5243:20;5234:29;;5272:30;5296:5;5272:30;:::i;:::-;5175:133;;;;:::o;5352:1079::-;5426:5;5470:4;5458:9;5453:3;5449:19;5445:30;5442:117;;;5478:79;;:::i;:::-;5442:117;5577:21;5593:4;5577:21;:::i;:::-;5568:30;;5667:1;5707:48;5751:3;5742:6;5731:9;5727:22;5707:48;:::i;:::-;5700:4;5693:5;5689:16;5682:74;5608:159;5837:2;5878:48;5922:3;5913:6;5902:9;5898:22;5878:48;:::i;:::-;5871:4;5864:5;5860:16;5853:74;5777:161;5998:2;6039:48;6083:3;6074:6;6063:9;6059:22;6039:48;:::i;:::-;6032:4;6025:5;6021:16;6014:74;5948:151;6160:2;6201:46;6243:3;6234:6;6223:9;6219:22;6201:46;:::i;:::-;6194:4;6187:5;6183:16;6176:72;6109:150;6321:3;6363:49;6408:3;6399:6;6388:9;6384:22;6363:49;:::i;:::-;6356:4;6349:5;6345:16;6338:75;6269:155;5352:1079;;;;:::o;6437:1565::-;6603:6;6611;6619;6627;6635;6643;6651;6700:3;6688:9;6679:7;6675:23;6671:33;6668:120;;;6707:79;;:::i;:::-;6668:120;6855:1;6844:9;6840:17;6827:31;6885:18;6877:6;6874:30;6871:117;;;6907:79;;:::i;:::-;6871:117;7020:64;7076:7;7067:6;7056:9;7052:22;7020:64;:::i;:::-;7002:82;;;;6798:296;7161:2;7150:9;7146:18;7133:32;7192:18;7184:6;7181:30;7178:117;;;7214:79;;:::i;:::-;7178:117;7319:77;7388:7;7379:6;7368:9;7364:22;7319:77;:::i;:::-;7309:87;;7104:302;7473:2;7462:9;7458:18;7445:32;7504:18;7496:6;7493:30;7490:117;;;7526:79;;:::i;:::-;7490:117;7639:64;7695:7;7686:6;7675:9;7671:22;7639:64;:::i;:::-;7621:82;;;;7416:297;7752:2;7778:53;7823:7;7814:6;7803:9;7799:22;7778:53;:::i;:::-;7768:63;;7723:118;7880:3;7907:78;7977:7;7968:6;7957:9;7953:22;7907:78;:::i;:::-;7897:88;;7851:144;6437:1565;;;;;;;;;;:::o;8008:99::-;8060:6;8094:5;8088:12;8078:22;;8008:99;;;:::o;8113:169::-;8197:11;8231:6;8226:3;8219:19;8271:4;8266:3;8262:14;8247:29;;8113:169;;;;:::o;8288:246::-;8369:1;8379:113;8393:6;8390:1;8387:13;8379:113;;;8478:1;8473:3;8469:11;8463:18;8459:1;8454:3;8450:11;8443:39;8415:2;8412:1;8408:10;8403:15;;8379:113;;;8526:1;8517:6;8512:3;8508:16;8501:27;8350:184;8288:246;;;:::o;8540:377::-;8628:3;8656:39;8689:5;8656:39;:::i;:::-;8711:71;8775:6;8770:3;8711:71;:::i;:::-;8704:78;;8791:65;8849:6;8844:3;8837:4;8830:5;8826:16;8791:65;:::i;:::-;8881:29;8903:6;8881:29;:::i;:::-;8876:3;8872:39;8865:46;;8632:285;8540:377;;;;:::o;8923:313::-;9036:4;9074:2;9063:9;9059:18;9051:26;;9123:9;9117:4;9113:20;9109:1;9098:9;9094:17;9087:47;9151:78;9224:4;9215:6;9151:78;:::i;:::-;9143:86;;8923:313;;;;:::o;9258:567::-;9330:8;9340:6;9390:3;9383:4;9375:6;9371:17;9367:27;9357:122;;9398:79;;:::i;:::-;9357:122;9511:6;9498:20;9488:30;;9541:18;9533:6;9530:30;9527:117;;;9563:79;;:::i;:::-;9527:117;9677:4;9669:6;9665:17;9653:29;;9731:3;9723:4;9715:6;9711:17;9701:8;9697:32;9694:41;9691:128;;;9738:79;;:::i;:::-;9691:128;9258:567;;;;;:::o;9831:1096::-;9970:6;9978;9986;9994;10002;10051:3;10039:9;10030:7;10026:23;10022:33;10019:120;;;10058:79;;:::i;:::-;10019:120;10206:1;10195:9;10191:17;10178:31;10236:18;10228:6;10225:30;10222:117;;;10258:79;;:::i;:::-;10222:117;10371:64;10427:7;10418:6;10407:9;10403:22;10371:64;:::i;:::-;10353:82;;;;10149:296;10512:2;10501:9;10497:18;10484:32;10543:18;10535:6;10532:30;10529:117;;;10565:79;;:::i;:::-;10529:117;10678:79;10749:7;10740:6;10729:9;10725:22;10678:79;:::i;:::-;10660:97;;;;10455:312;10806:2;10832:78;10902:7;10893:6;10882:9;10878:22;10832:78;:::i;:::-;10822:88;;10777:143;9831:1096;;;;;;;;:::o;10933:472::-;11000:6;11008;11057:2;11045:9;11036:7;11032:23;11028:32;11025:119;;;11063:79;;:::i;:::-;11025:119;11183:1;11208:52;11252:7;11243:6;11232:9;11228:22;11208:52;:::i;:::-;11198:62;;11154:116;11309:2;11335:53;11380:7;11371:6;11360:9;11356:22;11335:53;:::i;:::-;11325:63;;11280:118;10933:472;;;;;:::o;11411:329::-;11470:6;11519:2;11507:9;11498:7;11494:23;11490:32;11487:119;;;11525:79;;:::i;:::-;11487:119;11645:1;11670:53;11715:7;11706:6;11695:9;11691:22;11670:53;:::i;:::-;11660:63;;11616:117;11411:329;;;;:::o;11746:327::-;11804:6;11853:2;11841:9;11832:7;11828:23;11824:32;11821:119;;;11859:79;;:::i;:::-;11821:119;11979:1;12004:52;12048:7;12039:6;12028:9;12024:22;12004:52;:::i;:::-;11994:62;;11950:116;11746:327;;;;:::o;12079:126::-;12116:7;12156:42;12149:5;12145:54;12134:65;;12079:126;;;:::o;12211:96::-;12248:7;12277:24;12295:5;12277:24;:::i;:::-;12266:35;;12211:96;;;:::o;12313:122::-;12386:24;12404:5;12386:24;:::i;:::-;12379:5;12376:35;12366:63;;12425:1;12422;12415:12;12366:63;12313:122;:::o;12441:139::-;12487:5;12525:6;12512:20;12503:29;;12541:33;12568:5;12541:33;:::i;:::-;12441:139;;;;:::o;12586:329::-;12645:6;12694:2;12682:9;12673:7;12669:23;12665:32;12662:119;;;12700:79;;:::i;:::-;12662:119;12820:1;12845:53;12890:7;12881:6;12870:9;12866:22;12845:53;:::i;:::-;12835:63;;12791:117;12586:329;;;;:::o;12921:607::-;12992:6;13000;13008;13057:2;13045:9;13036:7;13032:23;13028:32;13025:119;;;13063:79;;:::i;:::-;13025:119;13183:1;13208:53;13253:7;13244:6;13233:9;13229:22;13208:53;:::i;:::-;13198:63;;13154:117;13310:2;13336:50;13378:7;13369:6;13358:9;13354:22;13336:50;:::i;:::-;13326:60;;13281:115;13435:2;13461:50;13503:7;13494:6;13483:9;13479:22;13461:50;:::i;:::-;13451:60;;13406:115;12921:607;;;;;:::o;13534:117::-;13643:1;13640;13633:12;13657:307;13718:4;13808:18;13800:6;13797:30;13794:56;;;13830:18;;:::i;:::-;13794:56;13868:29;13890:6;13868:29;:::i;:::-;13860:37;;13952:4;13946;13942:15;13934:23;;13657:307;;;:::o;13970:146::-;14067:6;14062:3;14057;14044:30;14108:1;14099:6;14094:3;14090:16;14083:27;13970:146;;;:::o;14122:423::-;14199:5;14224:65;14240:48;14281:6;14240:48;:::i;:::-;14224:65;:::i;:::-;14215:74;;14312:6;14305:5;14298:21;14350:4;14343:5;14339:16;14388:3;14379:6;14374:3;14370:16;14367:25;14364:112;;;14395:79;;:::i;:::-;14364:112;14485:54;14532:6;14527:3;14522;14485:54;:::i;:::-;14205:340;14122:423;;;;;:::o;14564:338::-;14619:5;14668:3;14661:4;14653:6;14649:17;14645:27;14635:122;;14676:79;;:::i;:::-;14635:122;14793:6;14780:20;14818:78;14892:3;14884:6;14877:4;14869:6;14865:17;14818:78;:::i;:::-;14809:87;;14625:277;14564:338;;;;:::o;14908:652::-;14985:6;14993;15042:2;15030:9;15021:7;15017:23;15013:32;15010:119;;;15048:79;;:::i;:::-;15010:119;15168:1;15193:53;15238:7;15229:6;15218:9;15214:22;15193:53;:::i;:::-;15183:63;;15139:117;15323:2;15312:9;15308:18;15295:32;15354:18;15346:6;15343:30;15340:117;;;15376:79;;:::i;:::-;15340:117;15481:62;15535:7;15526:6;15515:9;15511:22;15481:62;:::i;:::-;15471:72;;15266:287;14908:652;;;;;:::o;15566:77::-;15603:7;15632:5;15621:16;;15566:77;;;:::o;15649:118::-;15736:24;15754:5;15736:24;:::i;:::-;15731:3;15724:37;15649:118;;:::o;15773:222::-;15866:4;15904:2;15893:9;15889:18;15881:26;;15917:71;15985:1;15974:9;15970:17;15961:6;15917:71;:::i;:::-;15773:222;;;;:::o;16001:898::-;16129:6;16137;16145;16153;16202:3;16190:9;16181:7;16177:23;16173:33;16170:120;;;16209:79;;:::i;:::-;16170:120;16357:1;16346:9;16342:17;16329:31;16387:18;16379:6;16376:30;16373:117;;;16409:79;;:::i;:::-;16373:117;16522:79;16593:7;16584:6;16573:9;16569:22;16522:79;:::i;:::-;16504:97;;;;16300:311;16650:2;16676:53;16721:7;16712:6;16701:9;16697:22;16676:53;:::i;:::-;16666:63;;16621:118;16778:2;16804:78;16874:7;16865:6;16854:9;16850:22;16804:78;:::i;:::-;16794:88;;16749:143;16001:898;;;;;;;:::o;16905:109::-;16986:21;17001:5;16986:21;:::i;:::-;16981:3;16974:34;16905:109;;:::o;17020:308::-;17129:4;17167:2;17156:9;17152:18;17144:26;;17180:65;17242:1;17231:9;17227:17;17218:6;17180:65;:::i;:::-;17255:66;17317:2;17306:9;17302:18;17293:6;17255:66;:::i;:::-;17020:308;;;;;:::o;17334:118::-;17421:24;17439:5;17421:24;:::i;:::-;17416:3;17409:37;17334:118;;:::o;17458:222::-;17551:4;17589:2;17578:9;17574:18;17566:26;;17602:71;17670:1;17659:9;17655:17;17646:6;17602:71;:::i;:::-;17458:222;;;;:::o;17686:1043::-;17823:6;17831;17839;17847;17855;17904:3;17892:9;17883:7;17879:23;17875:33;17872:120;;;17911:79;;:::i;:::-;17872:120;18031:1;18056:53;18101:7;18092:6;18081:9;18077:22;18056:53;:::i;:::-;18046:63;;18002:117;18186:2;18175:9;18171:18;18158:32;18217:18;18209:6;18206:30;18203:117;;;18239:79;;:::i;:::-;18203:117;18352:79;18423:7;18414:6;18403:9;18399:22;18352:79;:::i;:::-;18334:97;;;;18129:312;18480:2;18506:53;18551:7;18542:6;18531:9;18527:22;18506:53;:::i;:::-;18496:63;;18451:118;18608:2;18634:78;18704:7;18695:6;18684:9;18680:22;18634:78;:::i;:::-;18624:88;;18579:143;17686:1043;;;;;;;;:::o;18735:898::-;18863:6;18871;18879;18887;18936:3;18924:9;18915:7;18911:23;18907:33;18904:120;;;18943:79;;:::i;:::-;18904:120;19063:1;19088:53;19133:7;19124:6;19113:9;19109:22;19088:53;:::i;:::-;19078:63;;19034:117;19218:2;19207:9;19203:18;19190:32;19249:18;19241:6;19238:30;19235:117;;;19271:79;;:::i;:::-;19235:117;19384:79;19455:7;19446:6;19435:9;19431:22;19384:79;:::i;:::-;19366:97;;;;19161:312;19512:2;19538:78;19608:7;19599:6;19588:9;19584:22;19538:78;:::i;:::-;19528:88;;19483:143;18735:898;;;;;;;:::o;19639:111::-;19691:7;19720:24;19738:5;19720:24;:::i;:::-;19709:35;;19639:111;;;:::o;19756:152::-;19844:39;19877:5;19844:39;:::i;:::-;19837:5;19834:50;19824:78;;19898:1;19895;19888:12;19824:78;19756:152;:::o;19914:169::-;19975:5;20013:6;20000:20;19991:29;;20029:48;20071:5;20029:48;:::i;:::-;19914:169;;;;:::o;20089:118::-;20148:7;20177:24;20195:5;20177:24;:::i;:::-;20166:35;;20089:118;;;:::o;20213:166::-;20308:46;20348:5;20308:46;:::i;:::-;20301:5;20298:57;20288:85;;20369:1;20366;20359:12;20288:85;20213:166;:::o;20385:183::-;20453:5;20491:6;20478:20;20469:29;;20507:55;20556:5;20507:55;:::i;:::-;20385:183;;;;:::o;20574:117::-;20632:7;20661:24;20679:5;20661:24;:::i;:::-;20650:35;;20574:117;;;:::o;20697:164::-;20791:45;20830:5;20791:45;:::i;:::-;20784:5;20781:56;20771:84;;20851:1;20848;20841:12;20771:84;20697:164;:::o;20867:181::-;20934:5;20972:6;20959:20;20950:29;;20988:54;21036:5;20988:54;:::i;:::-;20867:181;;;;:::o;21054:112::-;21107:7;21136:24;21154:5;21136:24;:::i;:::-;21125:35;;21054:112;;;:::o;21172:154::-;21261:40;21295:5;21261:40;:::i;:::-;21254:5;21251:51;21241:79;;21316:1;21313;21306:12;21241:79;21172:154;:::o;21332:171::-;21394:5;21432:6;21419:20;21410:29;;21448:49;21491:5;21448:49;:::i;:::-;21332:171;;;;:::o;21509:114::-;21564:7;21593:24;21611:5;21593:24;:::i;:::-;21582:35;;21509:114;;;:::o;21629:158::-;21720:42;21756:5;21720:42;:::i;:::-;21713:5;21710:53;21700:81;;21777:1;21774;21767:12;21700:81;21629:158;:::o;21793:175::-;21857:5;21895:6;21882:20;21873:29;;21911:51;21956:5;21911:51;:::i;:::-;21793:175;;;;:::o;21974:1963::-;22210:6;22218;22226;22234;22242;22250;22258;22266;22274;22282;22290:7;22340:3;22328:9;22319:7;22315:23;22311:33;22308:120;;;22347:79;;:::i;:::-;22308:120;22467:1;22492:68;22552:7;22543:6;22532:9;22528:22;22492:68;:::i;:::-;22482:78;;22438:132;22609:2;22635:75;22702:7;22693:6;22682:9;22678:22;22635:75;:::i;:::-;22625:85;;22580:140;22759:2;22785:74;22851:7;22842:6;22831:9;22827:22;22785:74;:::i;:::-;22775:84;;22730:139;22908:2;22934:69;22995:7;22986:6;22975:9;22971:22;22934:69;:::i;:::-;22924:79;;22879:134;23052:3;23079:71;23142:7;23133:6;23122:9;23118:22;23079:71;:::i;:::-;23069:81;;23023:137;23199:3;23226:52;23270:7;23261:6;23250:9;23246:22;23226:52;:::i;:::-;23216:62;;23170:118;23327:3;23354:53;23399:7;23390:6;23379:9;23375:22;23354:53;:::i;:::-;23344:63;;23298:119;23456:3;23483:52;23527:7;23518:6;23507:9;23503:22;23483:52;:::i;:::-;23473:62;;23427:118;23584:3;23611:52;23655:7;23646:6;23635:9;23631:22;23611:52;:::i;:::-;23601:62;;23555:118;23712:3;23739:52;23783:7;23774:6;23763:9;23759:22;23739:52;:::i;:::-;23729:62;;23683:118;23840:3;23868:52;23912:7;23903:6;23892:9;23888:22;23868:52;:::i;:::-;23857:63;;23811:119;21974:1963;;;;;;;;;;;;;;:::o;23943:472::-;24010:6;24018;24067:2;24055:9;24046:7;24042:23;24038:32;24035:119;;;24073:79;;:::i;:::-;24035:119;24193:1;24218:52;24262:7;24253:6;24242:9;24238:22;24218:52;:::i;:::-;24208:62;;24164:116;24319:2;24345:53;24390:7;24381:6;24370:9;24366:22;24345:53;:::i;:::-;24335:63;;24290:118;23943:472;;;;;:::o;24421:114::-;24509:1;24502:5;24499:12;24489:40;;24525:1;24522;24515:12;24489:40;24421:114;:::o;24541:169::-;24602:5;24640:6;24627:20;24618:29;;24656:48;24698:5;24656:48;:::i;:::-;24541:169;;;;:::o;24716:504::-;24799:6;24807;24856:2;24844:9;24835:7;24831:23;24827:32;24824:119;;;24862:79;;:::i;:::-;24824:119;24982:1;25007:68;25067:7;25058:6;25047:9;25043:22;25007:68;:::i;:::-;24997:78;;24953:132;25124:2;25150:53;25195:7;25186:6;25175:9;25171:22;25150:53;:::i;:::-;25140:63;;25095:118;24716:504;;;;;:::o;25226:672::-;25305:6;25313;25321;25370:2;25358:9;25349:7;25345:23;25341:32;25338:119;;;25376:79;;:::i;:::-;25338:119;25524:1;25513:9;25509:17;25496:31;25554:18;25546:6;25543:30;25540:117;;;25576:79;;:::i;:::-;25540:117;25689:64;25745:7;25736:6;25725:9;25721:22;25689:64;:::i;:::-;25671:82;;;;25467:296;25802:2;25828:53;25873:7;25864:6;25853:9;25849:22;25828:53;:::i;:::-;25818:63;;25773:118;25226:672;;;;;:::o;25904:115::-;25989:23;26006:5;25989:23;:::i;:::-;25984:3;25977:36;25904:115;;:::o;26025:218::-;26116:4;26154:2;26143:9;26139:18;26131:26;;26167:69;26233:1;26222:9;26218:17;26209:6;26167:69;:::i;:::-;26025:218;;;;:::o;26249:180::-;26297:77;26294:1;26287:88;26394:4;26391:1;26384:15;26418:4;26415:1;26408:15;26435:194;26475:4;26495:20;26513:1;26495:20;:::i;:::-;26490:25;;26529:20;26547:1;26529:20;:::i;:::-;26524:25;;26573:1;26570;26566:9;26558:17;;26597:1;26591:4;26588:11;26585:37;;;26602:18;;:::i;:::-;26585:37;26435:194;;;;:::o;26635:231::-;26775:34;26771:1;26763:6;26759:14;26752:58;26844:14;26839:2;26831:6;26827:15;26820:39;26635:231;:::o;26872:366::-;27014:3;27035:67;27099:2;27094:3;27035:67;:::i;:::-;27028:74;;27111:93;27200:3;27111:93;:::i;:::-;27229:2;27224:3;27220:12;27213:19;;26872:366;;;:::o;27244:419::-;27410:4;27448:2;27437:9;27433:18;27425:26;;27497:9;27491:4;27487:20;27483:1;27472:9;27468:17;27461:47;27525:131;27651:4;27525:131;:::i;:::-;27517:139;;27244:419;;;:::o;27669:231::-;27809:34;27805:1;27797:6;27793:14;27786:58;27878:14;27873:2;27865:6;27861:15;27854:39;27669:231;:::o;27906:366::-;28048:3;28069:67;28133:2;28128:3;28069:67;:::i;:::-;28062:74;;28145:93;28234:3;28145:93;:::i;:::-;28263:2;28258:3;28254:12;28247:19;;27906:366;;;:::o;28278:419::-;28444:4;28482:2;28471:9;28467:18;28459:26;;28531:9;28525:4;28521:20;28517:1;28506:9;28502:17;28495:47;28559:131;28685:4;28559:131;:::i;:::-;28551:139;;28278:419;;;:::o;28703:243::-;28843:34;28839:1;28831:6;28827:14;28820:58;28912:26;28907:2;28899:6;28895:15;28888:51;28703:243;:::o;28952:366::-;29094:3;29115:67;29179:2;29174:3;29115:67;:::i;:::-;29108:74;;29191:93;29280:3;29191:93;:::i;:::-;29309:2;29304:3;29300:12;29293:19;;28952:366;;;:::o;29324:419::-;29490:4;29528:2;29517:9;29513:18;29505:26;;29577:9;29571:4;29567:20;29563:1;29552:9;29548:17;29541:47;29605:131;29731:4;29605:131;:::i;:::-;29597:139;;29324:419;;;:::o;29749:228::-;29889:34;29885:1;29877:6;29873:14;29866:58;29958:11;29953:2;29945:6;29941:15;29934:36;29749:228;:::o;29983:366::-;30125:3;30146:67;30210:2;30205:3;30146:67;:::i;:::-;30139:74;;30222:93;30311:3;30222:93;:::i;:::-;30340:2;30335:3;30331:12;30324:19;;29983:366;;;:::o;30355:419::-;30521:4;30559:2;30548:9;30544:18;30536:26;;30608:9;30602:4;30598:20;30594:1;30583:9;30579:17;30572:47;30636:131;30762:4;30636:131;:::i;:::-;30628:139;;30355:419;;;:::o;30780:233::-;30920:34;30916:1;30908:6;30904:14;30897:58;30989:16;30984:2;30976:6;30972:15;30965:41;30780:233;:::o;31019:366::-;31161:3;31182:67;31246:2;31241:3;31182:67;:::i;:::-;31175:74;;31258:93;31347:3;31258:93;:::i;:::-;31376:2;31371:3;31367:12;31360:19;;31019:366;;;:::o;31391:419::-;31557:4;31595:2;31584:9;31580:18;31572:26;;31644:9;31638:4;31634:20;31630:1;31619:9;31615:17;31608:47;31672:131;31798:4;31672:131;:::i;:::-;31664:139;;31391:419;;;:::o;31816:85::-;31861:7;31890:5;31879:16;;31816:85;;;:::o;31907:86::-;31942:7;31982:4;31975:5;31971:16;31960:27;;31907:86;;;:::o;31999:60::-;32027:3;32048:5;32041:12;;31999:60;;;:::o;32065:154::-;32121:9;32154:59;32170:42;32179:32;32205:5;32179:32;:::i;:::-;32170:42;:::i;:::-;32154:59;:::i;:::-;32141:72;;32065:154;;;:::o;32225:143::-;32318:43;32355:5;32318:43;:::i;:::-;32313:3;32306:56;32225:143;;:::o;32374:234::-;32473:4;32511:2;32500:9;32496:18;32488:26;;32524:77;32598:1;32587:9;32583:17;32574:6;32524:77;:::i;:::-;32374:234;;;;:::o;32614:182::-;32754:34;32750:1;32742:6;32738:14;32731:58;32614:182;:::o;32802:366::-;32944:3;32965:67;33029:2;33024:3;32965:67;:::i;:::-;32958:74;;33041:93;33130:3;33041:93;:::i;:::-;33159:2;33154:3;33150:12;33143:19;;32802:366;;;:::o;33174:419::-;33340:4;33378:2;33367:9;33363:18;33355:26;;33427:9;33421:4;33417:20;33413:1;33402:9;33398:17;33391:47;33455:131;33581:4;33455:131;:::i;:::-;33447:139;;33174:419;;;:::o;33599:122::-;33672:24;33690:5;33672:24;:::i;:::-;33665:5;33662:35;33652:63;;33711:1;33708;33701:12;33652:63;33599:122;:::o;33727:143::-;33784:5;33815:6;33809:13;33800:22;;33831:33;33858:5;33831:33;:::i;:::-;33727:143;;;;:::o;33876:351::-;33946:6;33995:2;33983:9;33974:7;33970:23;33966:32;33963:119;;;34001:79;;:::i;:::-;33963:119;34121:1;34146:64;34202:7;34193:6;34182:9;34178:22;34146:64;:::i;:::-;34136:74;;34092:128;33876:351;;;;:::o;34233:233::-;34373:34;34369:1;34361:6;34357:14;34350:58;34442:16;34437:2;34429:6;34425:15;34418:41;34233:233;:::o;34472:366::-;34614:3;34635:67;34699:2;34694:3;34635:67;:::i;:::-;34628:74;;34711:93;34800:3;34711:93;:::i;:::-;34829:2;34824:3;34820:12;34813:19;;34472:366;;;:::o;34844:419::-;35010:4;35048:2;35037:9;35033:18;35025:26;;35097:9;35091:4;35087:20;35083:1;35072:9;35068:17;35061:47;35125:131;35251:4;35125:131;:::i;:::-;35117:139;;34844:419;;;:::o;35269:228::-;35409:34;35405:1;35397:6;35393:14;35386:58;35478:11;35473:2;35465:6;35461:15;35454:36;35269:228;:::o;35503:366::-;35645:3;35666:67;35730:2;35725:3;35666:67;:::i;:::-;35659:74;;35742:93;35831:3;35742:93;:::i;:::-;35860:2;35855:3;35851:12;35844:19;;35503:366;;;:::o;35875:419::-;36041:4;36079:2;36068:9;36064:18;36056:26;;36128:9;36122:4;36118:20;36114:1;36103:9;36099:17;36092:47;36156:131;36282:4;36156:131;:::i;:::-;36148:139;;35875:419;;;:::o;36300:230::-;36440:34;36436:1;36428:6;36424:14;36417:58;36509:13;36504:2;36496:6;36492:15;36485:38;36300:230;:::o;36536:366::-;36678:3;36699:67;36763:2;36758:3;36699:67;:::i;:::-;36692:74;;36775:93;36864:3;36775:93;:::i;:::-;36893:2;36888:3;36884:12;36877:19;;36536:366;;;:::o;36908:419::-;37074:4;37112:2;37101:9;37097:18;37089:26;;37161:9;37155:4;37151:20;37147:1;37136:9;37132:17;37125:47;37189:131;37315:4;37189:131;:::i;:::-;37181:139;;36908:419;;;:::o;37333:232::-;37473:34;37469:1;37461:6;37457:14;37450:58;37542:15;37537:2;37529:6;37525:15;37518:40;37333:232;:::o;37571:366::-;37713:3;37734:67;37798:2;37793:3;37734:67;:::i;:::-;37727:74;;37810:93;37899:3;37810:93;:::i;:::-;37928:2;37923:3;37919:12;37912:19;;37571:366;;;:::o;37943:419::-;38109:4;38147:2;38136:9;38132:18;38124:26;;38196:9;38190:4;38186:20;38182:1;38171:9;38167:17;38160:47;38224:131;38350:4;38224:131;:::i;:::-;38216:139;;37943:419;;;:::o;38368:410::-;38408:7;38431:20;38449:1;38431:20;:::i;:::-;38426:25;;38465:20;38483:1;38465:20;:::i;:::-;38460:25;;38520:1;38517;38513:9;38542:30;38560:11;38542:30;:::i;:::-;38531:41;;38721:1;38712:7;38708:15;38705:1;38702:22;38682:1;38675:9;38655:83;38632:139;;38751:18;;:::i;:::-;38632:139;38416:362;38368:410;;;;:::o;38784:168::-;38924:20;38920:1;38912:6;38908:14;38901:44;38784:168;:::o;38958:366::-;39100:3;39121:67;39185:2;39180:3;39121:67;:::i;:::-;39114:74;;39197:93;39286:3;39197:93;:::i;:::-;39315:2;39310:3;39306:12;39299:19;;38958:366;;;:::o;39330:419::-;39496:4;39534:2;39523:9;39519:18;39511:26;;39583:9;39577:4;39573:20;39569:1;39558:9;39554:17;39547:47;39611:131;39737:4;39611:131;:::i;:::-;39603:139;;39330:419;;;:::o;39755:180::-;39803:77;39800:1;39793:88;39900:4;39897:1;39890:15;39924:4;39921:1;39914:15;39941:185;39981:1;39998:20;40016:1;39998:20;:::i;:::-;39993:25;;40032:20;40050:1;40032:20;:::i;:::-;40027:25;;40071:1;40061:35;;40076:18;;:::i;:::-;40061:35;40118:1;40115;40111:9;40106:14;;39941:185;;;;:::o;40132:176::-;40164:1;40181:20;40199:1;40181:20;:::i;:::-;40176:25;;40215:20;40233:1;40215:20;:::i;:::-;40210:25;;40254:1;40244:35;;40259:18;;:::i;:::-;40244:35;40300:1;40297;40293:9;40288:14;;40132:176;;;;:::o;40314:172::-;40454:24;40450:1;40442:6;40438:14;40431:48;40314:172;:::o;40492:366::-;40634:3;40655:67;40719:2;40714:3;40655:67;:::i;:::-;40648:74;;40731:93;40820:3;40731:93;:::i;:::-;40849:2;40844:3;40840:12;40833:19;;40492:366;;;:::o;40864:419::-;41030:4;41068:2;41057:9;41053:18;41045:26;;41117:9;41111:4;41107:20;41103:1;41092:9;41088:17;41081:47;41145:131;41271:4;41145:131;:::i;:::-;41137:139;;40864:419;;;:::o;41289:98::-;41340:6;41374:5;41368:12;41358:22;;41289:98;;;:::o;41393:147::-;41494:11;41531:3;41516:18;;41393:147;;;;:::o;41546:386::-;41650:3;41678:38;41710:5;41678:38;:::i;:::-;41732:88;41813:6;41808:3;41732:88;:::i;:::-;41725:95;;41829:65;41887:6;41882:3;41875:4;41868:5;41864:16;41829:65;:::i;:::-;41919:6;41914:3;41910:16;41903:23;;41654:278;41546:386;;;;:::o;41938:271::-;42068:3;42090:93;42179:3;42170:6;42090:93;:::i;:::-;42083:100;;42200:3;42193:10;;41938:271;;;;:::o;42215:179::-;42355:31;42351:1;42343:6;42339:14;42332:55;42215:179;:::o;42400:366::-;42542:3;42563:67;42627:2;42622:3;42563:67;:::i;:::-;42556:74;;42639:93;42728:3;42639:93;:::i;:::-;42757:2;42752:3;42748:12;42741:19;;42400:366;;;:::o;42772:419::-;42938:4;42976:2;42965:9;42961:18;42953:26;;43025:9;43019:4;43015:20;43011:1;43000:9;42996:17;42989:47;43053:131;43179:4;43053:131;:::i;:::-;43045:139;;42772:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getRegisterAuth\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"contractISSVOperators\",\"name\":\"ssvOperators_\",\"type\":\"address\"},{\"internalType\":\"contractISSVClusters\",\"name\":\"ssvClusters_\",\"type\":\"address\"},{\"internalType\":\"contractISSVDAO\",\"name\":\"ssvDAO_\",\"type\":\"address\"},{\"internalType\":\"contractISSVViews\",\"name\":\"ssvViews_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minimumBlocksBeforeLiquidation_\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"minimumLiquidationCollateral_\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorsPerOperatorLimit_\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease_\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"setFeeRecipientAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authOperator\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidator\",\"type\":\"bool\"}],\"name\":\"setRegisterAuth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"updateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b62000205565b600060019054906101000a900460ff1615620000ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a590620001a8565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff16146200011f5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001169190620001e8565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200019060278362000121565b91506200019d8262000132565b604082019050919050565b60006020820190508181036000830152620001c38162000181565b9050919050565b600060ff82169050919050565b620001e281620001ca565b82525050565b6000602082019050620001ff6000830184620001d7565b92915050565b6080516142466200024b60003960008181610d0601528181610d9401528181610fab01528181611039015281816110e9015281816117e2015261187001526142466000f3fe60806040526004361061021e5760003560e01c80637398ca6c11610123578063c626c3c6116100ab578063e39c67441161006f578063e39c6744146107a3578063e3e324b0146107cc578063eb608022146107f5578063f2fde38b1461081e578063ff212c5c146108475761021f565b8063c626c3c6146106d4578063c90a7eab146106fd578063d223174114610726578063dbcdc2cc1461074f578063e30c3978146107785761021f565b80638da5cb5b116100f25780638da5cb5b14610605578063b317c35f14610630578063b4c9c40814610659578063bc26e7e514610682578063bf0f2fb2146106ab5761021f565b80637398ca6c1461055e57806379ba50971461059c57806379e3e4e4146105b35780638932cee0146105dc5761021f565b80633659cfe6116101a657806352d1902d1161017557806352d1902d146104a15780635fec6dd0146104cc5780636512447d146104f5578063686e682c1461051e578063715018a6146105475761021f565b80633659cfe61461040a5780633ed00469146104335780634bc93b641461045c5780634f1ef286146104855761021f565b80631f1f9fd5116101ed5780631f1f9fd51461033d57806323d68a6d146103665780632e168e0e1461038f57806335f63767146103b85780633631983f146103e15761021f565b806306e8fb9c146102975780630d8e6e2c146102c057806312b3fc19146102eb578063190d82e4146103145761021f565b5b34801561022b57600080fd5b50610295610237610884565b600301600060038081111561024f5761024e612afd565b5b600381111561026157610260612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b005b3480156102a357600080fd5b506102be60048036038101906102b99190612e6f565b6108e6565b005b3480156102cc57600080fd5b506102d56109e8565b6040516102e29190612fc7565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061303f565b6109f7565b005b34801561032057600080fd5b5061033b600480360381019061033691906130d4565b610a68565b005b34801561034957600080fd5b50610364600480360381019061035f9190613114565b610ad5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613141565b610b4a565b005b34801561039b57600080fd5b506103b660048036038101906103b19190613141565b610bb6565b005b3480156103c457600080fd5b506103df60048036038101906103da91906130d4565b610c22565b005b3480156103ed57600080fd5b5061040860048036038101906104039190613141565b610c8f565b005b34801561041657600080fd5b50610431600480360381019061042c91906131cc565b610d04565b005b34801561043f57600080fd5b5061045a600480360381019061045591906131f9565b610e8c565b005b34801561046857600080fd5b50610483600480360381019061047e9190613141565b610f3d565b005b61049f600480360381019061049a9190613301565b610fa9565b005b3480156104ad57600080fd5b506104b66110e5565b6040516104c39190613376565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613391565b61119e565b005b34801561050157600080fd5b5061051c60048036038101906105179190613141565b61120e565b005b34801561052a57600080fd5b5061054560048036038101906105409190613391565b611283565b005b34801561055357600080fd5b5061055c6112f3565b005b34801561056a57600080fd5b50610585600480360381019061058091906131cc565b611307565b604051610593929190613414565b60405180910390f35b3480156105a857600080fd5b506105b16113ab565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613141565b611438565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190613141565b6114ad565b005b34801561061157600080fd5b5061061a611519565b604051610627919061344c565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906130d4565b611543565b005b34801561066557600080fd5b50610680600480360381019061067b9190613114565b6115b0565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613467565b611625565b005b3480156106b757600080fd5b506106d260048036038101906106cd91906134f0565b611696565b005b3480156106e057600080fd5b506106fb60048036038101906106f6919061369a565b611706565b005b34801561070957600080fd5b50610724600480360381019061071f919061378e565b61198d565b005b34801561073257600080fd5b5061074d60048036038101906107489190613114565b6119fa565b005b34801561075b57600080fd5b50610776600480360381019061077191906131cc565b611a6f565b005b34801561078457600080fd5b5061078d611ac0565b60405161079a919061344c565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613141565b611aea565b005b3480156107d857600080fd5b506107f360048036038101906107ee91906137f3565b611b5f565b005b34801561080157600080fd5b5061081c60048036038101906108179190613141565b611b75565b005b34801561082a57600080fd5b50610845600480360381019061084091906131cc565b611bea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613833565b611c97565b60405161087b91906138a2565b60405180910390f35b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6108b791906138ec565b90508091505090565b3660008037600080366000845af43d6000803e80600081146108e1573d6000f35b3d6000fd5b6108ee611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16610975576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109df610980610884565b60030160006001600381111561099957610998612afd565b5b60038111156109ab576109aa612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050505050565b60606109f2611dd4565b905090565b610a61610a02610884565b600301600060016003811115610a1b57610a1a612afd565b5b6003811115610a2d57610a2c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b610ad1610a73610884565b6003016000806003811115610a8b57610a8a612afd565b5b6003811115610a9d57610a9c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610add611e11565b610b47610ae8610884565b600301600060026003811115610b0157610b00612afd565b5b6003811115610b1357610b12612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610bb3610b55610884565b6003016000806003811115610b6d57610b6c612afd565b5b6003811115610b7f57610b7e612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c1f610bc1610884565b6003016000806003811115610bd957610bd8612afd565b5b6003811115610beb57610bea612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c8b610c2d610884565b6003016000806003811115610c4557610c44612afd565b5b6003811115610c5757610c56612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610c97611e11565b610d01610ca2610884565b600301600060026003811115610cbb57610cba612afd565b5b6003811115610ccd57610ccc612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dd1611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90613a24565b60405180910390fd5b610e3081611ee6565b610e8981600067ffffffffffffffff811115610e4f57610e4e612bb6565b5b6040519080825280601f01601f191660200182016040528015610e815781602001600182028036833780820191505090505b506000611ef1565b50565b610e94611e11565b60405180604001604052808315158152602001821515815250610eb5611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050505050565b610fa6610f48610884565b6003016000806003811115610f6057610f5f612afd565b5b6003811115610f7257610f71612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611076611e8f565b73ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390613a24565b60405180910390fd5b6110d582611ee6565b6110e182826001611ef1565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613ab6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6112086111a9610884565b6003016000600160038111156111c2576111c1612afd565b5b60038111156111d4576111d3612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b611216611e11565b611280611221610884565b60030160006002600381111561123a57611239612afd565b5b600381111561124c5761124b612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6112ed61128e610884565b6003016000600160038111156112a7576112a6612afd565b5b60038111156112b9576112b8612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b6112fb611e11565b611305600061205f565b565b6000806000611314611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60006113b5612090565b90508073ffffffffffffffffffffffffffffffffffffffff166113d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613b48565b60405180910390fd5b6114358161205f565b50565b611440611e11565b6114aa61144b610884565b60030160006002600381111561146457611463612afd565b5b600381111561147657611475612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6115166114b8610884565b60030160008060038111156114d0576114cf612afd565b5b60038111156114e2576114e1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115ac61154e610884565b600301600080600381111561156657611565612afd565b5b600381111561157857611577612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b6115b8611e11565b6116226115c3610884565b6003016000600260038111156115dc576115db612afd565b5b60038111156115ee576115ed612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b61168f611630610884565b60030160006001600381111561164957611648612afd565b5b600381111561165b5761165a612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b6117006116a1610884565b6003016000600160038111156116ba576116b9612afd565b5b60038111156116cc576116cb612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b60008060019054906101000a900460ff161590508080156117375750600160008054906101000a900460ff1660ff16105b80611764575061174630612098565b1580156117635750600160008054906101000a900460ff1660ff16145b5b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613bda565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117e0576001600060016101000a81548160ff0219169083151502179055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff160361186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118ad611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613a24565b60405180910390fd5b61190b6120bb565b61191361210c565b6119268c8c8c8c8c8c8c8c8c8c8c61216d565b801561197f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119769190613c4c565b60405180910390a15b505050505050505050505050565b6119f6611998610884565b60030160008060038111156119b0576119af612afd565b5b60038111156119c2576119c1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b611a02611e11565b611a6c611a0d610884565b600301600060026003811115611a2657611a25612afd565b5b6003811115611a3857611a37612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b3373ffffffffffffffffffffffffffffffffffffffff167f259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec354882604051611ab5919061344c565b60405180910390a250565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611af2611e11565b611b5c611afd610884565b600301600060026003811115611b1657611b15612afd565b5b6003811115611b2857611b27612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611b67611e11565b611b71828261250a565b5050565b611b7d611e11565b611be7611b88610884565b600301600060026003811115611ba157611ba0612afd565b5b6003811115611bb357611bb2612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611bf2611e11565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611c52611519565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ca1611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611d28576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d91611d33610884565b6003016000806003811115611d4b57611d4a612afd565b5b6003811115611d5d57611d5c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b9392505050565b60008060017f196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb23960001c611dcb91906138ec565b90508091505090565b60606040518060400160405280600a81526020017f76312e302e302e72633300000000000000000000000000000000000000000000815250905090565b611e19612090565b73ffffffffffffffffffffffffffffffffffffffff16611e37611519565b73ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613cb3565b60405180910390fd5b565b6000611ebd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eee611e11565b50565b611f1d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612620565b60000160009054906101000a900460ff1615611f4157611f3c8361262a565b61205a565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa957506040513d601f19601f82011682018060405250810190611fa69190613cff565b60015b611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613d9e565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461204d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204490613e30565b60405180910390fd5b506120598383836126e3565b5b505050565b60c960006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561208d8161270f565b50565b600033905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190613ec2565b60405180910390fd5b565b600060019054906101000a900460ff1661215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ec2565b60405180910390fd5b61216b612166612090565b61205f565b565b600060019054906101000a900460ff166121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b390613ec2565b60405180910390fd5b60006121c6610884565b905060006121d26127d5565b90508c8260070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b82600301600080600381111561223157612230612afd565b5b600381111561224357612242612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a826003016000600160038111156122aa576122a9612afd565b5b60038111156122bc576122bb612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898260030160006002600381111561232357612322612afd565b5b600381111561233557612334612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508882600301600060038081111561239b5761239a612afd565b5b60038111156123ad576123ac612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061242d87612811565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508581600001600c6101000a81548163ffffffff021916908363ffffffff160217905550848160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050505050505050505050565b6125138161288b565b612549576040517f8f9195fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80612552610884565b600301600084600381111561256a57612569612afd565b5b600381111561257c5761257b612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038111156125db576125da612afd565b5b7ffdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d78260405161260a919061344c565b60405180910390a25050565b6000819050919050565b6000819050919050565b61263381612098565b612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613f54565b60405180910390fd5b8061269f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126ec836128dc565b6000825111806126f95750805b1561270a57612708838361292b565b505b505050565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61280891906138ec565b90508091505090565b6000629896806801000000000000000061282b9190613f74565b82111561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614002565b60405180910390fd5b6298968061287a83612958565b6128849190614051565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c957600090506128d7565b6000823b9050600081119150505b919050565b6128e58161262a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061295083836040518060600160405280602781526020016141ea602791396129b2565b905092915050565b600080629896808361296a9190614082565b146129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a1906140ff565b60405180910390fd5b819050919050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129dc9190614166565b600060405180830381855af49150503d8060008114612a17576040519150601f19603f3d011682016040523d82523d6000602084013e612a1c565b606091505b5091509150612a2d86838387612a38565b925050509392505050565b60608315612a9a576000835103612a9257612a5285612098565b612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906141c9565b60405180910390fd5b5b829050612aa5565b612aa48383612aad565b5b949350505050565b600082511115612ac05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af49190612fc7565b60405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b6557612b64612b40565b5b8235905067ffffffffffffffff811115612b8257612b81612b45565b5b602083019150836001820283011115612b9e57612b9d612b4a565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bee82612ba5565b810181811067ffffffffffffffff82111715612c0d57612c0c612bb6565b5b80604052505050565b6000612c20612b2c565b9050612c2c8282612be5565b919050565b600067ffffffffffffffff821115612c4c57612c4b612bb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612c7a81612c5d565b8114612c8557600080fd5b50565b600081359050612c9781612c71565b92915050565b6000612cb0612cab84612c31565b612c16565b90508083825260208201905060208402830185811115612cd357612cd2612b4a565b5b835b81811015612cfc5780612ce88882612c88565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612b40565b5b8135612d2b848260208601612c9d565b91505092915050565b6000819050919050565b612d4781612d34565b8114612d5257600080fd5b50565b600081359050612d6481612d3e565b92915050565b600080fd5b600063ffffffff82169050919050565b612d8881612d6f565b8114612d9357600080fd5b50565b600081359050612da581612d7f565b92915050565b60008115159050919050565b612dc081612dab565b8114612dcb57600080fd5b50565b600081359050612ddd81612db7565b92915050565b600060a08284031215612df957612df8612d6a565b5b612e0360a0612c16565b90506000612e1384828501612d96565b6000830152506020612e2784828501612c88565b6020830152506040612e3b84828501612c88565b6040830152506060612e4f84828501612dce565b6060830152506080612e6384828501612d55565b60808301525092915050565b6000806000806000806000610120888a031215612e8f57612e8e612b36565b5b600088013567ffffffffffffffff811115612ead57612eac612b3b565b5b612eb98a828b01612b4f565b9750975050602088013567ffffffffffffffff811115612edc57612edb612b3b565b5b612ee88a828b01612d06565b955050604088013567ffffffffffffffff811115612f0957612f08612b3b565b5b612f158a828b01612b4f565b94509450506060612f288a828b01612d55565b9250506080612f398a828b01612de3565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f82578082015181840152602081019050612f67565b60008484015250505050565b6000612f9982612f48565b612fa38185612f53565b9350612fb3818560208601612f64565b612fbc81612ba5565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b60008083601f840112612fff57612ffe612b40565b5b8235905067ffffffffffffffff81111561301c5761301b612b45565b5b60208301915083602082028301111561303857613037612b4a565b5b9250929050565b600080600080600060e0868803121561305b5761305a612b36565b5b600086013567ffffffffffffffff81111561307957613078612b3b565b5b61308588828901612b4f565b9550955050602086013567ffffffffffffffff8111156130a8576130a7612b3b565b5b6130b488828901612fe9565b935093505060406130c788828901612de3565b9150509295509295909350565b600080604083850312156130eb576130ea612b36565b5b60006130f985828601612c88565b925050602061310a85828601612d55565b9150509250929050565b60006020828403121561312a57613129612b36565b5b600061313884828501612d55565b91505092915050565b60006020828403121561315757613156612b36565b5b600061316584828501612c88565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131998261316e565b9050919050565b6131a98161318e565b81146131b457600080fd5b50565b6000813590506131c6816131a0565b92915050565b6000602082840312156131e2576131e1612b36565b5b60006131f0848285016131b7565b91505092915050565b60008060006060848603121561321257613211612b36565b5b6000613220868287016131b7565b935050602061323186828701612dce565b925050604061324286828701612dce565b9150509250925092565b600080fd5b600067ffffffffffffffff82111561326c5761326b612bb6565b5b61327582612ba5565b9050602081019050919050565b82818337600083830152505050565b60006132a461329f84613251565b612c16565b9050828152602081018484840111156132c0576132bf61324c565b5b6132cb848285613282565b509392505050565b600082601f8301126132e8576132e7612b40565b5b81356132f8848260208601613291565b91505092915050565b6000806040838503121561331857613317612b36565b5b6000613326858286016131b7565b925050602083013567ffffffffffffffff81111561334757613346612b3b565b5b613353858286016132d3565b9150509250929050565b6000819050919050565b6133708161335d565b82525050565b600060208201905061338b6000830184613367565b92915050565b60008060008060e085870312156133ab576133aa612b36565b5b600085013567ffffffffffffffff8111156133c9576133c8612b3b565b5b6133d587828801612fe9565b945094505060206133e887828801612d55565b92505060406133f987828801612de3565b91505092959194509250565b61340e81612dab565b82525050565b60006040820190506134296000830185613405565b6134366020830184613405565b9392505050565b6134468161318e565b82525050565b6000602082019050613461600083018461343d565b92915050565b6000806000806000610100868803121561348457613483612b36565b5b6000613492888289016131b7565b955050602086013567ffffffffffffffff8111156134b3576134b2612b3b565b5b6134bf88828901612fe9565b945094505060406134d288828901612d55565b92505060606134e388828901612de3565b9150509295509295909350565b60008060008060e0858703121561350a57613509612b36565b5b6000613518878288016131b7565b945050602085013567ffffffffffffffff81111561353957613538612b3b565b5b61354587828801612fe9565b9350935050604061355887828801612de3565b91505092959194509250565b600061356f8261318e565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b60006135ad8261318e565b9050919050565b6135bd816135a2565b81146135c857600080fd5b50565b6000813590506135da816135b4565b92915050565b60006135eb8261318e565b9050919050565b6135fb816135e0565b811461360657600080fd5b50565b600081359050613618816135f2565b92915050565b60006136298261318e565b9050919050565b6136398161361e565b811461364457600080fd5b50565b60008135905061365681613630565b92915050565b60006136678261318e565b9050919050565b6136778161365c565b811461368257600080fd5b50565b6000813590506136948161366e565b92915050565b60008060008060008060008060008060006101608c8e0312156136c0576136bf612b36565b5b60006136ce8e828f0161358d565b9b505060206136df8e828f016135cb565b9a505060406136f08e828f01613609565b99505060606137018e828f01613647565b98505060806137128e828f01613685565b97505060a06137238e828f01612c88565b96505060c06137348e828f01612d55565b95505060e06137458e828f01612d96565b9450506101006137578e828f01612c88565b9350506101206137698e828f01612c88565b92505061014061377b8e828f01612c88565b9150509295989b509295989b9093969950565b600080604083850312156137a5576137a4612b36565b5b60006137b385828601612c88565b92505060206137c4858286016131b7565b9150509250929050565b600481106137db57600080fd5b50565b6000813590506137ed816137ce565b92915050565b6000806040838503121561380a57613809612b36565b5b6000613818858286016137de565b9250506020613829858286016131b7565b9150509250929050565b60008060006040848603121561384c5761384b612b36565b5b600084013567ffffffffffffffff81111561386a57613869612b3b565b5b61387686828701612b4f565b9350935050602061388986828701612d55565b9150509250925092565b61389c81612c5d565b82525050565b60006020820190506138b76000830184613893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138f782612d34565b915061390283612d34565b925082820390508181111561391a576139196138bd565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061397c602c83612f53565b915061398782613920565b604082019050919050565b600060208201905081810360008301526139ab8161396f565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000613a0e602c83612f53565b9150613a19826139b2565b604082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000613aa0603883612f53565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613b32602983612f53565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613bc4602e83612f53565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613c36613c31613c2c84613bfa565b613c11565b613c04565b9050919050565b613c4681613c1b565b82525050565b6000602082019050613c616000830184613c3d565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c9d602083612f53565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b613cdc8161335d565b8114613ce757600080fd5b50565b600081519050613cf981613cd3565b92915050565b600060208284031215613d1557613d14612b36565b5b6000613d2384828501613cea565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000613d88602e83612f53565b9150613d9382613d2c565b604082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000613e1a602983612f53565b9150613e2582613dbe565b604082019050919050565b60006020820190508181036000830152613e4981613e0d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613eac602b83612f53565b9150613eb782613e50565b604082019050919050565b60006020820190508181036000830152613edb81613e9f565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000613f3e602d83612f53565b9150613f4982613ee2565b604082019050919050565b60006020820190508181036000830152613f6d81613f31565b9050919050565b6000613f7f82612d34565b9150613f8a83612d34565b9250828202613f9881612d34565b91508282048414831517613faf57613fae6138bd565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613fec601283612f53565b9150613ff782613fb6565b602082019050919050565b6000602082019050818103600083015261401b81613fdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061405c82612d34565b915061406783612d34565b92508261407757614076614022565b5b828204905092915050565b600061408d82612d34565b915061409883612d34565b9250826140a8576140a7614022565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006140e9601683612f53565b91506140f4826140b3565b602082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b600081519050919050565b600081905092915050565b60006141408261411f565b61414a818561412a565b935061415a818560208601612f64565b80840191505092915050565b60006141728284614135565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141b3601d83612f53565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7e14f45da3802ec1a83d88da4602032051b9292ec9784a5e68b358b4e3754a564736f6c63430008120033", "bin-runtime": "60806040526004361061021e5760003560e01c80637398ca6c11610123578063c626c3c6116100ab578063e39c67441161006f578063e39c6744146107a3578063e3e324b0146107cc578063eb608022146107f5578063f2fde38b1461081e578063ff212c5c146108475761021f565b8063c626c3c6146106d4578063c90a7eab146106fd578063d223174114610726578063dbcdc2cc1461074f578063e30c3978146107785761021f565b80638da5cb5b116100f25780638da5cb5b14610605578063b317c35f14610630578063b4c9c40814610659578063bc26e7e514610682578063bf0f2fb2146106ab5761021f565b80637398ca6c1461055e57806379ba50971461059c57806379e3e4e4146105b35780638932cee0146105dc5761021f565b80633659cfe6116101a657806352d1902d1161017557806352d1902d146104a15780635fec6dd0146104cc5780636512447d146104f5578063686e682c1461051e578063715018a6146105475761021f565b80633659cfe61461040a5780633ed00469146104335780634bc93b641461045c5780634f1ef286146104855761021f565b80631f1f9fd5116101ed5780631f1f9fd51461033d57806323d68a6d146103665780632e168e0e1461038f57806335f63767146103b85780633631983f146103e15761021f565b806306e8fb9c146102975780630d8e6e2c146102c057806312b3fc19146102eb578063190d82e4146103145761021f565b5b34801561022b57600080fd5b50610295610237610884565b600301600060038081111561024f5761024e612afd565b5b600381111561026157610260612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b005b3480156102a357600080fd5b506102be60048036038101906102b99190612e6f565b6108e6565b005b3480156102cc57600080fd5b506102d56109e8565b6040516102e29190612fc7565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061303f565b6109f7565b005b34801561032057600080fd5b5061033b600480360381019061033691906130d4565b610a68565b005b34801561034957600080fd5b50610364600480360381019061035f9190613114565b610ad5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613141565b610b4a565b005b34801561039b57600080fd5b506103b660048036038101906103b19190613141565b610bb6565b005b3480156103c457600080fd5b506103df60048036038101906103da91906130d4565b610c22565b005b3480156103ed57600080fd5b5061040860048036038101906104039190613141565b610c8f565b005b34801561041657600080fd5b50610431600480360381019061042c91906131cc565b610d04565b005b34801561043f57600080fd5b5061045a600480360381019061045591906131f9565b610e8c565b005b34801561046857600080fd5b50610483600480360381019061047e9190613141565b610f3d565b005b61049f600480360381019061049a9190613301565b610fa9565b005b3480156104ad57600080fd5b506104b66110e5565b6040516104c39190613376565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613391565b61119e565b005b34801561050157600080fd5b5061051c60048036038101906105179190613141565b61120e565b005b34801561052a57600080fd5b5061054560048036038101906105409190613391565b611283565b005b34801561055357600080fd5b5061055c6112f3565b005b34801561056a57600080fd5b50610585600480360381019061058091906131cc565b611307565b604051610593929190613414565b60405180910390f35b3480156105a857600080fd5b506105b16113ab565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613141565b611438565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190613141565b6114ad565b005b34801561061157600080fd5b5061061a611519565b604051610627919061344c565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906130d4565b611543565b005b34801561066557600080fd5b50610680600480360381019061067b9190613114565b6115b0565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613467565b611625565b005b3480156106b757600080fd5b506106d260048036038101906106cd91906134f0565b611696565b005b3480156106e057600080fd5b506106fb60048036038101906106f6919061369a565b611706565b005b34801561070957600080fd5b50610724600480360381019061071f919061378e565b61198d565b005b34801561073257600080fd5b5061074d60048036038101906107489190613114565b6119fa565b005b34801561075b57600080fd5b50610776600480360381019061077191906131cc565b611a6f565b005b34801561078457600080fd5b5061078d611ac0565b60405161079a919061344c565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613141565b611aea565b005b3480156107d857600080fd5b506107f360048036038101906107ee91906137f3565b611b5f565b005b34801561080157600080fd5b5061081c60048036038101906108179190613141565b611b75565b005b34801561082a57600080fd5b50610845600480360381019061084091906131cc565b611bea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613833565b611c97565b60405161087b91906138a2565b60405180910390f35b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6108b791906138ec565b90508091505090565b3660008037600080366000845af43d6000803e80600081146108e1573d6000f35b3d6000fd5b6108ee611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16610975576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109df610980610884565b60030160006001600381111561099957610998612afd565b5b60038111156109ab576109aa612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050505050565b60606109f2611dd4565b905090565b610a61610a02610884565b600301600060016003811115610a1b57610a1a612afd565b5b6003811115610a2d57610a2c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b610ad1610a73610884565b6003016000806003811115610a8b57610a8a612afd565b5b6003811115610a9d57610a9c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610add611e11565b610b47610ae8610884565b600301600060026003811115610b0157610b00612afd565b5b6003811115610b1357610b12612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610bb3610b55610884565b6003016000806003811115610b6d57610b6c612afd565b5b6003811115610b7f57610b7e612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c1f610bc1610884565b6003016000806003811115610bd957610bd8612afd565b5b6003811115610beb57610bea612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c8b610c2d610884565b6003016000806003811115610c4557610c44612afd565b5b6003811115610c5757610c56612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610c97611e11565b610d01610ca2610884565b600301600060026003811115610cbb57610cba612afd565b5b6003811115610ccd57610ccc612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dd1611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90613a24565b60405180910390fd5b610e3081611ee6565b610e8981600067ffffffffffffffff811115610e4f57610e4e612bb6565b5b6040519080825280601f01601f191660200182016040528015610e815781602001600182028036833780820191505090505b506000611ef1565b50565b610e94611e11565b60405180604001604052808315158152602001821515815250610eb5611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050505050565b610fa6610f48610884565b6003016000806003811115610f6057610f5f612afd565b5b6003811115610f7257610f71612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611076611e8f565b73ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390613a24565b60405180910390fd5b6110d582611ee6565b6110e182826001611ef1565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613ab6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6112086111a9610884565b6003016000600160038111156111c2576111c1612afd565b5b60038111156111d4576111d3612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b611216611e11565b611280611221610884565b60030160006002600381111561123a57611239612afd565b5b600381111561124c5761124b612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6112ed61128e610884565b6003016000600160038111156112a7576112a6612afd565b5b60038111156112b9576112b8612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b6112fb611e11565b611305600061205f565b565b6000806000611314611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60006113b5612090565b90508073ffffffffffffffffffffffffffffffffffffffff166113d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613b48565b60405180910390fd5b6114358161205f565b50565b611440611e11565b6114aa61144b610884565b60030160006002600381111561146457611463612afd565b5b600381111561147657611475612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6115166114b8610884565b60030160008060038111156114d0576114cf612afd565b5b60038111156114e2576114e1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115ac61154e610884565b600301600080600381111561156657611565612afd565b5b600381111561157857611577612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b6115b8611e11565b6116226115c3610884565b6003016000600260038111156115dc576115db612afd565b5b60038111156115ee576115ed612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b61168f611630610884565b60030160006001600381111561164957611648612afd565b5b600381111561165b5761165a612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b6117006116a1610884565b6003016000600160038111156116ba576116b9612afd565b5b60038111156116cc576116cb612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b60008060019054906101000a900460ff161590508080156117375750600160008054906101000a900460ff1660ff16105b80611764575061174630612098565b1580156117635750600160008054906101000a900460ff1660ff16145b5b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613bda565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117e0576001600060016101000a81548160ff0219169083151502179055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff160361186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118ad611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613a24565b60405180910390fd5b61190b6120bb565b61191361210c565b6119268c8c8c8c8c8c8c8c8c8c8c61216d565b801561197f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119769190613c4c565b60405180910390a15b505050505050505050505050565b6119f6611998610884565b60030160008060038111156119b0576119af612afd565b5b60038111156119c2576119c1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b611a02611e11565b611a6c611a0d610884565b600301600060026003811115611a2657611a25612afd565b5b6003811115611a3857611a37612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b3373ffffffffffffffffffffffffffffffffffffffff167f259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec354882604051611ab5919061344c565b60405180910390a250565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611af2611e11565b611b5c611afd610884565b600301600060026003811115611b1657611b15612afd565b5b6003811115611b2857611b27612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611b67611e11565b611b71828261250a565b5050565b611b7d611e11565b611be7611b88610884565b600301600060026003811115611ba157611ba0612afd565b5b6003811115611bb357611bb2612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611bf2611e11565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611c52611519565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ca1611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611d28576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d91611d33610884565b6003016000806003811115611d4b57611d4a612afd565b5b6003811115611d5d57611d5c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b9392505050565b60008060017f196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb23960001c611dcb91906138ec565b90508091505090565b60606040518060400160405280600a81526020017f76312e302e302e72633300000000000000000000000000000000000000000000815250905090565b611e19612090565b73ffffffffffffffffffffffffffffffffffffffff16611e37611519565b73ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613cb3565b60405180910390fd5b565b6000611ebd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eee611e11565b50565b611f1d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612620565b60000160009054906101000a900460ff1615611f4157611f3c8361262a565b61205a565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa957506040513d601f19601f82011682018060405250810190611fa69190613cff565b60015b611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613d9e565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461204d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204490613e30565b60405180910390fd5b506120598383836126e3565b5b505050565b60c960006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561208d8161270f565b50565b600033905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190613ec2565b60405180910390fd5b565b600060019054906101000a900460ff1661215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ec2565b60405180910390fd5b61216b612166612090565b61205f565b565b600060019054906101000a900460ff166121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b390613ec2565b60405180910390fd5b60006121c6610884565b905060006121d26127d5565b90508c8260070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b82600301600080600381111561223157612230612afd565b5b600381111561224357612242612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a826003016000600160038111156122aa576122a9612afd565b5b60038111156122bc576122bb612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898260030160006002600381111561232357612322612afd565b5b600381111561233557612334612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508882600301600060038081111561239b5761239a612afd565b5b60038111156123ad576123ac612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061242d87612811565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508581600001600c6101000a81548163ffffffff021916908363ffffffff160217905550848160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050505050505050505050565b6125138161288b565b612549576040517f8f9195fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80612552610884565b600301600084600381111561256a57612569612afd565b5b600381111561257c5761257b612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038111156125db576125da612afd565b5b7ffdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d78260405161260a919061344c565b60405180910390a25050565b6000819050919050565b6000819050919050565b61263381612098565b612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613f54565b60405180910390fd5b8061269f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126ec836128dc565b6000825111806126f95750805b1561270a57612708838361292b565b505b505050565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61280891906138ec565b90508091505090565b6000629896806801000000000000000061282b9190613f74565b82111561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614002565b60405180910390fd5b6298968061287a83612958565b6128849190614051565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c957600090506128d7565b6000823b9050600081119150505b919050565b6128e58161262a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061295083836040518060600160405280602781526020016141ea602791396129b2565b905092915050565b600080629896808361296a9190614082565b146129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a1906140ff565b60405180910390fd5b819050919050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129dc9190614166565b600060405180830381855af49150503d8060008114612a17576040519150601f19603f3d011682016040523d82523d6000602084013e612a1c565b606091505b5091509150612a2d86838387612a38565b925050509392505050565b60608315612a9a576000835103612a9257612a5285612098565b612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906141c9565b60405180910390fd5b5b829050612aa5565b612aa48383612aad565b5b949350505050565b600082511115612ac05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af49190612fc7565b60405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b6557612b64612b40565b5b8235905067ffffffffffffffff811115612b8257612b81612b45565b5b602083019150836001820283011115612b9e57612b9d612b4a565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bee82612ba5565b810181811067ffffffffffffffff82111715612c0d57612c0c612bb6565b5b80604052505050565b6000612c20612b2c565b9050612c2c8282612be5565b919050565b600067ffffffffffffffff821115612c4c57612c4b612bb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612c7a81612c5d565b8114612c8557600080fd5b50565b600081359050612c9781612c71565b92915050565b6000612cb0612cab84612c31565b612c16565b90508083825260208201905060208402830185811115612cd357612cd2612b4a565b5b835b81811015612cfc5780612ce88882612c88565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612b40565b5b8135612d2b848260208601612c9d565b91505092915050565b6000819050919050565b612d4781612d34565b8114612d5257600080fd5b50565b600081359050612d6481612d3e565b92915050565b600080fd5b600063ffffffff82169050919050565b612d8881612d6f565b8114612d9357600080fd5b50565b600081359050612da581612d7f565b92915050565b60008115159050919050565b612dc081612dab565b8114612dcb57600080fd5b50565b600081359050612ddd81612db7565b92915050565b600060a08284031215612df957612df8612d6a565b5b612e0360a0612c16565b90506000612e1384828501612d96565b6000830152506020612e2784828501612c88565b6020830152506040612e3b84828501612c88565b6040830152506060612e4f84828501612dce565b6060830152506080612e6384828501612d55565b60808301525092915050565b6000806000806000806000610120888a031215612e8f57612e8e612b36565b5b600088013567ffffffffffffffff811115612ead57612eac612b3b565b5b612eb98a828b01612b4f565b9750975050602088013567ffffffffffffffff811115612edc57612edb612b3b565b5b612ee88a828b01612d06565b955050604088013567ffffffffffffffff811115612f0957612f08612b3b565b5b612f158a828b01612b4f565b94509450506060612f288a828b01612d55565b9250506080612f398a828b01612de3565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f82578082015181840152602081019050612f67565b60008484015250505050565b6000612f9982612f48565b612fa38185612f53565b9350612fb3818560208601612f64565b612fbc81612ba5565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b60008083601f840112612fff57612ffe612b40565b5b8235905067ffffffffffffffff81111561301c5761301b612b45565b5b60208301915083602082028301111561303857613037612b4a565b5b9250929050565b600080600080600060e0868803121561305b5761305a612b36565b5b600086013567ffffffffffffffff81111561307957613078612b3b565b5b61308588828901612b4f565b9550955050602086013567ffffffffffffffff8111156130a8576130a7612b3b565b5b6130b488828901612fe9565b935093505060406130c788828901612de3565b9150509295509295909350565b600080604083850312156130eb576130ea612b36565b5b60006130f985828601612c88565b925050602061310a85828601612d55565b9150509250929050565b60006020828403121561312a57613129612b36565b5b600061313884828501612d55565b91505092915050565b60006020828403121561315757613156612b36565b5b600061316584828501612c88565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131998261316e565b9050919050565b6131a98161318e565b81146131b457600080fd5b50565b6000813590506131c6816131a0565b92915050565b6000602082840312156131e2576131e1612b36565b5b60006131f0848285016131b7565b91505092915050565b60008060006060848603121561321257613211612b36565b5b6000613220868287016131b7565b935050602061323186828701612dce565b925050604061324286828701612dce565b9150509250925092565b600080fd5b600067ffffffffffffffff82111561326c5761326b612bb6565b5b61327582612ba5565b9050602081019050919050565b82818337600083830152505050565b60006132a461329f84613251565b612c16565b9050828152602081018484840111156132c0576132bf61324c565b5b6132cb848285613282565b509392505050565b600082601f8301126132e8576132e7612b40565b5b81356132f8848260208601613291565b91505092915050565b6000806040838503121561331857613317612b36565b5b6000613326858286016131b7565b925050602083013567ffffffffffffffff81111561334757613346612b3b565b5b613353858286016132d3565b9150509250929050565b6000819050919050565b6133708161335d565b82525050565b600060208201905061338b6000830184613367565b92915050565b60008060008060e085870312156133ab576133aa612b36565b5b600085013567ffffffffffffffff8111156133c9576133c8612b3b565b5b6133d587828801612fe9565b945094505060206133e887828801612d55565b92505060406133f987828801612de3565b91505092959194509250565b61340e81612dab565b82525050565b60006040820190506134296000830185613405565b6134366020830184613405565b9392505050565b6134468161318e565b82525050565b6000602082019050613461600083018461343d565b92915050565b6000806000806000610100868803121561348457613483612b36565b5b6000613492888289016131b7565b955050602086013567ffffffffffffffff8111156134b3576134b2612b3b565b5b6134bf88828901612fe9565b945094505060406134d288828901612d55565b92505060606134e388828901612de3565b9150509295509295909350565b60008060008060e0858703121561350a57613509612b36565b5b6000613518878288016131b7565b945050602085013567ffffffffffffffff81111561353957613538612b3b565b5b61354587828801612fe9565b9350935050604061355887828801612de3565b91505092959194509250565b600061356f8261318e565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b60006135ad8261318e565b9050919050565b6135bd816135a2565b81146135c857600080fd5b50565b6000813590506135da816135b4565b92915050565b60006135eb8261318e565b9050919050565b6135fb816135e0565b811461360657600080fd5b50565b600081359050613618816135f2565b92915050565b60006136298261318e565b9050919050565b6136398161361e565b811461364457600080fd5b50565b60008135905061365681613630565b92915050565b60006136678261318e565b9050919050565b6136778161365c565b811461368257600080fd5b50565b6000813590506136948161366e565b92915050565b60008060008060008060008060008060006101608c8e0312156136c0576136bf612b36565b5b60006136ce8e828f0161358d565b9b505060206136df8e828f016135cb565b9a505060406136f08e828f01613609565b99505060606137018e828f01613647565b98505060806137128e828f01613685565b97505060a06137238e828f01612c88565b96505060c06137348e828f01612d55565b95505060e06137458e828f01612d96565b9450506101006137578e828f01612c88565b9350506101206137698e828f01612c88565b92505061014061377b8e828f01612c88565b9150509295989b509295989b9093969950565b600080604083850312156137a5576137a4612b36565b5b60006137b385828601612c88565b92505060206137c4858286016131b7565b9150509250929050565b600481106137db57600080fd5b50565b6000813590506137ed816137ce565b92915050565b6000806040838503121561380a57613809612b36565b5b6000613818858286016137de565b9250506020613829858286016131b7565b9150509250929050565b60008060006040848603121561384c5761384b612b36565b5b600084013567ffffffffffffffff81111561386a57613869612b3b565b5b61387686828701612b4f565b9350935050602061388986828701612d55565b9150509250925092565b61389c81612c5d565b82525050565b60006020820190506138b76000830184613893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138f782612d34565b915061390283612d34565b925082820390508181111561391a576139196138bd565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061397c602c83612f53565b915061398782613920565b604082019050919050565b600060208201905081810360008301526139ab8161396f565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000613a0e602c83612f53565b9150613a19826139b2565b604082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000613aa0603883612f53565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613b32602983612f53565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613bc4602e83612f53565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613c36613c31613c2c84613bfa565b613c11565b613c04565b9050919050565b613c4681613c1b565b82525050565b6000602082019050613c616000830184613c3d565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c9d602083612f53565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b613cdc8161335d565b8114613ce757600080fd5b50565b600081519050613cf981613cd3565b92915050565b600060208284031215613d1557613d14612b36565b5b6000613d2384828501613cea565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000613d88602e83612f53565b9150613d9382613d2c565b604082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000613e1a602983612f53565b9150613e2582613dbe565b604082019050919050565b60006020820190508181036000830152613e4981613e0d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613eac602b83612f53565b9150613eb782613e50565b604082019050919050565b60006020820190508181036000830152613edb81613e9f565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000613f3e602d83612f53565b9150613f4982613ee2565b604082019050919050565b60006020820190508181036000830152613f6d81613f31565b9050919050565b6000613f7f82612d34565b9150613f8a83612d34565b9250828202613f9881612d34565b91508282048414831517613faf57613fae6138bd565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613fec601283612f53565b9150613ff782613fb6565b602082019050919050565b6000602082019050818103600083015261401b81613fdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061405c82612d34565b915061406783612d34565b92508261407757614076614022565b5b828204905092915050565b600061408d82612d34565b915061409883612d34565b9250826140a8576140a7614022565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006140e9601683612f53565b91506140f4826140b3565b602082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b600081519050919050565b600081905092915050565b60006141408261411f565b61414a818561412a565b935061415a818560208601612f64565b80840191505092915050565b60006141728284614135565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141b3601d83612f53565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7e14f45da3802ec1a83d88da4602032051b9292ec9784a5e68b358b4e3754a564736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"acceptOwnership()": {"author": null, "details": "The new owner accepts the ownership transfer.", "params": {}, "return": null}, "cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "constructor": {"author": null, "details": null, "params": {}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "pendingOwner()": {"author": null, "details": "Returns the address of the pending owner.", "params": {}, "return": null}, "proxiableUUID()": {"author": null, "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.", "params": {}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.", "params": {}, "return": null}, "updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "upgradeTo(address)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "upgradeToAndCall(address,bytes)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol:SSVProxy": {"srcmap": "", "srcmap-runtime": "", "abi": "[]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol:ISSVClusters": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Deposits tokens into a cluster"}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Liquidates a cluster"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Withdraws tokens from a cluster"}}, "notice": null}, "devdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster where the deposit will be made", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster to be liquidated", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster where the withdrawal will be made", "operatorIds": "Array of IDs of operators managing the cluster", "tokenAmount": "Amount of SSV tokens to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol:ISSVNetwork": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getRegisterAuth\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"contractISSVOperators\",\"name\":\"ssvOperators_\",\"type\":\"address\"},{\"internalType\":\"contractISSVClusters\",\"name\":\"ssvClusters_\",\"type\":\"address\"},{\"internalType\":\"contractISSVDAO\",\"name\":\"ssvDAO_\",\"type\":\"address\"},{\"internalType\":\"contractISSVViews\",\"name\":\"ssvViews_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minimumBlocksBeforeLiquidation_\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"minimumLiquidationCollateral_\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorsPerOperatorLimit_\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease_\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipientAddress\",\"type\":\"address\"}],\"name\":\"setFeeRecipientAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"name\":\"setRegisterAuth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"updateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol:ISSVViews": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"getBurnRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationThresholdPeriod\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumOperatorFee\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorMaxFee\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLiquidationCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkEarnings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"networkEarnings\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"networkFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPrivate\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorDeclaredFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isFeeDeclared\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"approvalEndTime\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorEarnings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"earnings\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorFeeIncreaseLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorFeePeriods\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"}],\"name\":\"getValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorsPerOperatorLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"validators\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"isLiquidatable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isLiquidatable\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"isLiquidated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isLiquidated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"getBalance(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Gets the balance of the cluster"}, "getBurnRate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Gets the burn rate of the cluster"}, "getLiquidationThresholdPeriod()": {"notice": "Gets the liquidation threshold period"}, "getMaximumOperatorFee()": {"notice": "Gets the operator maximum fee for operators that use SSV token"}, "getMinimumLiquidationCollateral()": {"notice": "Gets the minimum liquidation collateral"}, "getNetworkEarnings()": {"notice": "Gets the network earnings"}, "getNetworkFee()": {"notice": "Gets the network fee"}, "getOperatorById(uint64)": {"notice": "Gets operator details by ID"}, "getOperatorDeclaredFee(uint64)": {"notice": "Gets the declared operator fee"}, "getOperatorEarnings(uint64)": {"notice": "Gets operator earnings"}, "getOperatorFee(uint64)": {"notice": "Gets the operator fee"}, "getOperatorFeeIncreaseLimit()": {"notice": "Gets the operator fee increase limit"}, "getOperatorFeePeriods()": {"notice": "Gets the periods of operator fee declaration and execution"}, "getValidator(address,bytes)": {"notice": "Gets the validator status"}, "getValidatorsPerOperatorLimit()": {"notice": "Gets the maximum limit of validators per operator"}, "getVersion()": {"notice": "Gets the version of the contract"}, "isLiquidatable(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Checks if the cluster can be liquidated"}, "isLiquidated(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Checks if the cluster is liquidated"}}, "notice": null}, "devdoc": {"methods": {"getBalance(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "getBurnRate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "getLiquidationThresholdPeriod()": {"author": null, "details": null, "params": {}, "return": null}, "getMaximumOperatorFee()": {"author": null, "details": null, "params": {}, "return": null}, "getMinimumLiquidationCollateral()": {"author": null, "details": null, "params": {}, "return": null}, "getNetworkEarnings()": {"author": null, "details": null, "params": {}, "return": null}, "getNetworkFee()": {"author": null, "details": null, "params": {}, "return": null}, "getOperatorById(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorDeclaredFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorFeeIncreaseLimit()": {"author": null, "details": null, "params": {}, "return": null}, "getOperatorFeePeriods()": {"author": null, "details": null, "params": {}, "return": null}, "getValidator(address,bytes)": {"author": null, "details": null, "params": {"owner": "The address of the validator's owner", "publicKey": "The public key of the validator"}, "return": null}, "getValidatorsPerOperatorLimit()": {"author": null, "details": null, "params": {}, "return": null}, "getVersion()": {"author": null, "details": null, "params": {}, "return": null}, "isLiquidatable(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "isLiquidated(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:8:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol:RegisterAuth": {"srcmap": "151:397:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "151:397:9:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220163b68b6a0567de8ca032e27a22fa4d199f8607f093f4b9ca024624199fe055364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220163b68b6a0567de8ca032e27a22fa4d199f8607f093f4b9ca024624199fe055364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"acceptOwnership()": {"author": null, "details": "The new owner accepts the ownership transfer.", "params": {}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "pendingOwner()": {"author": null, "details": "Returns the address of the pending owner.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.", "params": {}, "return": null}}, "author": null, "details": "Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.", "params": {}, "return": null}}, "author": null, "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol:IERC1967Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol:IERC1822ProxiableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"proxiableUUID()": {"author": null, "details": "Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.", "params": {}, "return": null}}, "author": null, "details": "ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol:IBeaconUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"implementation()": {"author": null, "details": "Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.", "params": {}, "return": null}}, "author": null, "details": "This is the interface that {BeaconProxy} expects of its beacon.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"proxiableUUID()": {"author": null, "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.", "params": {}, "return": null}, "upgradeTo(address)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "upgradeToAndCall(address,bytes)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}}, "author": null, "details": "An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol:AddressUpgradeable": {"srcmap": "194:9180:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:9180:21:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8b42a4b730f7b2a15c55cc3059d1d7f53e8ac61e22ee0d652e9e91ea1e4a20464736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8b42a4b730f7b2a15c55cc3059d1d7f53e8ac61e22ee0d652e9e91ea1e4a20464736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Collection of functions related to the address type", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol:StorageSlotUpgradeable": {"srcmap": "1420:2696:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1420:2696:23:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220219441bb7066bf6c39aa136f012fac0c6b19285a7b858b3264a07c6ad2ead00364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220219441bb7066bf6c39aa136f012fac0c6b19285a7b858b3264a07c6ad2ead00364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:25:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml index 9567f426..50e0e33c 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -2,7 +2,8 @@ testMode: assertion # testLimit: 50000 # multi-abi: true # corpusDir: "corpus" -cryticArgs: ["--solc-remaps", "@openzeppelin=node_modules/@openzeppelin"] +cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] +# contractAddr: '0xContractAddress' # filterBlacklist: false # filterFunctions: ["Operators.registerOperator(bytes,uint256)", "setOperatorWhitelist(uint64,address)"] diff --git a/hardhat.config.ts b/hardhat.config.ts index 28662755..184a4c25 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,7 +1,7 @@ import 'dotenv/config'; import { HardhatUserConfig } from 'hardhat/config'; -import { NetworkUserConfig } from "hardhat/types"; +import { NetworkUserConfig } from 'hardhat/types'; import '@nomicfoundation/hardhat-toolbox'; import '@openzeppelin/hardhat-upgrades'; import 'hardhat-tracer'; @@ -14,13 +14,12 @@ import './tasks/upgrade'; type SSVNetworkConfig = NetworkUserConfig & { ssvToken: string; -} - +}; const config: HardhatUserConfig = { // Your type-safe config goes here mocha: { - timeout: 40000000000000000 + timeout: 40000000000000000, }, solidity: { compilers: [ @@ -29,32 +28,35 @@ const config: HardhatUserConfig = { settings: { optimizer: { enabled: true, - runs: 10000 - } - } - } + runs: 10000, + }, + }, + }, ], }, networks: { ganache: { chainId: 1337, - url: "http://127.0.0.1:8585", - ssvToken: process.env.SSVTOKEN_ADDRESS // if empty, deploy SSV mock token + url: 'http://127.0.0.1:8585', + ssvToken: process.env.SSVTOKEN_ADDRESS, // if empty, deploy SSV mock token } as SSVNetworkConfig, hardhat: { - allowUnlimitedContractSize: true - } + forking: { + url: process.env.GOERLI_ETH_NODE_URL, + }, + allowUnlimitedContractSize: true, + }, }, etherscan: { // Your API key for Etherscan // Obtain one at https://etherscan.io/ - apiKey: process.env.ETHERSCAN_KEY + apiKey: process.env.ETHERSCAN_KEY, }, gasReporter: { enabled: true, currency: 'USD', - gasPrice: 0.3 - } + gasPrice: 0.3, + }, }; if (process.env.GOERLI_ETH_NODE_URL) { @@ -69,13 +71,13 @@ if (process.env.GOERLI_ETH_NODE_URL) { ...config.networks, goerli_development: { ...sharedConfig, - ssvToken: '0x6471F70b932390f527c6403773D082A0Db8e8A9F' + ssvToken: '0x6471F70b932390f527c6403773D082A0Db8e8A9F', } as SSVNetworkConfig, goerli_testnet: { ...sharedConfig, - ssvToken: '0x3a9f01091C446bdE031E39ea8354647AFef091E7' + ssvToken: '0x3a9f01091C446bdE031E39ea8354647AFef091E7', } as SSVNetworkConfig, - } + }; } if (process.env.MAINNET_ETH_NODE_URL) { @@ -87,9 +89,9 @@ if (process.env.MAINNET_ETH_NODE_URL) { accounts: [`0x${process.env.MAINNET_OWNER_PRIVATE_KEY}`], gasPrice: +(process.env.GAS_PRICE || ''), gas: +(process.env.GAS || ''), - ssvToken: '0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54' - } as SSVNetworkConfig - } + ssvToken: '0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54', + } as SSVNetworkConfig, + }; } export default config; diff --git a/package-lock.json b/package-lock.json index 2f91c227..fe56c80a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,6 +6,7 @@ "": { "name": "ssv-network", "devDependencies": { + "@crytic/echidna": "^0.0.6", "@nomicfoundation/hardhat-toolbox": "^2.0.0", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-solhint": "^2.0.0", @@ -230,6 +231,16 @@ "node": ">=0.1.90" } }, + "node_modules/@crytic/echidna": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@crytic/echidna/-/echidna-0.0.6.tgz", + "integrity": "sha512-gayy5iNbc6oyhFhjAXd3B/IYaXWaNGY6IjNthGpLMzRbma+peTTAlVvgRBKdQKYWvstXAfldPdeazABwgCB6Hg==", + "dev": true, + "bin": { + "echidna": "echidna", + "fuzz-token": "fuzz-token" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -12489,6 +12500,12 @@ "dev": true, "optional": true }, + "@crytic/echidna": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@crytic/echidna/-/echidna-0.0.6.tgz", + "integrity": "sha512-gayy5iNbc6oyhFhjAXd3B/IYaXWaNGY6IjNthGpLMzRbma+peTTAlVvgRBKdQKYWvstXAfldPdeazABwgCB6Hg==", + "dev": true + }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", diff --git a/package.json b/package.json index 14bc97dd..4c7bf06a 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,12 @@ "lint:fix": "eslint --fix . --ext .ts", "solidity-coverage": "NO_GAS_ENFORCE=1 npx hardhat coverage", "slither": "slither contracts --solc-remaps @openzeppelin=node_modules/@openzeppelin", - "size-contracts": "npx hardhat size-contracts" + "size-contracts": "npx hardhat size-contracts", + "install-echidna": "brew install echidna", + "run-echidna": "echidna --config echidna.yaml" }, "devDependencies": { + "@crytic/echidna": "^0.0.6", "@nomicfoundation/hardhat-toolbox": "^2.0.0", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-solhint": "^2.0.0", @@ -36,4 +39,4 @@ "ts-node": "^10.7.0", "typescript": "^4.6.3" } -} \ No newline at end of file +} From 3ce40c33e620ffed2a49e2cb1975b07eed4bd466 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 8 Jan 2024 17:34:48 +0100 Subject: [PATCH 03/19] fix: added checking of GOERLI_ETH_NODE_URL --- hardhat.config.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 184a4c25..57d735b4 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -41,9 +41,12 @@ const config: HardhatUserConfig = { ssvToken: process.env.SSVTOKEN_ADDRESS, // if empty, deploy SSV mock token } as SSVNetworkConfig, hardhat: { - forking: { - url: process.env.GOERLI_ETH_NODE_URL, - }, + forking: process.env.GOERLI_ETH_NODE_URL + ? { + url: process.env.GOERLI_ETH_NODE_URL, + // blockNumber can be specified here if needed + } + : undefined, allowUnlimitedContractSize: true, }, }, From 437439af8ee299f79b94cfae5f0f10d26d66f8cd Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Tue, 16 Jan 2024 10:45:30 +0100 Subject: [PATCH 04/19] fix: added DAO Operator fuzz testing --- contracts/modules/DAO.sol | 9 +++++++-- contracts/modules/Operators.sol | 8 +++----- crytic-export/combined_solc.json | 2 +- echidna.yaml | 1 - hardhat.config.ts | 4 ++-- package.json | 2 +- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index b4e5c3fa..c60ebdd3 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -6,7 +6,12 @@ import "./SSVDAO.sol"; contract DAO is SSVDAO { uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; - function echidna_test(uint256 amount) public returns (bool) { - return SSVStorageProtocol.load().networkFee == amount; + constructor() { + StorageProtocol storage sp = SSVStorageProtocol.load(); + sp.networkFee = 100000000 / 10; + } + + function helper_updateNetworkFee(uint256 amount) public returns (bool) { + this.updateNetworkFee(amount); } } diff --git a/contracts/modules/Operators.sol b/contracts/modules/Operators.sol index f9333f81..668d6d73 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/modules/Operators.sol @@ -27,10 +27,12 @@ contract Operators is SSVOperators { } function helper_createOperator(bytes calldata publicKey, uint256 fee) public { + require(publicKey.length != 0 && publicKey[0] != 0, "invalid publicKey: cannot be empty"); + uint256 maxValue = 2 ** 64 * DEDUCTED_DIGITS; uint256 minN = (MINIMAL_OPERATOR_FEE + DEDUCTED_DIGITS - 1) / DEDUCTED_DIGITS; - uint256 maxN = maxValue / DEDUCTED_DIGITS; + uint256 maxN = SSVStorageProtocol.load().operatorMaxFee; require(fee > minN && fee < maxN, "fee value exceeded"); fee = fee * DEDUCTED_DIGITS; @@ -44,13 +46,11 @@ contract Operators is SSVOperators { } } - /* function helper_setOperatorWhitelist(uint64 operatorId, address whitelisted) public { operatorId = operatorId % uint64(opIds.length); this.setOperatorWhitelist(operatorId, whitelisted); } - */ function helper_declareOperatorFee(uint64 operatorId) public { operatorId = operatorId % uint64(opIds.length); @@ -81,7 +81,6 @@ contract Operators is SSVOperators { /*********** * Assertions ***********/ - /* function check_removedOperatorNotWhitelisted(uint64 operatorId) public { operatorId = operatorId % uint64(opIds.length); @@ -90,7 +89,6 @@ contract Operators is SSVOperators { if ((operator.snapshot.block == 0) && operator.whitelisted) emit AssertionFailed(operatorId, operator.whitelisted); } -*/ function check_removedOperatorNoFeeDeclared(uint64 operatorId) public { operatorId = 1 + (operatorId % (uint64(opIds.length) - 1)); diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 476cb759..af842c48 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol": {"AST": {"absolutePath": "contracts/SSVNetwork.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "Authorization": [1631], "ContextUpgradeable": [3059], "CoreLib": [1624], "Counters": [2382], "DEDUCTED_DIGITS": [1810], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "IERC20": [2192], "ISSVClusters": [1012], "ISSVDAO": [1104], "ISSVNetwork": [1181], "ISSVNetworkCore": [2308], "ISSVOperators": [1317], "ISSVViews": [1493], "Initializable": [2683], "Ownable2StepUpgradeable": [1978], "OwnableUpgradeable": [2514], "RegisterAuth": [1660], "SSVModules": [1670], "SSVNetwork": [842], "SSVProxy": [856], "SSVStorage": [1740], "SSVStorageProtocol": [1805], "StorageData": [1717], "StorageProtocol": [1782], "StorageSlotUpgradeable": [3530], "Types256": [1872], "Types64": [1823], "UUPSUpgradeable": [2114]}, "id": 843, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetwork.sol", "file": "./interfaces/ISSVNetwork.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1182, "src": "70:38:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "./interfaces/ISSVClusters.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1013, "src": "110:39:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "./interfaces/ISSVOperators.sol", "id": 4, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1318, "src": "150:40:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "./interfaces/ISSVDAO.sol", "id": 5, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1105, "src": "191:34:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVViews.sol", "file": "./interfaces/ISSVViews.sol", "id": 6, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1494, "src": "226:36:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./libraries/Types.sol", "id": 7, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1873, "src": "264:31:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "./libraries/CoreLib.sol", "id": 8, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1625, "src": "296:33:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 9, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1741, "src": "330:36:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./libraries/SSVStorageProtocol.sol", "id": 10, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1806, "src": "367:44:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/RegisterAuth.sol", "file": "./libraries/RegisterAuth.sol", "id": 11, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1661, "src": "412:38:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/SSVProxy.sol", "file": "./SSVProxy.sol", "id": 12, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 857, "src": "452:24:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 14, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1741, "src": "478:54:0", "symbolAliases": [{"foreign": {"id": 13, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "486:10:0", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 15, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 2193, "src": "534:56:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "id": 16, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 2115, "src": "591:77:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "id": 17, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 843, "sourceUnit": 1979, "src": "669:80:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 18, "name": "UUPSUpgradeable", "nameLocations": ["778:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2114, "src": "778:15:0"}, "id": 19, "nodeType": "InheritanceSpecifier", "src": "778:15:0"}, {"baseName": {"id": 20, "name": "Ownable2StepUpgradeable", "nameLocations": ["799:23:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1978, "src": "799:23:0"}, "id": 21, "nodeType": "InheritanceSpecifier", "src": "799:23:0"}, {"baseName": {"id": 22, "name": "ISSVNetwork", "nameLocations": ["828:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1181, "src": "828:11:0"}, "id": 23, "nodeType": "InheritanceSpecifier", "src": "828:11:0"}, {"baseName": {"id": 24, "name": "ISSVOperators", "nameLocations": ["845:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "845:13:0"}, "id": 25, "nodeType": "InheritanceSpecifier", "src": "845:13:0"}, {"baseName": {"id": 26, "name": "ISSVClusters", "nameLocations": ["864:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "864:12:0"}, "id": 27, "nodeType": "InheritanceSpecifier", "src": "864:12:0"}, {"baseName": {"id": 28, "name": "ISSVDAO", "nameLocations": ["882:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "882:7:0"}, "id": 29, "nodeType": "InheritanceSpecifier", "src": "882:7:0"}, {"baseName": {"id": 30, "name": "SSVProxy", "nameLocations": ["895:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 856, "src": "895:8:0"}, "id": 31, "nodeType": "InheritanceSpecifier", "src": "895:8:0"}], "canonicalName": "SSVNetwork", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 842, "linearizedBaseContracts": [842, 856, 1104, 1012, 1317, 2308, 1181, 1978, 2514, 3059, 2114, 3017, 3410, 2693, 2683], "name": "SSVNetwork", "nameLocation": "760:10:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 34, "libraryName": {"id": 32, "name": "Types256", "nameLocations": ["916:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1872, "src": "916:8:0"}, "nodeType": "UsingForDirective", "src": "910:27:0", "typeName": {"id": 33, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "929:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"baseFunctions": [1144], "body": {"id": 89, "nodeType": "Block", "src": "1491:485:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 69, "name": "__UUPSUpgradeable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1996, "src": "1501:22:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1501:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 71, "nodeType": "ExpressionStatement", "src": "1501:24:0"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 72, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "1535:24:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1535:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 74, "nodeType": "ExpressionStatement", "src": "1535:26:0"}, {"expression": {"arguments": [{"id": 76, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1612:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, {"id": 77, "name": "ssvOperators_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 40, "src": "1632:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, {"id": 78, "name": "ssvClusters_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "1659:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, {"id": 79, "name": "ssvDAO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, "src": "1685:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, {"id": 80, "name": "ssvViews_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1706:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, {"id": 81, "name": "minimumBlocksBeforeLiquidation_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51, "src": "1729:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 82, "name": "minimumLiquidationCollateral_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53, "src": "1774:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 83, "name": "validatorsPerOperatorLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 55, "src": "1817:27:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 84, "name": "declareOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "1858:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 85, "name": "executeOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "1897:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 86, "name": "operatorMaxFeeIncrease_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 61, "src": "1936:23:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 75, "name": "__SSVNetwork_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, "src": "1571:27:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2192_$_t_contract$_ISSVOperators_$1317_$_t_contract$_ISSVClusters_$1012_$_t_contract$_ISSVDAO_$1104_$_t_contract$_ISSVViews_$1493_$_t_uint64_$_t_uint256_$_t_uint32_$_t_uint64_$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (contract IERC20,contract ISSVOperators,contract ISSVClusters,contract ISSVDAO,contract ISSVViews,uint64,uint256,uint32,uint64,uint64,uint64)"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1571:398:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 88, "nodeType": "ExpressionStatement", "src": "1571:398:0"}]}, "functionSelector": "c626c3c6", "id": 90, "implemented": true, "kind": "function", "modifiers": [{"id": 65, "kind": "modifierInvocation", "modifierName": {"id": 64, "name": "initializer", "nameLocations": ["1469:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2585, "src": "1469:11:0"}, "nodeType": "ModifierInvocation", "src": "1469:11:0"}, {"id": 67, "kind": "modifierInvocation", "modifierName": {"id": 66, "name": "onlyProxy", "nameLocations": ["1481:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "1481:9:0"}, "nodeType": "ModifierInvocation", "src": "1481:9:0"}], "name": "initialize", "nameLocation": "1022:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 63, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1460:8:0"}, "parameters": {"id": 62, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 37, "mutability": "mutable", "name": "token_", "nameLocation": "1049:6:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1042:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 36, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 35, "name": "IERC20", "nameLocations": ["1042:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "1042:6:0"}, "referencedDeclaration": 2192, "src": "1042:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 40, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "1079:13:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1065:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 39, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 38, "name": "ISSVOperators", "nameLocations": ["1065:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "1065:13:0"}, "referencedDeclaration": 1317, "src": "1065:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 43, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "1115:12:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1102:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 42, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 41, "name": "ISSVClusters", "nameLocations": ["1102:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "1102:12:0"}, "referencedDeclaration": 1012, "src": "1102:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 46, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "1145:7:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1137:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 45, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 44, "name": "ISSVDAO", "nameLocations": ["1137:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "1137:7:0"}, "referencedDeclaration": 1104, "src": "1137:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 49, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "1172:9:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1162:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 48, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 47, "name": "ISSVViews", "nameLocations": ["1162:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "1162:9:0"}, "referencedDeclaration": 1493, "src": "1162:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 51, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "1198:31:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1191:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 50, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1191:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 53, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "1247:29:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1239:37:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 52, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1239:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 55, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "1293:27:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1286:34:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 54, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1286:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 57, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "1337:25:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1330:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 56, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1330:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 59, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "1379:25:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1372:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 58, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1372:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 61, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "1421:23:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "1414:30:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 60, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1032:418:0"}, "returnParameters": {"id": 68, "nodeType": "ParameterList", "parameters": [], "src": "1491:0:0"}, "scope": 842, "src": "1013:963:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 228, "nodeType": "Block", "src": "2463:845:0", "statements": [{"assignments": [124], "declarations": [{"constant": false, "id": 124, "mutability": "mutable", "name": "s", "nameLocation": "2493:1:0", "nodeType": "VariableDeclaration", "scope": 228, "src": "2473:21:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 123, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 122, "name": "StorageData", "nameLocations": ["2473:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1717, "src": "2473:11:0"}, "referencedDeclaration": 1717, "src": "2473:11:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 128, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 125, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "2497:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2508:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "2497:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2497:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2473:41:0"}, {"assignments": [131], "declarations": [{"constant": false, "id": 131, "mutability": "mutable", "name": "sp", "nameLocation": "2548:2:0", "nodeType": "VariableDeclaration", "scope": 228, "src": "2524:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 130, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 129, "name": "StorageProtocol", "nameLocations": ["2524:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1782, "src": "2524:15:0"}, "referencedDeclaration": 1782, "src": "2524:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 135, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 132, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1805, "src": "2553:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1805_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2572:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1804, "src": "2553:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1782_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2553:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2524:54:0"}, {"expression": {"id": 140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 136, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2588:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2590:5:0", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "2588:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 139, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "2598:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "src": "2588:16:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 141, "nodeType": "ExpressionStatement", "src": "2588:16:0"}, {"expression": {"id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 142, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2614:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2616:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2614:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 147, "indexExpression": {"expression": {"id": 144, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2629:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2640:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "2629:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2614:40:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 150, "name": "ssvOperators_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "2665:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}], "id": 149, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2657:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 148, "name": "address", "nodeType": "ElementaryTypeName", "src": "2657:7:0", "typeDescriptions": {}}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2614:65:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 153, "nodeType": "ExpressionStatement", "src": "2614:65:0"}, {"expression": {"id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 154, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2689:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 158, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2691:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2689:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 159, "indexExpression": {"expression": {"id": 156, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2704:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2715:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "2704:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2689:39:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 162, "name": "ssvClusters_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 99, "src": "2739:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}], "id": 161, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2731:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 160, "name": "address", "nodeType": "ElementaryTypeName", "src": "2731:7:0", "typeDescriptions": {}}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2731:21:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2689:63:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 165, "nodeType": "ExpressionStatement", "src": "2689:63:0"}, {"expression": {"id": 176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 166, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2762:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2764:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2762:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 171, "indexExpression": {"expression": {"id": 168, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2777:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2788:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "2777:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2762:34:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 174, "name": "ssvDAO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "2807:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}], "id": 173, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2799:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 172, "name": "address", "nodeType": "ElementaryTypeName", "src": "2799:7:0", "typeDescriptions": {}}}, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2799:16:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2762:53:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 177, "nodeType": "ExpressionStatement", "src": "2762:53:0"}, {"expression": {"id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 178, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "2825:1:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2827:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "2825:14:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 183, "indexExpression": {"expression": {"id": 180, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "2840:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2851:9:0", "memberName": "SSV_VIEWS", "nodeType": "MemberAccess", "referencedDeclaration": 1669, "src": "2840:20:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2825:36:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 186, "name": "ssvViews_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 105, "src": "2872:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}], "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2864:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 184, "name": "address", "nodeType": "ElementaryTypeName", "src": "2864:7:0", "typeDescriptions": {}}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2864:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2825:57:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 189, "nodeType": "ExpressionStatement", "src": "2825:57:0"}, {"expression": {"id": 194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 190, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "2892:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 192, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2895:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1766, "src": "2892:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 193, "name": "minimumBlocksBeforeLiquidation_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 107, "src": "2928:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2892:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 195, "nodeType": "ExpressionStatement", "src": "2892:67:0"}, {"expression": {"id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 196, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "2969:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2972:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "2969:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 199, "name": "minimumLiquidationCollateral_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "3003:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3033:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1852, "src": "3003:36:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3003:38:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2969:72:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 203, "nodeType": "ExpressionStatement", "src": "2969:72:0"}, {"expression": {"id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 204, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3051:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 206, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3054:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "3051:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 207, "name": "validatorsPerOperatorLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "3083:27:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "3051:59:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 209, "nodeType": "ExpressionStatement", "src": "3051:59:0"}, {"expression": {"id": 214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 210, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3120:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3123:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "3120:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 213, "name": "declareOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, "src": "3150:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3120:55:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 215, "nodeType": "ExpressionStatement", "src": "3120:55:0"}, {"expression": {"id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 216, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3185:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 218, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3188:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "3185:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 219, "name": "executeOperatorFeePeriod_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 115, "src": "3215:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3185:55:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 221, "nodeType": "ExpressionStatement", "src": "3185:55:0"}, {"expression": {"id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 222, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "3250:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3253:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "3250:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 225, "name": "operatorMaxFeeIncrease_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "3278:23:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3250:51:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 227, "nodeType": "ExpressionStatement", "src": "3250:51:0"}]}, "id": 229, "implemented": true, "kind": "function", "modifiers": [{"id": 120, "kind": "modifierInvocation", "modifierName": {"id": 119, "name": "onlyInitializing", "nameLocations": ["2446:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "2446:16:0"}, "nodeType": "ModifierInvocation", "src": "2446:16:0"}], "name": "__SSVNetwork_init_unchained", "nameLocation": "1991:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 93, "mutability": "mutable", "name": "token_", "nameLocation": "2035:6:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2028:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 92, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 91, "name": "IERC20", "nameLocations": ["2028:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "2028:6:0"}, "referencedDeclaration": 2192, "src": "2028:6:0", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 96, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "2065:13:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2051:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 95, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 94, "name": "ISSVOperators", "nameLocations": ["2051:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "2051:13:0"}, "referencedDeclaration": 1317, "src": "2051:13:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 99, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "2101:12:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2088:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 98, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 97, "name": "ISSVClusters", "nameLocations": ["2088:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "2088:12:0"}, "referencedDeclaration": 1012, "src": "2088:12:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 102, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "2131:7:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2123:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 101, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 100, "name": "ISSVDAO", "nameLocations": ["2123:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "2123:7:0"}, "referencedDeclaration": 1104, "src": "2123:7:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 105, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "2158:9:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2148:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 104, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 103, "name": "ISSVViews", "nameLocations": ["2148:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "2148:9:0"}, "referencedDeclaration": 1493, "src": "2148:9:0", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 107, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "2184:31:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2177:38:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 106, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2177:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 109, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "2233:29:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2225:37:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 108, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2225:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 111, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "2279:27:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2272:34:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 110, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2272:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 113, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "2323:25:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2316:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 112, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2316:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 115, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "2365:25:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2358:32:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 114, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2358:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 117, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "2407:23:0", "nodeType": "VariableDeclaration", "scope": 229, "src": "2400:30:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 116, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2400:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2018:418:0"}, "returnParameters": {"id": 121, "nodeType": "ParameterList", "parameters": [], "src": "2463:0:0"}, "scope": 842, "src": "1982:1326:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 236, "nodeType": "Block", "src": "3381:39:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 233, "name": "_disableInitializers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2664, "src": "3391:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3391:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 235, "nodeType": "ExpressionStatement", "src": "3391:22:0"}]}, "documentation": {"id": 230, "nodeType": "StructuredDocumentation", "src": "3314:48:0", "text": "@custom:oz-upgrades-unsafe-allow constructor"}, "id": 237, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 231, "nodeType": "ParameterList", "parameters": [], "src": "3378:2:0"}, "returnParameters": {"id": 232, "nodeType": "ParameterList", "parameters": [], "src": "3381:0:0"}, "scope": 842, "src": "3367:53:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [2108], "body": {"id": 245, "nodeType": "Block", "src": "3563:2:0", "statements": []}, "id": 246, "implemented": true, "kind": "function", "modifiers": [{"id": 243, "kind": "modifierInvocation", "modifierName": {"id": 242, "name": "onlyOwner", "nameLocations": ["3553:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "3553:9:0"}, "nodeType": "ModifierInvocation", "src": "3553:9:0"}], "name": "_authorizeUpgrade", "nameLocation": "3508:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 241, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3544:8:0"}, "parameters": {"id": 240, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 239, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 246, "src": "3526:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 238, "name": "address", "nodeType": "ElementaryTypeName", "src": "3526:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3525:9:0"}, "returnParameters": {"id": 244, "nodeType": "ParameterList", "parameters": [], "src": "3563:0:0"}, "scope": 842, "src": "3499:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 259, "nodeType": "Block", "src": "3675:149:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 250, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "3764:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3775:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "3764:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3764:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3782:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "3764:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 256, "indexExpression": {"expression": {"id": 254, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "3795:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 255, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3806:9:0", "memberName": "SSV_VIEWS", "nodeType": "MemberAccess", "referencedDeclaration": 1669, "src": "3795:20:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3764:52:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 249, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "3754:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3754:63:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 258, "nodeType": "ExpressionStatement", "src": "3754:63:0"}]}, "id": 260, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 247, "nodeType": "ParameterList", "parameters": [], "src": "3663:2:0"}, "returnParameters": {"id": 248, "nodeType": "ParameterList", "parameters": [], "src": "3675:0:0"}, "scope": 842, "src": "3655:169:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1196], "body": {"id": 293, "nodeType": "Block", "src": "4048:186:0", "statements": [{"condition": {"id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4062:63:0", "subExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 270, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "4063:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4076:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "4063:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4063:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4083:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "4063:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 276, "indexExpression": {"expression": {"id": 274, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4097:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4101:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "4097:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4063:45:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 277, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4109:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1628, "src": "4063:62:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 282, "nodeType": "IfStatement", "src": "4058:91:0", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 279, "name": "NotAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "4134:13:0", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4134:15:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 281, "nodeType": "RevertStatement", "src": "4127:22:0"}}, {"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 284, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4170:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4181:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4170:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4170:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 287, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4188:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4170:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 290, "indexExpression": {"expression": {"id": 288, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4201:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 289, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4212:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4201:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4170:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 283, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4160:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4160:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 292, "nodeType": "ExpressionStatement", "src": "4160:67:0"}]}, "functionSelector": "ff212c5c", "id": 294, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "3954:16:0", "nodeType": "FunctionDefinition", "overrides": {"id": 266, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4019:8:0"}, "parameters": {"id": 265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 262, "mutability": "mutable", "name": "publicKey", "nameLocation": "3986:9:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "3971:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 261, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3971:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 264, "mutability": "mutable", "name": "fee", "nameLocation": "4005:3:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "3997:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3997:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3970:39:0"}, "returnParameters": {"id": 269, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 268, "mutability": "mutable", "name": "id", "nameLocation": "4044:2:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "4037:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 267, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4037:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4036:11:0"}, "scope": 842, "src": "3945:289:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1202], "body": {"id": 310, "nodeType": "Block", "src": "4301:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 301, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4321:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4332:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4321:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 303, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4321:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4339:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4321:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 307, "indexExpression": {"expression": {"id": 305, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4352:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4363:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4352:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 300, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4311:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4311:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 309, "nodeType": "ExpressionStatement", "src": "4311:67:0"}]}, "functionSelector": "2e168e0e", "id": 311, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "4249:14:0", "nodeType": "FunctionDefinition", "overrides": {"id": 298, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4292:8:0"}, "parameters": {"id": 297, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 296, "mutability": "mutable", "name": "operatorId", "nameLocation": "4271:10:0", "nodeType": "VariableDeclaration", "scope": 311, "src": "4264:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 295, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4264:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4263:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "4301:0:0"}, "scope": 842, "src": "4240:145:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1210], "body": {"id": 329, "nodeType": "Block", "src": "4479:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 320, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4499:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4510:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4499:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4499:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4517:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4499:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 326, "indexExpression": {"expression": {"id": 324, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4530:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4541:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4530:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4499:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 319, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4489:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4489:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "4489:67:0"}]}, "functionSelector": "c90a7eab", "id": 330, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "4400:20:0", "nodeType": "FunctionDefinition", "overrides": {"id": 317, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4470:8:0"}, "parameters": {"id": 316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 313, "mutability": "mutable", "name": "operatorId", "nameLocation": "4428:10:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "4421:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 312, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4421:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 315, "mutability": "mutable", "name": "whitelisted", "nameLocation": "4448:11:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "4440:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 314, "name": "address", "nodeType": "ElementaryTypeName", "src": "4440:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4420:40:0"}, "returnParameters": {"id": 318, "nodeType": "ParameterList", "parameters": [], "src": "4479:0:0"}, "scope": 842, "src": "4391:172:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1218], "body": {"id": 348, "nodeType": "Block", "src": "4647:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 339, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4667:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4678:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4667:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4667:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 342, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4685:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4667:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 345, "indexExpression": {"expression": {"id": 343, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4698:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 344, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4709:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4698:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4667:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 338, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4657:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 346, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4657:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 347, "nodeType": "ExpressionStatement", "src": "4657:67:0"}]}, "functionSelector": "b317c35f", "id": 349, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "4578:18:0", "nodeType": "FunctionDefinition", "overrides": {"id": 336, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4638:8:0"}, "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "mutability": "mutable", "name": "operatorId", "nameLocation": "4604:10:0", "nodeType": "VariableDeclaration", "scope": 349, "src": "4597:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4597:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 334, "mutability": "mutable", "name": "fee", "nameLocation": "4624:3:0", "nodeType": "VariableDeclaration", "scope": 349, "src": "4616:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4616:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4596:32:0"}, "returnParameters": {"id": 337, "nodeType": "ParameterList", "parameters": [], "src": "4647:0:0"}, "scope": 842, "src": "4569:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1224], "body": {"id": 365, "nodeType": "Block", "src": "4802:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 356, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4822:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4833:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4822:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4822:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4840:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4822:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 362, "indexExpression": {"expression": {"id": 360, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "4853:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4864:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "4853:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4822:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 355, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4812:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4812:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 364, "nodeType": "ExpressionStatement", "src": "4812:67:0"}]}, "functionSelector": "8932cee0", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4746:18:0", "nodeType": "FunctionDefinition", "overrides": {"id": 353, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4793:8:0"}, "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "mutability": "mutable", "name": "operatorId", "nameLocation": "4772:10:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "4765:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 350, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4765:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4764:19:0"}, "returnParameters": {"id": 354, "nodeType": "ParameterList", "parameters": [], "src": "4802:0:0"}, "scope": 842, "src": "4737:149:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1230], "body": {"id": 382, "nodeType": "Block", "src": "4964:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 373, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "4984:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4995:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "4984:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 376, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5002:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "4984:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 379, "indexExpression": {"expression": {"id": 377, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5015:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5026:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5015:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4984:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 372, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "4974:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4974:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 381, "nodeType": "ExpressionStatement", "src": "4974:67:0"}]}, "functionSelector": "23d68a6d", "id": 383, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "4901:25:0", "nodeType": "FunctionDefinition", "overrides": {"id": 370, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4955:8:0"}, "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "4934:10:0", "nodeType": "VariableDeclaration", "scope": 383, "src": "4927:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4927:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4926:19:0"}, "returnParameters": {"id": 371, "nodeType": "ParameterList", "parameters": [], "src": "4964:0:0"}, "scope": 842, "src": "4892:156:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1238], "body": {"id": 401, "nodeType": "Block", "src": "5131:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 392, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5151:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5162:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5151:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5151:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5169:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5151:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 398, "indexExpression": {"expression": {"id": 396, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5182:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5193:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5182:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5151:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 391, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5141:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5141:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 400, "nodeType": "ExpressionStatement", "src": "5141:67:0"}]}, "functionSelector": "190d82e4", "id": 402, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5063:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 389, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5122:8:0"}, "parameters": {"id": 388, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 385, "mutability": "mutable", "name": "operatorId", "nameLocation": "5088:10:0", "nodeType": "VariableDeclaration", "scope": 402, "src": "5081:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 384, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5081:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 387, "mutability": "mutable", "name": "fee", "nameLocation": "5108:3:0", "nodeType": "VariableDeclaration", "scope": 402, "src": "5100:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 386, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5100:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5080:32:0"}, "returnParameters": {"id": 390, "nodeType": "ParameterList", "parameters": [], "src": "5131:0:0"}, "scope": 842, "src": "5054:161:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1246], "body": {"id": 420, "nodeType": "Block", "src": "5308:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 411, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5328:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5339:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5328:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5328:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5346:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5328:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 417, "indexExpression": {"expression": {"id": 415, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5359:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5370:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5359:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5328:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 410, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5318:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5318:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 419, "nodeType": "ExpressionStatement", "src": "5318:67:0"}]}, "functionSelector": "35f63767", "id": 421, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "5230:24:0", "nodeType": "FunctionDefinition", "overrides": {"id": 408, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5299:8:0"}, "parameters": {"id": 407, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 404, "mutability": "mutable", "name": "operatorId", "nameLocation": "5262:10:0", "nodeType": "VariableDeclaration", "scope": 421, "src": "5255:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 403, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5255:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 406, "mutability": "mutable", "name": "amount", "nameLocation": "5282:6:0", "nodeType": "VariableDeclaration", "scope": 421, "src": "5274:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5274:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5254:35:0"}, "returnParameters": {"id": 409, "nodeType": "ParameterList", "parameters": [], "src": "5308:0:0"}, "scope": 842, "src": "5221:171:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1252], "body": {"id": 437, "nodeType": "Block", "src": "5472:84:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 428, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "5492:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5503:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "5492:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 431, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5510:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "5492:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 434, "indexExpression": {"expression": {"id": 432, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "5523:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5534:13:0", "memberName": "SSV_OPERATORS", "nodeType": "MemberAccess", "referencedDeclaration": 1666, "src": "5523:24:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5492:56:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 427, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "5482:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5482:67:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 436, "nodeType": "ExpressionStatement", "src": "5482:67:0"}]}, "functionSelector": "4bc93b64", "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "5407:27:0", "nodeType": "FunctionDefinition", "overrides": {"id": 425, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5463:8:0"}, "parameters": {"id": 424, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 423, "mutability": "mutable", "name": "operatorId", "nameLocation": "5442:10:0", "nodeType": "VariableDeclaration", "scope": 438, "src": "5435:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 422, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5435:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5434:19:0"}, "returnParameters": {"id": 426, "nodeType": "ParameterList", "parameters": [], "src": "5472:0:0"}, "scope": 842, "src": "5398:158:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1154], "body": {"id": 450, "nodeType": "Block", "src": "5752:78:0", "statements": [{"eventCall": {"arguments": [{"expression": {"id": 445, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5794:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5798:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "5794:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 447, "name": "recipientAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 440, "src": "5806:16:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 444, "name": "FeeRecipientAddressUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1316, "src": "5767:26:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5767:56:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 449, "nodeType": "EmitStatement", "src": "5762:61:0"}]}, "functionSelector": "dbcdc2cc", "id": 451, "implemented": true, "kind": "function", "modifiers": [], "name": "setFeeRecipientAddress", "nameLocation": "5685:22:0", "nodeType": "FunctionDefinition", "overrides": {"id": 442, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5743:8:0"}, "parameters": {"id": 441, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 440, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "5716:16:0", "nodeType": "VariableDeclaration", "scope": 451, "src": "5708:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 439, "name": "address", "nodeType": "ElementaryTypeName", "src": "5708:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5707:26:0"}, "returnParameters": {"id": 443, "nodeType": "ParameterList", "parameters": [], "src": "5752:0:0"}, "scope": 842, "src": "5676:154:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [877], "body": {"id": 490, "nodeType": "Block", "src": "6181:186:0", "statements": [{"condition": {"id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6195:64:0", "subExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 467, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "6196:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6209:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "6196:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6196:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 470, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6216:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "6196:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 473, "indexExpression": {"expression": {"id": 471, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6230:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6234:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "6230:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6196:45:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6242:17:0", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1630, "src": "6196:63:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 479, "nodeType": "IfStatement", "src": "6191:92:0", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 476, "name": "NotAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "6268:13:0", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6268:15:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 478, "nodeType": "RevertStatement", "src": "6261:22:0"}}, {"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 481, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6304:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6315:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6304:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6304:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 484, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6322:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6304:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 487, "indexExpression": {"expression": {"id": 485, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6335:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 486, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6346:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6335:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6304:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 480, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6294:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6294:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 489, "nodeType": "ExpressionStatement", "src": "6294:66:0"}]}, "functionSelector": "06e8fb9c", "id": 491, "implemented": true, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "5961:17:0", "nodeType": "FunctionDefinition", "overrides": {"id": 465, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6172:8:0"}, "parameters": {"id": 464, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 453, "mutability": "mutable", "name": "publicKey", "nameLocation": "6003:9:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "5988:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 452, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5988:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 456, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6038:11:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6022:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 454, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6022:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 455, "nodeType": "ArrayTypeName", "src": "6022:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 458, "mutability": "mutable", "name": "sharesData", "nameLocation": "6074:10:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6059:25:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 457, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6059:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 460, "mutability": "mutable", "name": "amount", "nameLocation": "6102:6:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6094:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6094:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 463, "mutability": "mutable", "name": "cluster", "nameLocation": "6149:7:0", "nodeType": "VariableDeclaration", "scope": 491, "src": "6118:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 462, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 461, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6118:15:0", "6134:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6118:23:0"}, "referencedDeclaration": 2247, "src": "6118:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "5978:184:0"}, "returnParameters": {"id": 466, "nodeType": "ParameterList", "parameters": [], "src": "6181:0:0"}, "scope": 842, "src": "5952:415:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [889], "body": {"id": 513, "nodeType": "Block", "src": "6543:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 504, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6563:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6574:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6563:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6563:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 507, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6581:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6563:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 510, "indexExpression": {"expression": {"id": 508, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6594:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6605:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6594:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6563:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 503, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6553:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6553:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 512, "nodeType": "ExpressionStatement", "src": "6553:66:0"}]}, "functionSelector": "12b3fc19", "id": 514, "implemented": true, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "6382:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 501, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6534:8:0"}, "parameters": {"id": 500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 493, "mutability": "mutable", "name": "publicKey", "nameLocation": "6422:9:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6407:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 492, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6407:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6459:11:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6441:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 494, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6441:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 495, "nodeType": "ArrayTypeName", "src": "6441:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 499, "mutability": "mutable", "name": "cluster", "nameLocation": "6511:7:0", "nodeType": "VariableDeclaration", "scope": 514, "src": "6480:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 498, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 497, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6480:15:0", "6496:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6480:23:0"}, "referencedDeclaration": 2247, "src": "6480:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6397:127:0"}, "returnParameters": {"id": 502, "nodeType": "ParameterList", "parameters": [], "src": "6543:0:0"}, "scope": 842, "src": "6373:253:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [901], "body": {"id": 535, "nodeType": "Block", "src": "6783:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 526, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "6803:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6814:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "6803:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6803:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 529, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6821:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "6803:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 532, "indexExpression": {"expression": {"id": 530, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "6834:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6845:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "6834:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6803:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 525, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "6793:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6793:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 534, "nodeType": "ExpressionStatement", "src": "6793:66:0"}]}, "functionSelector": "bf0f2fb2", "id": 536, "implemented": true, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "6641:9:0", "nodeType": "FunctionDefinition", "parameters": {"id": 523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 516, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "6668:12:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6660:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 515, "name": "address", "nodeType": "ElementaryTypeName", "src": "6660:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 519, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6708:11:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6690:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 517, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6690:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 518, "nodeType": "ArrayTypeName", "src": "6690:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 522, "mutability": "mutable", "name": "cluster", "nameLocation": "6760:7:0", "nodeType": "VariableDeclaration", "scope": 536, "src": "6729:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 520, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6729:15:0", "6745:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6729:23:0"}, "referencedDeclaration": 2247, "src": "6729:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6650:123:0"}, "returnParameters": {"id": 524, "nodeType": "ParameterList", "parameters": [], "src": "6783:0:0"}, "scope": 842, "src": "6632:234:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [913], "body": {"id": 558, "nodeType": "Block", "src": "7027:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 549, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7047:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7058:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7047:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 551, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7047:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7065:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7047:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 555, "indexExpression": {"expression": {"id": 553, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7078:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7089:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7078:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7047:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 548, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7037:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7037:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 557, "nodeType": "ExpressionStatement", "src": "7037:66:0"}]}, "functionSelector": "5fec6dd0", "id": 559, "implemented": true, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "6881:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 546, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7018:8:0"}, "parameters": {"id": 545, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 539, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6919:11:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6901:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 537, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6901:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 538, "nodeType": "ArrayTypeName", "src": "6901:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 541, "mutability": "mutable", "name": "amount", "nameLocation": "6948:6:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6940:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 540, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6940:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 544, "mutability": "mutable", "name": "cluster", "nameLocation": "6995:7:0", "nodeType": "VariableDeclaration", "scope": 559, "src": "6964:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 543, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 542, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["6964:15:0", "6980:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "6964:23:0"}, "referencedDeclaration": 2247, "src": "6964:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6891:117:0"}, "returnParameters": {"id": 547, "nodeType": "ParameterList", "parameters": [], "src": "7027:0:0"}, "scope": 842, "src": "6872:238:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [927], "body": {"id": 583, "nodeType": "Block", "src": "7298:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 574, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7318:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7329:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7318:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7318:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7336:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7318:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 580, "indexExpression": {"expression": {"id": 578, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7349:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7360:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7349:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7318:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 573, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7308:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7308:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "7308:66:0"}]}, "functionSelector": "bc26e7e5", "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "7125:7:0", "nodeType": "FunctionDefinition", "overrides": {"id": 571, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7289:8:0"}, "parameters": {"id": 570, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 561, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "7150:12:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7142:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 560, "name": "address", "nodeType": "ElementaryTypeName", "src": "7142:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 564, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7190:11:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7172:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 562, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7172:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 563, "nodeType": "ArrayTypeName", "src": "7172:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 566, "mutability": "mutable", "name": "amount", "nameLocation": "7219:6:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7211:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 565, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7211:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 569, "mutability": "mutable", "name": "cluster", "nameLocation": "7266:7:0", "nodeType": "VariableDeclaration", "scope": 584, "src": "7235:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 568, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 567, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["7235:15:0", "7251:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "7235:23:0"}, "referencedDeclaration": 2247, "src": "7235:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7132:147:0"}, "returnParameters": {"id": 572, "nodeType": "ParameterList", "parameters": [], "src": "7298:0:0"}, "scope": 842, "src": "7116:265:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [939], "body": {"id": 606, "nodeType": "Block", "src": "7540:83:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 597, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7560:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7571:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7560:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7560:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7578:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7560:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 603, "indexExpression": {"expression": {"id": 601, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7591:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7602:12:0", "memberName": "SSV_CLUSTERS", "nodeType": "MemberAccess", "referencedDeclaration": 1667, "src": "7591:23:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7560:55:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 596, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7550:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7550:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 605, "nodeType": "ExpressionStatement", "src": "7550:66:0"}]}, "functionSelector": "686e682c", "id": 607, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "7396:8:0", "nodeType": "FunctionDefinition", "overrides": {"id": 594, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7531:8:0"}, "parameters": {"id": 593, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 587, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7432:11:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7414:29:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 585, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 586, "nodeType": "ArrayTypeName", "src": "7414:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 589, "mutability": "mutable", "name": "amount", "nameLocation": "7461:6:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7453:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7453:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 592, "mutability": "mutable", "name": "cluster", "nameLocation": "7508:7:0", "nodeType": "VariableDeclaration", "scope": 607, "src": "7477:38:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 591, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 590, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["7477:15:0", "7493:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "7477:23:0"}, "referencedDeclaration": 2247, "src": "7477:23:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7404:117:0"}, "returnParameters": {"id": 595, "nodeType": "ParameterList", "parameters": [], "src": "7540:0:0"}, "scope": 842, "src": "7387:236:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1023], "body": {"id": 625, "nodeType": "Block", "src": "7696:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 616, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7716:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7727:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7716:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7716:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7734:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7716:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 622, "indexExpression": {"expression": {"id": 620, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7747:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7758:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "7747:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7716:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 615, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7706:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7706:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 624, "nodeType": "ExpressionStatement", "src": "7706:61:0"}]}, "functionSelector": "1f1f9fd5", "id": 626, "implemented": true, "kind": "function", "modifiers": [{"id": 613, "kind": "modifierInvocation", "modifierName": {"id": 612, "name": "onlyOwner", "nameLocations": ["7686:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "7686:9:0"}, "nodeType": "ModifierInvocation", "src": "7686:9:0"}], "name": "updateNetworkFee", "nameLocation": "7638:16:0", "nodeType": "FunctionDefinition", "overrides": {"id": 611, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7677:8:0"}, "parameters": {"id": 610, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 609, "mutability": "mutable", "name": "fee", "nameLocation": "7663:3:0", "nodeType": "VariableDeclaration", "scope": 626, "src": "7655:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 608, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7655:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7654:13:0"}, "returnParameters": {"id": 614, "nodeType": "ParameterList", "parameters": [], "src": "7696:0:0"}, "scope": 842, "src": "7629:145:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1029], "body": {"id": 644, "nodeType": "Block", "src": "7857:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 635, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "7877:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7888:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "7877:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7877:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7895:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "7877:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 641, "indexExpression": {"expression": {"id": 639, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "7908:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "7919:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "7908:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7877:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 634, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "7867:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7867:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "7867:61:0"}]}, "functionSelector": "d2231741", "id": 645, "implemented": true, "kind": "function", "modifiers": [{"id": 632, "kind": "modifierInvocation", "modifierName": {"id": 631, "name": "onlyOwner", "nameLocations": ["7847:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "7847:9:0"}, "nodeType": "ModifierInvocation", "src": "7847:9:0"}], "name": "withdrawNetworkEarnings", "nameLocation": "7789:23:0", "nodeType": "FunctionDefinition", "overrides": {"id": 630, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7838:8:0"}, "parameters": {"id": 629, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 628, "mutability": "mutable", "name": "amount", "nameLocation": "7821:6:0", "nodeType": "VariableDeclaration", "scope": 645, "src": "7813:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7813:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7812:16:0"}, "returnParameters": {"id": 633, "nodeType": "ParameterList", "parameters": [], "src": "7857:0:0"}, "scope": 842, "src": "7780:155:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1035], "body": {"id": 663, "nodeType": "Block", "src": "8028:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 654, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8048:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8059:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8048:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8048:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 657, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8066:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8048:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 660, "indexExpression": {"expression": {"id": 658, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8079:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8090:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8079:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8048:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 653, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8038:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8038:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "ExpressionStatement", "src": "8038:61:0"}]}, "functionSelector": "3631983f", "id": 664, "implemented": true, "kind": "function", "modifiers": [{"id": 651, "kind": "modifierInvocation", "modifierName": {"id": 650, "name": "onlyOwner", "nameLocations": ["8018:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8018:9:0"}, "nodeType": "ModifierInvocation", "src": "8018:9:0"}], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "7950:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 649, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8009:8:0"}, "parameters": {"id": 648, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 647, "mutability": "mutable", "name": "percentage", "nameLocation": "7988:10:0", "nodeType": "VariableDeclaration", "scope": 664, "src": "7981:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 646, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7981:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "7980:19:0"}, "returnParameters": {"id": 652, "nodeType": "ParameterList", "parameters": [], "src": "8028:0:0"}, "scope": 842, "src": "7941:165:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1041], "body": {"id": 682, "nodeType": "Block", "src": "8202:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 673, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8222:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8233:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8222:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 675, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8222:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 676, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8240:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8222:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 679, "indexExpression": {"expression": {"id": 677, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8253:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 678, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8264:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8253:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8222:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 672, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8212:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8212:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 681, "nodeType": "ExpressionStatement", "src": "8212:61:0"}]}, "functionSelector": "79e3e4e4", "id": 683, "implemented": true, "kind": "function", "modifiers": [{"id": 670, "kind": "modifierInvocation", "modifierName": {"id": 669, "name": "onlyOwner", "nameLocations": ["8192:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8192:9:0"}, "nodeType": "ModifierInvocation", "src": "8192:9:0"}], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "8121:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 668, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8183:8:0"}, "parameters": {"id": 667, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 666, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "8159:13:0", "nodeType": "VariableDeclaration", "scope": 683, "src": "8152:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 665, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8152:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8151:22:0"}, "returnParameters": {"id": 671, "nodeType": "ParameterList", "parameters": [], "src": "8202:0:0"}, "scope": 842, "src": "8112:168:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1047], "body": {"id": 701, "nodeType": "Block", "src": "8376:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 692, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8396:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8407:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8396:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8396:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8414:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8396:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 698, "indexExpression": {"expression": {"id": 696, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8427:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8438:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8427:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8396:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 691, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8386:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8386:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 700, "nodeType": "ExpressionStatement", "src": "8386:61:0"}]}, "functionSelector": "eb608022", "id": 702, "implemented": true, "kind": "function", "modifiers": [{"id": 689, "kind": "modifierInvocation", "modifierName": {"id": 688, "name": "onlyOwner", "nameLocations": ["8366:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8366:9:0"}, "nodeType": "ModifierInvocation", "src": "8366:9:0"}], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "8295:30:0", "nodeType": "FunctionDefinition", "overrides": {"id": 687, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8357:8:0"}, "parameters": {"id": 686, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 685, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "8333:13:0", "nodeType": "VariableDeclaration", "scope": 702, "src": "8326:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 684, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8326:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8325:22:0"}, "returnParameters": {"id": 690, "nodeType": "ParameterList", "parameters": [], "src": "8376:0:0"}, "scope": 842, "src": "8286:168:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1053], "body": {"id": 720, "nodeType": "Block", "src": "8545:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 711, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8565:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8576:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8565:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8565:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 714, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8583:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8565:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 717, "indexExpression": {"expression": {"id": 715, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8596:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8607:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8596:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8565:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 710, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8555:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8555:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 719, "nodeType": "ExpressionStatement", "src": "8555:61:0"}]}, "functionSelector": "6512447d", "id": 721, "implemented": true, "kind": "function", "modifiers": [{"id": 708, "kind": "modifierInvocation", "modifierName": {"id": 707, "name": "onlyOwner", "nameLocations": ["8535:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8535:9:0"}, "nodeType": "ModifierInvocation", "src": "8535:9:0"}], "name": "updateLiquidationThresholdPeriod", "nameLocation": "8469:32:0", "nodeType": "FunctionDefinition", "overrides": {"id": 706, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8526:8:0"}, "parameters": {"id": 705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 704, "mutability": "mutable", "name": "blocks", "nameLocation": "8509:6:0", "nodeType": "VariableDeclaration", "scope": 721, "src": "8502:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8502:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8501:15:0"}, "returnParameters": {"id": 709, "nodeType": "ParameterList", "parameters": [], "src": "8545:0:0"}, "scope": 842, "src": "8460:163:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1059], "body": {"id": 739, "nodeType": "Block", "src": "8717:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 730, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8737:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8748:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8737:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8737:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 733, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8755:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8737:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 736, "indexExpression": {"expression": {"id": 734, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8768:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 735, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8779:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8768:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8737:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 729, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8727:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 737, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8727:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 738, "nodeType": "ExpressionStatement", "src": "8727:61:0"}]}, "functionSelector": "b4c9c408", "id": 740, "implemented": true, "kind": "function", "modifiers": [{"id": 727, "kind": "modifierInvocation", "modifierName": {"id": 726, "name": "onlyOwner", "nameLocations": ["8707:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8707:9:0"}, "nodeType": "ModifierInvocation", "src": "8707:9:0"}], "name": "updateMinimumLiquidationCollateral", "nameLocation": "8638:34:0", "nodeType": "FunctionDefinition", "overrides": {"id": 725, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8698:8:0"}, "parameters": {"id": 724, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 723, "mutability": "mutable", "name": "amount", "nameLocation": "8681:6:0", "nodeType": "VariableDeclaration", "scope": 740, "src": "8673:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8673:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8672:16:0"}, "returnParameters": {"id": 728, "nodeType": "ParameterList", "parameters": [], "src": "8717:0:0"}, "scope": 842, "src": "8629:166:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1065], "body": {"id": 758, "nodeType": "Block", "src": "8878:78:0", "statements": [{"expression": {"arguments": [{"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 749, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "8898:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8909:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "8898:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8898:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 752, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8916:12:0", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "8898:30:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 755, "indexExpression": {"expression": {"id": 753, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "8929:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_SSVModules_$1670_$", "typeString": "type(enum SSVModules)"}}, "id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "8940:7:0", "memberName": "SSV_DAO", "nodeType": "MemberAccess", "referencedDeclaration": 1668, "src": "8929:18:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8898:50:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 748, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 855, "src": "8888:9:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8888:61:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 757, "nodeType": "ExpressionStatement", "src": "8888:61:0"}]}, "functionSelector": "e39c6744", "id": 759, "implemented": true, "kind": "function", "modifiers": [{"id": 746, "kind": "modifierInvocation", "modifierName": {"id": 745, "name": "onlyOwner", "nameLocations": ["8868:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "8868:9:0"}, "nodeType": "ModifierInvocation", "src": "8868:9:0"}], "name": "updateMaximumOperatorFee", "nameLocation": "8810:24:0", "nodeType": "FunctionDefinition", "overrides": {"id": 744, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8859:8:0"}, "parameters": {"id": 743, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 742, "mutability": "mutable", "name": "maxFee", "nameLocation": "8842:6:0", "nodeType": "VariableDeclaration", "scope": 759, "src": "8835:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 741, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8835:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "8834:15:0"}, "returnParameters": {"id": 747, "nodeType": "ParameterList", "parameters": [], "src": "8878:0:0"}, "scope": 842, "src": "8801:155:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1149], "body": {"id": 769, "nodeType": "Block", "src": "9039:44:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 765, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "9056:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1624_$", "typeString": "type(library CoreLib)"}}, "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9064:10:0", "memberName": "getVersion", "nodeType": "MemberAccess", "referencedDeclaration": 1511, "src": "9056:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)"}}, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9056:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 764, "id": 768, "nodeType": "Return", "src": "9049:27:0"}]}, "functionSelector": "0d8e6e2c", "id": 770, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "8971:10:0", "nodeType": "FunctionDefinition", "overrides": {"id": 761, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8998:8:0"}, "parameters": {"id": 760, "nodeType": "ParameterList", "parameters": [], "src": "8981:2:0"}, "returnParameters": {"id": 764, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 763, "mutability": "mutable", "name": "version", "nameLocation": "9030:7:0", "nodeType": "VariableDeclaration", "scope": 770, "src": "9016:21:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 762, "name": "string", "nodeType": "ElementaryTypeName", "src": "9016:6:0", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "9015:23:0"}, "scope": 842, "src": "8962:121:0", "stateMutability": "pure", "virtual": false, "visibility": "external"}, {"baseFunctions": [1162], "body": {"id": 787, "nodeType": "Block", "src": "9288:67:0", "statements": [{"expression": {"arguments": [{"id": 783, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 773, "src": "9324:8:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, {"id": 784, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "9334:13:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 780, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "9298:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1624_$", "typeString": "type(library CoreLib)"}}, "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9306:17:0", "memberName": "setModuleContract", "nodeType": "MemberAccess", "referencedDeclaration": 1623, "src": "9298:25:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_enum$_SSVModules_$1670_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9298:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 786, "nodeType": "ExpressionStatement", "src": "9298:50:0"}]}, "functionSelector": "e3e324b0", "id": 788, "implemented": true, "kind": "function", "modifiers": [{"id": 778, "kind": "modifierInvocation", "modifierName": {"id": 777, "name": "onlyOwner", "nameLocations": ["9278:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "9278:9:0"}, "nodeType": "ModifierInvocation", "src": "9278:9:0"}], "name": "updateModule", "nameLocation": "9212:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 773, "mutability": "mutable", "name": "moduleId", "nameLocation": "9236:8:0", "nodeType": "VariableDeclaration", "scope": 788, "src": "9225:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 772, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 771, "name": "SSVModules", "nameLocations": ["9225:10:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "9225:10:0"}, "referencedDeclaration": 1670, "src": "9225:10:0", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 775, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "9254:13:0", "nodeType": "VariableDeclaration", "scope": 788, "src": "9246:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 774, "name": "address", "nodeType": "ElementaryTypeName", "src": "9246:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9224:44:0"}, "returnParameters": {"id": 779, "nodeType": "ParameterList", "parameters": [], "src": "9288:0:0"}, "scope": 842, "src": "9203:152:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1171], "body": {"id": 813, "nodeType": "Block", "src": "9588:108:0", "statements": [{"expression": {"id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 800, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "9598:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9611:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "9598:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9598:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 804, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9618:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "9598:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 806, "indexExpression": {"id": 805, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 790, "src": "9632:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9598:46:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 808, "name": "authOperator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "9661:12:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 809, "name": "authValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "9675:13:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 807, "name": "Authorization", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1631, "src": "9647:13:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Authorization_$1631_storage_ptr_$", "typeString": "type(struct Authorization storage pointer)"}}, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9647:42:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "src": "9598:91:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "id": 812, "nodeType": "ExpressionStatement", "src": "9598:91:0"}]}, "functionSelector": "3ed00469", "id": 814, "implemented": true, "kind": "function", "modifiers": [{"id": 798, "kind": "modifierInvocation", "modifierName": {"id": 797, "name": "onlyOwner", "nameLocations": ["9578:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "9578:9:0"}, "nodeType": "ModifierInvocation", "src": "9578:9:0"}], "name": "setRegisterAuth", "nameLocation": "9484:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 796, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9569:8:0"}, "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 790, "mutability": "mutable", "name": "userAddress", "nameLocation": "9508:11:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9500:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 789, "name": "address", "nodeType": "ElementaryTypeName", "src": "9500:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 792, "mutability": "mutable", "name": "authOperator", "nameLocation": "9526:12:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9521:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 791, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9521:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 794, "mutability": "mutable", "name": "authValidator", "nameLocation": "9545:13:0", "nodeType": "VariableDeclaration", "scope": 814, "src": "9540:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 793, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9540:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "9499:60:0"}, "returnParameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "9588:0:0"}, "scope": 842, "src": "9475:221:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1180], "body": {"id": 840, "nodeType": "Block", "src": "9835:155:0", "statements": [{"assignments": [826], "declarations": [{"constant": false, "id": 826, "mutability": "mutable", "name": "auth", "nameLocation": "9866:4:0", "nodeType": "VariableDeclaration", "scope": 840, "src": "9845:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization"}, "typeName": {"id": 825, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 824, "name": "Authorization", "nameLocations": ["9845:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1631, "src": "9845:13:0"}, "referencedDeclaration": 1631, "src": "9845:13:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage_ptr", "typeString": "struct Authorization"}}, "visibility": "internal"}], "id": 833, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 827, "name": "RegisterAuth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "9873:12:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_RegisterAuth_$1660_$", "typeString": "type(library RegisterAuth)"}}, "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9886:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "9873:17:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AuthData_$1647_storage_ptr_$", "typeString": "function () pure returns (struct RegisterAuth.AuthData storage pointer)"}}, "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9873:19:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData storage pointer"}}, "id": 830, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9893:13:0", "memberName": "authorization", "nodeType": "MemberAccess", "referencedDeclaration": 1646, "src": "9873:33:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization storage ref)"}}, "id": 832, "indexExpression": {"id": 831, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 816, "src": "9907:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9873:46:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage", "typeString": "struct Authorization storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "9845:74:0"}, {"expression": {"components": [{"expression": {"id": 834, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "9937:4:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "id": 835, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9942:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1628, "src": "9937:21:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"expression": {"id": 836, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "9960:4:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_memory_ptr", "typeString": "struct Authorization memory"}}, "id": 837, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9965:17:0", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1630, "src": "9960:22:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 838, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9936:47:0", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", "typeString": "tuple(bool,bool)"}}, "functionReturnParameters": 823, "id": 839, "nodeType": "Return", "src": "9929:54:0"}]}, "functionSelector": "7398ca6c", "id": 841, "implemented": true, "kind": "function", "modifiers": [], "name": "getRegisterAuth", "nameLocation": "9711:15:0", "nodeType": "FunctionDefinition", "overrides": {"id": 818, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9776:8:0"}, "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 816, "mutability": "mutable", "name": "userAddress", "nameLocation": "9744:11:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9736:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 815, "name": "address", "nodeType": "ElementaryTypeName", "src": "9736:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9726:35:0"}, "returnParameters": {"id": 823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 820, "mutability": "mutable", "name": "authOperators", "nameLocation": "9799:13:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9794:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 819, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9794:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 822, "mutability": "mutable", "name": "authValidators", "nameLocation": "9819:14:0", "nodeType": "VariableDeclaration", "scope": 841, "src": "9814:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 821, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9814:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "9793:41:0"}, "scope": 842, "src": "9702:288:0", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 843, "src": "751:9241:0", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:9948:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol": {"AST": {"absolutePath": "contracts/SSVProxy.sol", "exportedSymbols": {"SSVModules": [1670], "SSVProxy": [856], "SSVStorage": [1740], "StorageData": [1717]}, "id": 857, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 844, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./libraries/SSVStorage.sol", "id": 848, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 857, "sourceUnit": 1741, "src": "70:79:1", "symbolAliases": [{"foreign": {"id": 845, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "78:10:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 846, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "90:10:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 847, "name": "StorageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1717, "src": "102:11:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "SSVProxy", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 856, "linearizedBaseContracts": [856], "name": "SSVProxy", "nameLocation": "169:8:1", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 854, "nodeType": "Block", "src": "237:835:1", "statements": [{"AST": {"nodeType": "YulBlock", "src": "256:810:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "509:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "512:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "calldatasize", "nodeType": "YulIdentifier", "src": "515:12:1"}, "nodeType": "YulFunctionCall", "src": "515:14:1"}], "functionName": {"name": "calldatacopy", "nodeType": "YulIdentifier", "src": "496:12:1"}, "nodeType": "YulFunctionCall", "src": "496:34:1"}, "nodeType": "YulExpressionStatement", "src": "496:34:1"}, {"nodeType": "YulVariableDeclaration", "src": "657:74:1", "value": {"arguments": [{"arguments": [], "functionName": {"name": "gas", "nodeType": "YulIdentifier", "src": "684:3:1"}, "nodeType": "YulFunctionCall", "src": "684:5:1"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "691:14:1"}, {"kind": "number", "nodeType": "YulLiteral", "src": "707:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "calldatasize", "nodeType": "YulIdentifier", "src": "710:12:1"}, "nodeType": "YulFunctionCall", "src": "710:14:1"}, {"kind": "number", "nodeType": "YulLiteral", "src": "726:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "729:1:1", "type": "", "value": "0"}], "functionName": {"name": "delegatecall", "nodeType": "YulIdentifier", "src": "671:12:1"}, "nodeType": "YulFunctionCall", "src": "671:60:1"}, "variables": [{"name": "result", "nodeType": "YulTypedName", "src": "661:6:1", "type": ""}]}, {"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "799:1:1", "type": "", "value": "0"}, {"kind": "number", "nodeType": "YulLiteral", "src": "802:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "805:14:1"}, "nodeType": "YulFunctionCall", "src": "805:16:1"}], "functionName": {"name": "returndatacopy", "nodeType": "YulIdentifier", "src": "784:14:1"}, "nodeType": "YulFunctionCall", "src": "784:38:1"}, "nodeType": "YulExpressionStatement", "src": "784:38:1"}, {"cases": [{"body": {"nodeType": "YulBlock", "src": "917:59:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "942:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "945:14:1"}, "nodeType": "YulFunctionCall", "src": "945:16:1"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "935:6:1"}, "nodeType": "YulFunctionCall", "src": "935:27:1"}, "nodeType": "YulExpressionStatement", "src": "935:27:1"}]}, "nodeType": "YulCase", "src": "910:66:1", "value": {"kind": "number", "nodeType": "YulLiteral", "src": "915:1:1", "type": "", "value": "0"}}, {"body": {"nodeType": "YulBlock", "src": "997:59:1", "statements": [{"expression": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1022:1:1", "type": "", "value": "0"}, {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "1025:14:1"}, "nodeType": "YulFunctionCall", "src": "1025:16:1"}], "functionName": {"name": "return", "nodeType": "YulIdentifier", "src": "1015:6:1"}, "nodeType": "YulFunctionCall", "src": "1015:27:1"}, "nodeType": "YulExpressionStatement", "src": "1015:27:1"}]}, "nodeType": "YulCase", "src": "989:67:1", "value": "default"}], "expression": {"name": "result", "nodeType": "YulIdentifier", "src": "843:6:1"}, "nodeType": "YulSwitch", "src": "836:220:1"}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 850, "isOffset": false, "isSlot": false, "src": "691:14:1", "valueSize": 1}], "id": 853, "nodeType": "InlineAssembly", "src": "247:819:1"}]}, "id": 855, "implemented": true, "kind": "function", "modifiers": [], "name": "_delegate", "nameLocation": "194:9:1", "nodeType": "FunctionDefinition", "parameters": {"id": 851, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 850, "mutability": "mutable", "name": "implementation", "nameLocation": "212:14:1", "nodeType": "VariableDeclaration", "scope": 855, "src": "204:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 849, "name": "address", "nodeType": "ElementaryTypeName", "src": "204:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "203:24:1"}, "returnParameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "237:0:1"}, "scope": 856, "src": "185:887:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 857, "src": "151:923:1", "usedErrors": []}], "src": "45:1030:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "exportedSymbols": {"ISSVClusters": [1012], "ISSVNetworkCore": [2308]}, "id": 1013, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 858, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 859, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1013, "sourceUnit": 2309, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 860, "name": "ISSVNetworkCore", "nameLocations": ["129:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "129:15:2"}, "id": 861, "nodeType": "InheritanceSpecifier", "src": "129:15:2"}], "canonicalName": "ISSVClusters", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1012, "linearizedBaseContracts": [1012, 2308], "name": "ISSVClusters", "nameLocation": "113:12:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 862, "nodeType": "StructuredDocumentation", "src": "151:390:2", "text": "@notice Registers a new validator on the SSV Network\n @param publicKey The public key of the new validator\n @param operatorIds Array of IDs of operators managing this validator\n @param sharesData Encrypted shares related to the new validator\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster to be used with the new validator"}, "functionSelector": "06e8fb9c", "id": 877, "implemented": false, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "555:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 864, "mutability": "mutable", "name": "publicKey", "nameLocation": "597:9:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "582:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 863, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "582:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 867, "mutability": "mutable", "name": "operatorIds", "nameLocation": "632:11:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "616:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 865, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "616:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 866, "nodeType": "ArrayTypeName", "src": "616:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 869, "mutability": "mutable", "name": "sharesData", "nameLocation": "668:10:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "653:25:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 868, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "653:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 871, "mutability": "mutable", "name": "amount", "nameLocation": "696:6:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "688:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "688:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "cluster", "nameLocation": "727:7:2", "nodeType": "VariableDeclaration", "scope": 877, "src": "712:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 873, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 872, "name": "Cluster", "nameLocations": ["712:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "712:7:2"}, "referencedDeclaration": 2247, "src": "712:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "572:168:2"}, "returnParameters": {"id": 876, "nodeType": "ParameterList", "parameters": [], "src": "749:0:2"}, "scope": 1012, "src": "546:204:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 878, "nodeType": "StructuredDocumentation", "src": "756:270:2", "text": "@notice Removes an existing validator from the SSV Network\n @param publicKey The public key of the validator to be removed\n @param operatorIds Array of IDs of operators managing the validator\n @param cluster Cluster associated with the validator"}, "functionSelector": "12b3fc19", "id": 889, "implemented": false, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "1040:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 887, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 880, "mutability": "mutable", "name": "publicKey", "nameLocation": "1071:9:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1056:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 879, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1056:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 883, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1098:11:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1082:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 881, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1082:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 882, "nodeType": "ArrayTypeName", "src": "1082:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 886, "mutability": "mutable", "name": "cluster", "nameLocation": "1126:7:2", "nodeType": "VariableDeclaration", "scope": 889, "src": "1111:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 885, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 884, "name": "Cluster", "nameLocations": ["1111:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1111:7:2"}, "referencedDeclaration": 2247, "src": "1111:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1055:79:2"}, "returnParameters": {"id": 888, "nodeType": "ParameterList", "parameters": [], "src": "1143:0:2"}, "scope": 1012, "src": "1031:113:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 890, "nodeType": "StructuredDocumentation", "src": "1254:200:2", "text": "@notice Liquidates a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param cluster Cluster to be liquidated"}, "functionSelector": "bf0f2fb2", "id": 901, "implemented": false, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "1468:9:2", "nodeType": "FunctionDefinition", "parameters": {"id": 899, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 892, "mutability": "mutable", "name": "owner", "nameLocation": "1486:5:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1478:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 891, "name": "address", "nodeType": "ElementaryTypeName", "src": "1478:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 895, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1509:11:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1493:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 893, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1493:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 894, "nodeType": "ArrayTypeName", "src": "1493:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 898, "mutability": "mutable", "name": "cluster", "nameLocation": "1537:7:2", "nodeType": "VariableDeclaration", "scope": 901, "src": "1522:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 896, "name": "Cluster", "nameLocations": ["1522:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1522:7:2"}, "referencedDeclaration": 2247, "src": "1522:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1477:68:2"}, "returnParameters": {"id": 900, "nodeType": "ParameterList", "parameters": [], "src": "1554:0:2"}, "scope": 1012, "src": "1459:96:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 902, "nodeType": "StructuredDocumentation", "src": "1561:232:2", "text": "@notice Reactivates a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited for reactivation\n @param cluster Cluster to be reactivated"}, "functionSelector": "5fec6dd0", "id": 913, "implemented": false, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "1807:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 911, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 905, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1834:11:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1818:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 903, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1818:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 904, "nodeType": "ArrayTypeName", "src": "1818:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "amount", "nameLocation": "1855:6:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1847:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 906, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 910, "mutability": "mutable", "name": "cluster", "nameLocation": "1878:7:2", "nodeType": "VariableDeclaration", "scope": 913, "src": "1863:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 909, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 908, "name": "Cluster", "nameLocations": ["1863:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "1863:7:2"}, "referencedDeclaration": 2247, "src": "1863:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1817:69:2"}, "returnParameters": {"id": 912, "nodeType": "ParameterList", "parameters": [], "src": "1895:0:2"}, "scope": 1012, "src": "1798:98:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 914, "nodeType": "StructuredDocumentation", "src": "2014:283:2", "text": "@notice Deposits tokens into a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster where the deposit will be made"}, "functionSelector": "bc26e7e5", "id": 927, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "2311:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 925, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 916, "mutability": "mutable", "name": "owner", "nameLocation": "2327:5:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2319:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 915, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 919, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2350:11:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2334:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 917, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2334:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 918, "nodeType": "ArrayTypeName", "src": "2334:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 921, "mutability": "mutable", "name": "amount", "nameLocation": "2371:6:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2363:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2363:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 924, "mutability": "mutable", "name": "cluster", "nameLocation": "2394:7:2", "nodeType": "VariableDeclaration", "scope": 927, "src": "2379:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 923, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 922, "name": "Cluster", "nameLocations": ["2379:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2379:7:2"}, "referencedDeclaration": 2247, "src": "2379:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2318:84:2"}, "returnParameters": {"id": 926, "nodeType": "ParameterList", "parameters": [], "src": "2411:0:2"}, "scope": 1012, "src": "2302:110:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 928, "nodeType": "StructuredDocumentation", "src": "2418:246:2", "text": "@notice Withdraws tokens from a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param tokenAmount Amount of SSV tokens to be withdrawn\n @param cluster Cluster where the withdrawal will be made"}, "functionSelector": "686e682c", "id": 939, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2678:8:2", "nodeType": "FunctionDefinition", "parameters": {"id": 937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 931, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2703:11:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2687:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 929, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2687:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 930, "nodeType": "ArrayTypeName", "src": "2687:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 933, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "2724:11:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2716:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2716:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 936, "mutability": "mutable", "name": "cluster", "nameLocation": "2752:7:2", "nodeType": "VariableDeclaration", "scope": 939, "src": "2737:22:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 935, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 934, "name": "Cluster", "nameLocations": ["2737:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2737:7:2"}, "referencedDeclaration": 2247, "src": "2737:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2686:74:2"}, "returnParameters": {"id": 938, "nodeType": "ParameterList", "parameters": [], "src": "2769:0:2"}, "scope": 1012, "src": "2669:101:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 940, "nodeType": "StructuredDocumentation", "src": "2776:299:2", "text": " @dev Emitted when the validator has been added.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param shares snappy compressed shares(a set of encrypted and public shares).\n @param cluster All the cluster data."}, "eventSelector": "48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e5", "id": 954, "name": "ValidatorAdded", "nameLocation": "3086:14:2", "nodeType": "EventDefinition", "parameters": {"id": 953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 942, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3117:5:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3101:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 941, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 945, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3133:11:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3124:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 943, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3124:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 944, "nodeType": "ArrayTypeName", "src": "3124:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 947, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3152:9:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3146:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 946, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3146:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 949, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "3169:6:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3163:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3163:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 952, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3185:7:2", "nodeType": "VariableDeclaration", "scope": 954, "src": "3177:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 951, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 950, "name": "Cluster", "nameLocations": ["3177:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3177:7:2"}, "referencedDeclaration": 2247, "src": "3177:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3100:93:2"}, "src": "3080:114:2"}, {"anonymous": false, "documentation": {"id": 955, "nodeType": "StructuredDocumentation", "src": "3200:210:2", "text": " @dev Emitted when the validator is removed.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param cluster All the cluster data."}, "eventSelector": "ccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e", "id": 967, "name": "ValidatorRemoved", "nameLocation": "3421:16:2", "nodeType": "EventDefinition", "parameters": {"id": 966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 957, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3454:5:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3438:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 956, "name": "address", "nodeType": "ElementaryTypeName", "src": "3438:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 960, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3470:11:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3461:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 958, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 959, "nodeType": "ArrayTypeName", "src": "3461:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 962, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3489:9:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3483:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 961, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3483:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 965, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3508:7:2", "nodeType": "VariableDeclaration", "scope": 967, "src": "3500:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 964, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 963, "name": "Cluster", "nameLocations": ["3500:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3500:7:2"}, "referencedDeclaration": 2247, "src": "3500:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3437:79:2"}, "src": "3415:102:2"}, {"anonymous": false, "eventSelector": "1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e688", "id": 977, "name": "ClusterLiquidated", "nameLocation": "3529:17:2", "nodeType": "EventDefinition", "parameters": {"id": 976, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 969, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3563:5:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3547:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 968, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 972, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3579:11:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3570:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 970, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 971, "nodeType": "ArrayTypeName", "src": "3570:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 975, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3600:7:2", "nodeType": "VariableDeclaration", "scope": 977, "src": "3592:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 974, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 973, "name": "Cluster", "nameLocations": ["3592:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3592:7:2"}, "referencedDeclaration": 2247, "src": "3592:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3546:62:2"}, "src": "3523:86:2"}, {"anonymous": false, "eventSelector": "c803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b6859", "id": 987, "name": "ClusterReactivated", "nameLocation": "3621:18:2", "nodeType": "EventDefinition", "parameters": {"id": 986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 979, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3656:5:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3640:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 978, "name": "address", "nodeType": "ElementaryTypeName", "src": "3640:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 982, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3672:11:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3663:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 980, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3663:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 981, "nodeType": "ArrayTypeName", "src": "3663:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 985, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3693:7:2", "nodeType": "VariableDeclaration", "scope": 987, "src": "3685:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 984, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 983, "name": "Cluster", "nameLocations": ["3685:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3685:7:2"}, "referencedDeclaration": 2247, "src": "3685:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3639:62:2"}, "src": "3615:87:2"}, {"anonymous": false, "eventSelector": "39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0", "id": 999, "name": "ClusterWithdrawn", "nameLocation": "3714:16:2", "nodeType": "EventDefinition", "parameters": {"id": 998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 989, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3747:5:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3731:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 988, "name": "address", "nodeType": "ElementaryTypeName", "src": "3731:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 992, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3763:11:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3754:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 990, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3754:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 991, "nodeType": "ArrayTypeName", "src": "3754:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 994, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3784:5:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3776:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3776:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 997, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3799:7:2", "nodeType": "VariableDeclaration", "scope": 999, "src": "3791:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 996, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 995, "name": "Cluster", "nameLocations": ["3791:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3791:7:2"}, "referencedDeclaration": 2247, "src": "3791:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3730:77:2"}, "src": "3708:100:2"}, {"anonymous": false, "eventSelector": "2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2", "id": 1011, "name": "ClusterDeposited", "nameLocation": "3820:16:2", "nodeType": "EventDefinition", "parameters": {"id": 1010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1001, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3853:5:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3837:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1000, "name": "address", "nodeType": "ElementaryTypeName", "src": "3837:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3869:11:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3860:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1002, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3860:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1003, "nodeType": "ArrayTypeName", "src": "3860:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1006, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3890:5:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3882:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1005, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3882:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1009, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3905:7:2", "nodeType": "VariableDeclaration", "scope": 1011, "src": "3897:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1008, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1007, "name": "Cluster", "nameLocations": ["3897:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3897:7:2"}, "referencedDeclaration": 2247, "src": "3897:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3836:77:2"}, "src": "3814:100:2"}], "scope": 1013, "src": "103:3813:2", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3872:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [1104], "ISSVNetworkCore": [2308]}, "id": 1105, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1014, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1015, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1105, "sourceUnit": 2309, "src": "70:31:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1016, "name": "ISSVNetworkCore", "nameLocations": ["124:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "124:15:3"}, "id": 1017, "nodeType": "InheritanceSpecifier", "src": "124:15:3"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1104, "linearizedBaseContracts": [1104, 2308], "name": "ISSVDAO", "nameLocation": "113:7:3", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1018, "nodeType": "StructuredDocumentation", "src": "146:90:3", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 1023, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1020, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:3", "nodeType": "VariableDeclaration", "scope": 1023, "src": "267:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:3"}, "returnParameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [], "src": "288:0:3"}, "scope": 1104, "src": "241:48:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1024, "nodeType": "StructuredDocumentation", "src": "295:93:3", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 1029, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1026, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:3", "nodeType": "VariableDeclaration", "scope": 1029, "src": "426:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:3"}, "returnParameters": {"id": 1028, "nodeType": "ParameterList", "parameters": [], "src": "450:0:3"}, "scope": 1104, "src": "393:58:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1030, "nodeType": "StructuredDocumentation", "src": "457:124:3", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 1035, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1033, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:3", "nodeType": "VariableDeclaration", "scope": 1035, "src": "626:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1031, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:3"}, "returnParameters": {"id": 1034, "nodeType": "ParameterList", "parameters": [], "src": "653:0:3"}, "scope": 1104, "src": "586:68:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1036, "nodeType": "StructuredDocumentation", "src": "660:113:3", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 1041, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1038, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:3", "nodeType": "VariableDeclaration", "scope": 1041, "src": "818:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1037, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:3"}, "returnParameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [], "src": "848:0:3"}, "scope": 1104, "src": "778:71:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1042, "nodeType": "StructuredDocumentation", "src": "855:113:3", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 1047, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1045, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1044, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:3", "nodeType": "VariableDeclaration", "scope": 1047, "src": "1013:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1043, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:3"}, "returnParameters": {"id": 1046, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:3"}, "scope": 1104, "src": "973:71:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1048, "nodeType": "StructuredDocumentation", "src": "1050:114:3", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 1053, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1051, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1050, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:3", "nodeType": "VariableDeclaration", "scope": 1053, "src": "1211:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1049, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:3"}, "returnParameters": {"id": 1052, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:3"}, "scope": 1104, "src": "1169:66:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1054, "nodeType": "StructuredDocumentation", "src": "1241:136:3", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 1059, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:3", "nodeType": "VariableDeclaration", "scope": 1059, "src": "1426:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:3"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:3"}, "scope": 1104, "src": "1382:69:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1060, "nodeType": "StructuredDocumentation", "src": "1457:123:3", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 1065, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:3", "nodeType": "VariableDeclaration", "scope": 1065, "src": "1619:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1061, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:3"}, "returnParameters": {"id": 1064, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:3"}, "scope": 1104, "src": "1585:58:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 1069, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:3", "nodeType": "VariableDeclaration", "scope": 1069, "src": "1687:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1066, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:3"}, "src": "1649:52:3"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 1073, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1071, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:3", "nodeType": "VariableDeclaration", "scope": 1073, "src": "1745:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1070, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:3"}, "src": "1707:52:3"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 1077, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:3", "nodeType": "EventDefinition", "parameters": {"id": 1076, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1075, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:3", "nodeType": "VariableDeclaration", "scope": 1077, "src": "1803:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1074, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:3"}, "src": "1765:52:3"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 1081, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:3", "nodeType": "EventDefinition", "parameters": {"id": 1080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1079, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:3", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1863:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1078, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:3"}, "src": "1823:54:3"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 1085, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:3", "nodeType": "EventDefinition", "parameters": {"id": 1084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1083, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:3", "nodeType": "VariableDeclaration", "scope": 1085, "src": "1925:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1082, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:3"}, "src": "1883:57:3"}, {"anonymous": false, "documentation": {"id": 1086, "nodeType": "StructuredDocumentation", "src": "1946:130:3", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 1092, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:3", "nodeType": "EventDefinition", "parameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1088, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:3", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2105:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1087, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1090, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:3", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2121:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:3"}, "src": "2081:56:3"}, {"anonymous": false, "documentation": {"id": 1093, "nodeType": "StructuredDocumentation", "src": "2143:164:3", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 1099, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:3", "nodeType": "EventDefinition", "parameters": {"id": 1098, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1095, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:3", "nodeType": "VariableDeclaration", "scope": 1099, "src": "2343:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1097, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:3", "nodeType": "VariableDeclaration", "scope": 1099, "src": "2358:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1096, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:3"}, "src": "2312:65:3"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 1103, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:3", "nodeType": "EventDefinition", "parameters": {"id": 1102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1101, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:3", "nodeType": "VariableDeclaration", "scope": 1103, "src": "2415:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1100, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:3"}, "src": "2383:47:3"}], "scope": 1105, "src": "103:2329:3", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:2388:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetwork.sol", "exportedSymbols": {"IERC20": [2192], "ISSVClusters": [1012], "ISSVDAO": [1104], "ISSVNetwork": [1181], "ISSVNetworkCore": [2308], "ISSVOperators": [1317], "ISSVViews": [1493], "SSVModules": [1670]}, "id": 1182, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1106, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1107, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2309, "src": "70:31:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "./ISSVOperators.sol", "id": 1108, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1318, "src": "102:29:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "./ISSVClusters.sol", "id": 1109, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1013, "src": "132:28:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "./ISSVDAO.sol", "id": 1110, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1105, "src": "161:23:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ISSVViews.sol", "file": "./ISSVViews.sol", "id": 1111, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1494, "src": "185:25:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 1113, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1741, "src": "212:55:4", "symbolAliases": [{"foreign": {"id": 1112, "name": "SSVModules", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "220:10:4", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1114, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2193, "src": "269:56:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetwork", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1181, "linearizedBaseContracts": [1181], "name": "ISSVNetwork", "nameLocation": "337:11:4", "nodeType": "ContractDefinition", "nodes": [{"functionSelector": "c626c3c6", "id": 1144, "implemented": false, "kind": "function", "modifiers": [], "name": "initialize", "nameLocation": "364:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1117, "mutability": "mutable", "name": "token_", "nameLocation": "391:6:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "384:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 1116, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1115, "name": "IERC20", "nameLocations": ["384:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "384:6:4"}, "referencedDeclaration": 2192, "src": "384:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1120, "mutability": "mutable", "name": "ssvOperators_", "nameLocation": "421:13:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "407:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}, "typeName": {"id": 1119, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1118, "name": "ISSVOperators", "nameLocations": ["407:13:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1317, "src": "407:13:4"}, "referencedDeclaration": 1317, "src": "407:13:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVOperators_$1317", "typeString": "contract ISSVOperators"}}, "visibility": "internal"}, {"constant": false, "id": 1123, "mutability": "mutable", "name": "ssvClusters_", "nameLocation": "457:12:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "444:25:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}, "typeName": {"id": 1122, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1121, "name": "ISSVClusters", "nameLocations": ["444:12:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1012, "src": "444:12:4"}, "referencedDeclaration": 1012, "src": "444:12:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVClusters_$1012", "typeString": "contract ISSVClusters"}}, "visibility": "internal"}, {"constant": false, "id": 1126, "mutability": "mutable", "name": "ssvDAO_", "nameLocation": "487:7:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "479:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}, "typeName": {"id": 1125, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1124, "name": "ISSVDAO", "nameLocations": ["479:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1104, "src": "479:7:4"}, "referencedDeclaration": 1104, "src": "479:7:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVDAO_$1104", "typeString": "contract ISSVDAO"}}, "visibility": "internal"}, {"constant": false, "id": 1129, "mutability": "mutable", "name": "ssvViews_", "nameLocation": "514:9:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "504:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}, "typeName": {"id": 1128, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1127, "name": "ISSVViews", "nameLocations": ["504:9:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1493, "src": "504:9:4"}, "referencedDeclaration": 1493, "src": "504:9:4", "typeDescriptions": {"typeIdentifier": "t_contract$_ISSVViews_$1493", "typeString": "contract ISSVViews"}}, "visibility": "internal"}, {"constant": false, "id": 1131, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation_", "nameLocation": "540:31:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "533:38:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1130, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "533:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1133, "mutability": "mutable", "name": "minimumLiquidationCollateral_", "nameLocation": "589:29:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "581:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "581:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1135, "mutability": "mutable", "name": "validatorsPerOperatorLimit_", "nameLocation": "635:27:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "628:34:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1134, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "628:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1137, "mutability": "mutable", "name": "declareOperatorFeePeriod_", "nameLocation": "679:25:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "672:32:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1136, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "672:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1139, "mutability": "mutable", "name": "executeOperatorFeePeriod_", "nameLocation": "721:25:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "714:32:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1138, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "714:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1141, "mutability": "mutable", "name": "operatorMaxFeeIncrease_", "nameLocation": "763:23:4", "nodeType": "VariableDeclaration", "scope": 1144, "src": "756:30:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1140, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "756:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "374:418:4"}, "returnParameters": {"id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "801:0:4"}, "scope": 1181, "src": "355:447:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "0d8e6e2c", "id": 1149, "implemented": false, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "817:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1145, "nodeType": "ParameterList", "parameters": [], "src": "827:2:4"}, "returnParameters": {"id": 1148, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1147, "mutability": "mutable", "name": "version", "nameLocation": "867:7:4", "nodeType": "VariableDeclaration", "scope": 1149, "src": "853:21:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1146, "name": "string", "nodeType": "ElementaryTypeName", "src": "853:6:4", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "852:23:4"}, "scope": 1181, "src": "808:68:4", "stateMutability": "pure", "virtual": false, "visibility": "external"}, {"functionSelector": "dbcdc2cc", "id": 1154, "implemented": false, "kind": "function", "modifiers": [], "name": "setFeeRecipientAddress", "nameLocation": "891:22:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1151, "mutability": "mutable", "name": "feeRecipientAddress", "nameLocation": "922:19:4", "nodeType": "VariableDeclaration", "scope": 1154, "src": "914:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1150, "name": "address", "nodeType": "ElementaryTypeName", "src": "914:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "913:29:4"}, "returnParameters": {"id": 1153, "nodeType": "ParameterList", "parameters": [], "src": "951:0:4"}, "scope": 1181, "src": "882:70:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "e3e324b0", "id": 1162, "implemented": false, "kind": "function", "modifiers": [], "name": "updateModule", "nameLocation": "967:12:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1160, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1157, "mutability": "mutable", "name": "moduleId", "nameLocation": "991:8:4", "nodeType": "VariableDeclaration", "scope": 1162, "src": "980:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1156, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1155, "name": "SSVModules", "nameLocations": ["980:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "980:10:4"}, "referencedDeclaration": 1670, "src": "980:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1159, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1009:13:4", "nodeType": "VariableDeclaration", "scope": 1162, "src": "1001:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1158, "name": "address", "nodeType": "ElementaryTypeName", "src": "1001:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "979:44:4"}, "returnParameters": {"id": 1161, "nodeType": "ParameterList", "parameters": [], "src": "1032:0:4"}, "scope": 1181, "src": "958:75:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "3ed00469", "id": 1171, "implemented": false, "kind": "function", "modifiers": [], "name": "setRegisterAuth", "nameLocation": "1048:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1169, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1164, "mutability": "mutable", "name": "userAddress", "nameLocation": "1072:11:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1064:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1163, "name": "address", "nodeType": "ElementaryTypeName", "src": "1064:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1166, "mutability": "mutable", "name": "authOperators", "nameLocation": "1090:13:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1085:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1165, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1085:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1168, "mutability": "mutable", "name": "authValidators", "nameLocation": "1110:14:4", "nodeType": "VariableDeclaration", "scope": 1171, "src": "1105:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1167, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1105:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1063:62:4"}, "returnParameters": {"id": 1170, "nodeType": "ParameterList", "parameters": [], "src": "1134:0:4"}, "scope": 1181, "src": "1039:96:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"functionSelector": "7398ca6c", "id": 1180, "implemented": false, "kind": "function", "modifiers": [], "name": "getRegisterAuth", "nameLocation": "1150:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1173, "mutability": "mutable", "name": "userAddress", "nameLocation": "1174:11:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1166:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1172, "name": "address", "nodeType": "ElementaryTypeName", "src": "1166:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1165:21:4"}, "returnParameters": {"id": 1179, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1176, "mutability": "mutable", "name": "authOperators", "nameLocation": "1215:13:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1210:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1210:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1178, "mutability": "mutable", "name": "authValidators", "nameLocation": "1235:14:4", "nodeType": "VariableDeclaration", "scope": 1180, "src": "1230:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1177, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1230:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1209:41:4"}, "scope": 1181, "src": "1141:110:4", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1182, "src": "327:926:4", "usedErrors": []}], "src": "45:1209:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [2308]}, "id": 2309, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2194, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 2308, "linearizedBaseContracts": [2308], "name": "ISSVNetworkCore", "nameLocation": "80:15:5", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 2204, "members": [{"constant": false, "id": 2197, "mutability": "mutable", "name": "block", "nameLocation": "343:5:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "336:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2196, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2200, "mutability": "mutable", "name": "index", "nameLocation": "461:5:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "454:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2199, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2203, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:5", "nodeType": "VariableDeclaration", "scope": 2204, "src": "587:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:5", "nodeType": "StructDefinition", "scope": 2308, "src": "248:360:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 2221, "members": [{"constant": false, "id": 2207, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "755:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2206, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2210, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "903:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2209, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2213, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "976:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2212, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2216, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "1051:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2215, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2220, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:5", "nodeType": "VariableDeclaration", "scope": 2221, "src": "1129:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2204_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 2219, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2218, "name": "Snapshot", "nameLocations": ["1129:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2204, "src": "1129:8:5"}, "referencedDeclaration": 2204, "src": "1129:8:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2204_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:5", "nodeType": "StructDefinition", "scope": 2308, "src": "657:496:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 2231, "members": [{"constant": false, "id": 2224, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1320:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2227, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1417:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2226, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2230, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:5", "nodeType": "VariableDeclaration", "scope": 2231, "src": "1526:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2229, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:5", "nodeType": "StructDefinition", "scope": 2308, "src": "1224:331:5", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 2247, "members": [{"constant": false, "id": 2234, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1694:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2233, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2237, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1792:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2236, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2240, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1883:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2239, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2243, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "1968:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2242, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2246, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:5", "nodeType": "VariableDeclaration", "scope": 2247, "src": "2033:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2245, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:5", "nodeType": "StructDefinition", "scope": 2308, "src": "1612:443:5", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 2249, "name": "CallerNotOwner", "nameLocation": "2119:14:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2248, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:5"}, "src": "2113:23:5"}, {"errorSelector": "8c6e5d71", "id": 2251, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2250, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:5"}, "src": "2155:29:5"}, {"errorSelector": "732f9413", "id": 2253, "name": "FeeTooLow", "nameLocation": "2209:9:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2252, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:5"}, "src": "2203:18:5"}, {"errorSelector": "958065d9", "id": 2255, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2254, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:5"}, "src": "2240:32:5"}, {"errorSelector": "1d226c30", "id": 2257, "name": "NoFeeDeclared", "nameLocation": "2297:13:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2256, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:5"}, "src": "2291:22:5"}, {"errorSelector": "97e4b518", "id": 2259, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2258, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:5"}, "src": "2332:35:5"}, {"errorSelector": "961e3e8c", "id": 2261, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2260, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:5"}, "src": "2386:29:5"}, {"errorSelector": "f4d678b8", "id": 2263, "name": "InsufficientBalance", "nameLocation": "2440:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2262, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:5"}, "src": "2434:28:5"}, {"errorSelector": "8d09a73e", "id": 2265, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2264, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:5"}, "src": "2481:31:5"}, {"errorSelector": "e51315d2", "id": 2267, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2266, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:5"}, "src": "2531:30:5"}, {"errorSelector": "2feda3c1", "id": 2269, "name": "IncorrectValidatorState", "nameLocation": "2586:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:5"}, "src": "2580:32:5"}, {"errorSelector": "60300a8d", "id": 2271, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2270, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:5"}, "src": "2631:31:5"}, {"errorSelector": "637297a4", "id": 2273, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2272, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:5"}, "src": "2681:31:5"}, {"errorSelector": "38186224", "id": 2275, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2274, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:5"}, "src": "2731:33:5"}, {"errorSelector": "3babafd2", "id": 2277, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2276, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:5"}, "src": "2783:30:5"}, {"errorSelector": "95a0cf33", "id": 2279, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2278, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:5"}, "src": "2832:28:5"}, {"errorSelector": "185e2b16", "id": 2281, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2280, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:5"}, "src": "2879:29:5"}, {"errorSelector": "12e04c87", "id": 2283, "name": "IncorrectClusterState", "nameLocation": "2933:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2282, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:5"}, "src": "2927:30:5"}, {"errorSelector": "dd020e25", "id": 2285, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2284, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:5"}, "src": "2976:30:5"}, {"errorSelector": "6e6c9cac", "id": 2287, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2286, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:5"}, "src": "3025:37:5"}, {"errorSelector": "6df5ab76", "id": 2289, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2288, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:5"}, "src": "3081:29:5"}, {"errorSelector": "045c4b02", "id": 2291, "name": "TokenTransferFailed", "nameLocation": "3135:19:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2290, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:5"}, "src": "3129:28:5"}, {"errorSelector": "c81272f8", "id": 2293, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2292, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:5"}, "src": "3176:32:5"}, {"errorSelector": "410a2b6c", "id": 2295, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2294, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:5"}, "src": "3227:30:5"}, {"errorSelector": "ea8e4eb5", "id": 2297, "name": "NotAuthorized", "nameLocation": "3282:13:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:5"}, "src": "3276:22:5"}, {"errorSelector": "a5a1ff5d", "id": 2299, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:5"}, "src": "3317:31:5"}, {"errorSelector": "289c9494", "id": 2301, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2300, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:5"}, "src": "3367:30:5"}, {"errorSelector": "8f9195fb", "id": 2303, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2302, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:5"}, "src": "3416:33:5"}, {"errorSelector": "91aa3017", "id": 2305, "name": "MaxValueExceeded", "nameLocation": "3474:16:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2304, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:5"}, "src": "3468:25:5"}, {"errorSelector": "cd4e6167", "id": 2307, "name": "FeeTooHigh", "nameLocation": "3518:10:5", "nodeType": "ErrorDefinition", "parameters": {"id": 2306, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:5"}, "src": "3512:19:5"}], "scope": 2309, "src": "70:3477:5", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3503:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [2308], "ISSVOperators": [1317]}, "id": 1318, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1183, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1184, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1318, "sourceUnit": 2309, "src": "70:31:6", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1185, "name": "ISSVNetworkCore", "nameLocations": ["130:15:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "130:15:6"}, "id": 1186, "nodeType": "InheritanceSpecifier", "src": "130:15:6"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1317, "linearizedBaseContracts": [1317, 2308], "name": "ISSVOperators", "nameLocation": "113:13:6", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1187, "nodeType": "StructuredDocumentation", "src": "152:136:6", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1196, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1192, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1189, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:6", "nodeType": "VariableDeclaration", "scope": 1196, "src": "319:24:6", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1188, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1191, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:6", "nodeType": "VariableDeclaration", "scope": 1196, "src": "345:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1190, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:6"}, "returnParameters": {"id": 1195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1194, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1196, "src": "376:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1193, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:6"}, "scope": 1317, "src": "293:91:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1197, "nodeType": "StructuredDocumentation", "src": "390:103:6", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1202, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1200, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1199, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:6", "nodeType": "VariableDeclaration", "scope": 1202, "src": "522:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:6"}, "returnParameters": {"id": 1201, "nodeType": "ParameterList", "parameters": [], "src": "549:0:6"}, "scope": 1317, "src": "498:52:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1203, "nodeType": "StructuredDocumentation", "src": "556:152:6", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1210, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1208, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1205, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:6", "nodeType": "VariableDeclaration", "scope": 1210, "src": "743:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1204, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1207, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:6", "nodeType": "VariableDeclaration", "scope": 1210, "src": "762:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1206, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:6"}, "returnParameters": {"id": 1209, "nodeType": "ParameterList", "parameters": [], "src": "791:0:6"}, "scope": 1317, "src": "713:79:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1211, "nodeType": "StructuredDocumentation", "src": "798:136:6", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1218, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1216, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1213, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:6", "nodeType": "VariableDeclaration", "scope": 1218, "src": "967:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1212, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1215, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:6", "nodeType": "VariableDeclaration", "scope": 1218, "src": "986:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1214, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:6"}, "returnParameters": {"id": 1217, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:6"}, "scope": 1317, "src": "939:69:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1219, "nodeType": "StructuredDocumentation", "src": "1014:88:6", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1224, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1221, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:6", "nodeType": "VariableDeclaration", "scope": 1224, "src": "1135:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1220, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:6"}, "returnParameters": {"id": 1223, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:6"}, "scope": 1317, "src": "1107:56:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1225, "nodeType": "StructuredDocumentation", "src": "1169:96:6", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1230, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1228, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1227, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:6", "nodeType": "VariableDeclaration", "scope": 1230, "src": "1305:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1226, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:6"}, "returnParameters": {"id": 1229, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:6"}, "scope": 1317, "src": "1270:63:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1231, "nodeType": "StructuredDocumentation", "src": "1339:135:6", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1238, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1236, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1233, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "1506:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1232, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1235, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "1525:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1234, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:6"}, "returnParameters": {"id": 1237, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:6"}, "scope": 1317, "src": "1479:68:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1239, "nodeType": "StructuredDocumentation", "src": "1553:154:6", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1246, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1241, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:6", "nodeType": "VariableDeclaration", "scope": 1246, "src": "1746:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1240, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1243, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:6", "nodeType": "VariableDeclaration", "scope": 1246, "src": "1765:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:6"}, "returnParameters": {"id": 1245, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:6"}, "scope": 1317, "src": "1712:83:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1247, "nodeType": "StructuredDocumentation", "src": "1801:92:6", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1252, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1249, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:6", "nodeType": "VariableDeclaration", "scope": 1252, "src": "1935:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:6"}, "returnParameters": {"id": 1251, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:6"}, "scope": 1317, "src": "1898:65:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1253, "nodeType": "StructuredDocumentation", "src": "1969:317:6", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1263, "name": "OperatorAdded", "nameLocation": "2297:13:6", "nodeType": "EventDefinition", "parameters": {"id": 1262, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1255, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2311:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1257, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2338:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1256, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1259, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2361:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1258, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1261, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:6", "nodeType": "VariableDeclaration", "scope": 1263, "src": "2378:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:6"}, "src": "2291:100:6"}, {"anonymous": false, "documentation": {"id": 1264, "nodeType": "StructuredDocumentation", "src": "2397:103:6", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1268, "name": "OperatorRemoved", "nameLocation": "2511:15:6", "nodeType": "EventDefinition", "parameters": {"id": 1267, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1266, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:6", "nodeType": "VariableDeclaration", "scope": 1268, "src": "2527:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1265, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:6"}, "src": "2505:49:6"}, {"anonymous": false, "documentation": {"id": 1269, "nodeType": "StructuredDocumentation", "src": "2560:179:6", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1275, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:6", "nodeType": "EventDefinition", "parameters": {"id": 1274, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1271, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:6", "nodeType": "VariableDeclaration", "scope": 1275, "src": "2775:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1270, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1273, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:6", "nodeType": "VariableDeclaration", "scope": 1275, "src": "2802:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1272, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:6"}, "src": "2744:79:6"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1285, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:6", "nodeType": "EventDefinition", "parameters": {"id": 1284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1277, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2854:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1279, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2877:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1278, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1281, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2904:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1283, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:6", "nodeType": "VariableDeclaration", "scope": 1285, "src": "2925:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:6"}, "src": "2828:110:6"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1291, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:6", "nodeType": "EventDefinition", "parameters": {"id": 1290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1287, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:6", "nodeType": "VariableDeclaration", "scope": 1291, "src": "2982:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1286, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1289, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:6", "nodeType": "VariableDeclaration", "scope": 1291, "src": "3005:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1288, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:6"}, "src": "2944:88:6"}, {"anonymous": false, "documentation": {"id": 1292, "nodeType": "StructuredDocumentation", "src": "3037:192:6", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1302, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:6", "nodeType": "EventDefinition", "parameters": {"id": 1301, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1294, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3260:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1293, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1296, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3283:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1295, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1298, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3310:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1300, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:6", "nodeType": "VariableDeclaration", "scope": 1302, "src": "3331:11:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:6"}, "src": "3234:110:6"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1310, "name": "OperatorWithdrawn", "nameLocation": "3355:17:6", "nodeType": "EventDefinition", "parameters": {"id": 1309, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1304, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3373:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1303, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1306, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3396:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1305, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1308, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:6", "nodeType": "VariableDeclaration", "scope": 1310, "src": "3423:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:6"}, "src": "3349:89:6"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 1316, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:6", "nodeType": "EventDefinition", "parameters": {"id": 1315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1312, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:6", "nodeType": "VariableDeclaration", "scope": 1316, "src": "3476:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1311, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1314, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:6", "nodeType": "VariableDeclaration", "scope": 1316, "src": "3499:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1313, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:6"}, "src": "3443:82:6"}], "scope": 1318, "src": "103:3424:6", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:3483:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVViews.sol", "exportedSymbols": {"ISSVNetworkCore": [2308], "ISSVViews": [1493]}, "id": 1494, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1319, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1320, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1494, "sourceUnit": 2309, "src": "70:31:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1321, "name": "ISSVNetworkCore", "nameLocations": ["126:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2308, "src": "126:15:7"}, "id": 1322, "nodeType": "InheritanceSpecifier", "src": "126:15:7"}], "canonicalName": "ISSVViews", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1493, "linearizedBaseContracts": [1493, 2308], "name": "ISSVViews", "nameLocation": "113:9:7", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1323, "nodeType": "StructuredDocumentation", "src": "148:261:7", "text": "@notice Gets the validator status\n @param owner The address of the validator's owner\n @param publicKey The public key of the validator\n @return active A boolean indicating if the validator is active. If it does not exist, returns false."}, "functionSelector": "3e2ec160", "id": 1332, "implemented": false, "kind": "function", "modifiers": [], "name": "getValidator", "nameLocation": "423:12:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1325, "mutability": "mutable", "name": "owner", "nameLocation": "444:5:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "436:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1324, "name": "address", "nodeType": "ElementaryTypeName", "src": "436:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1327, "mutability": "mutable", "name": "publicKey", "nameLocation": "466:9:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "451:24:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1326, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "451:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "435:41:7"}, "returnParameters": {"id": 1331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1330, "mutability": "mutable", "name": "active", "nameLocation": "505:6:7", "nodeType": "VariableDeclaration", "scope": 1332, "src": "500:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1329, "name": "bool", "nodeType": "ElementaryTypeName", "src": "500:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "499:13:7"}, "scope": 1493, "src": "414:99:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1333, "nodeType": "StructuredDocumentation", "src": "519:203:7", "text": "@notice Gets the operator fee\n @param operatorId The ID of the operator\n @return fee The fee associated with the operator (SSV). If the operator does not exist, the returned value is 0."}, "functionSelector": "9ad3c745", "id": 1340, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFee", "nameLocation": "736:14:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1335, "mutability": "mutable", "name": "operatorId", "nameLocation": "758:10:7", "nodeType": "VariableDeclaration", "scope": 1340, "src": "751:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "751:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "750:19:7"}, "returnParameters": {"id": 1339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1338, "mutability": "mutable", "name": "fee", "nameLocation": "801:3:7", "nodeType": "VariableDeclaration", "scope": 1340, "src": "793:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "793:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "792:13:7"}, "scope": 1493, "src": "727:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1341, "nodeType": "StructuredDocumentation", "src": "812:373:7", "text": "@notice Gets the declared operator fee\n @param operatorId The ID of the operator\n @return isFeeDeclared A boolean indicating if the fee is declared\n @return fee The declared operator fee (SSV)\n @return approvalBeginTime The time when the fee approval process begins\n @return approvalEndTime The time when the fee approval process ends"}, "functionSelector": "03b3d436", "id": 1354, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorDeclaredFee", "nameLocation": "1199:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1343, "mutability": "mutable", "name": "operatorId", "nameLocation": "1238:10:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1231:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1231:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1221:33:7"}, "returnParameters": {"id": 1353, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1346, "mutability": "mutable", "name": "isFeeDeclared", "nameLocation": "1283:13:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1278:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1345, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1278:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1348, "mutability": "mutable", "name": "fee", "nameLocation": "1306:3:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1298:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1350, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1318:17:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1311:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1349, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1311:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1352, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1344:15:7", "nodeType": "VariableDeclaration", "scope": 1354, "src": "1337:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1351, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1337:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1277:83:7"}, "scope": 1493, "src": "1190:171:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1355, "nodeType": "StructuredDocumentation", "src": "1367:503:7", "text": "@notice Gets operator details by ID\n @param operatorId The ID of the operator\n @return owner The owner of the operator\n @return fee The fee associated with the operator (SSV)\n @return validatorCount The count of validators associated with the operator\n @return whitelisted The whitelisted address of the operator, if any\n @return isPrivate A boolean indicating if the operator is private\n @return active A boolean indicating if the operator is active"}, "functionSelector": "be3f058e", "id": 1372, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorById", "nameLocation": "1884:15:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1357, "mutability": "mutable", "name": "operatorId", "nameLocation": "1916:10:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1909:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1356, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1909:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1899:33:7"}, "returnParameters": {"id": 1371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1360, "mutability": "mutable", "name": "owner", "nameLocation": "1988:5:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1980:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1359, "name": "address", "nodeType": "ElementaryTypeName", "src": "1980:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1362, "mutability": "mutable", "name": "fee", "nameLocation": "2003:3:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "1995:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1361, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1995:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1364, "mutability": "mutable", "name": "validatorCount", "nameLocation": "2015:14:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2008:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1363, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2008:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1366, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2039:11:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2031:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1365, "name": "address", "nodeType": "ElementaryTypeName", "src": "2031:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1368, "mutability": "mutable", "name": "isPrivate", "nameLocation": "2057:9:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2052:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1367, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2052:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1370, "mutability": "mutable", "name": "active", "nameLocation": "2073:6:7", "nodeType": "VariableDeclaration", "scope": 1372, "src": "2068:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1369, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2068:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1979:101:7"}, "scope": 1493, "src": "1875:206:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1373, "nodeType": "StructuredDocumentation", "src": "2087:257:7", "text": "@notice Checks if the cluster can be liquidated\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return isLiquidatable A boolean indicating if the cluster can be liquidated"}, "functionSelector": "16cff008", "id": 1386, "implemented": false, "kind": "function", "modifiers": [], "name": "isLiquidatable", "nameLocation": "2358:14:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1382, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1375, "mutability": "mutable", "name": "owner", "nameLocation": "2390:5:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2382:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2382:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1378, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2421:11:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2405:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1376, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2405:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1377, "nodeType": "ArrayTypeName", "src": "2405:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1381, "mutability": "mutable", "name": "cluster", "nameLocation": "2457:7:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2442:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1380, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1379, "name": "Cluster", "nameLocations": ["2442:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2442:7:7"}, "referencedDeclaration": 2247, "src": "2442:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2372:98:7"}, "returnParameters": {"id": 1385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1384, "mutability": "mutable", "name": "isLiquidatable", "nameLocation": "2499:14:7", "nodeType": "VariableDeclaration", "scope": 1386, "src": "2494:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1383, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2494:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2493:21:7"}, "scope": 1493, "src": "2349:166:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1387, "nodeType": "StructuredDocumentation", "src": "2521:247:7", "text": "@notice Checks if the cluster is liquidated\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return isLiquidated A boolean indicating if the cluster is liquidated"}, "functionSelector": "a694695b", "id": 1400, "implemented": false, "kind": "function", "modifiers": [], "name": "isLiquidated", "nameLocation": "2782:12:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1389, "mutability": "mutable", "name": "owner", "nameLocation": "2812:5:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2804:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1388, "name": "address", "nodeType": "ElementaryTypeName", "src": "2804:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1392, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2843:11:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2827:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1390, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2827:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1391, "nodeType": "ArrayTypeName", "src": "2827:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1395, "mutability": "mutable", "name": "cluster", "nameLocation": "2879:7:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2864:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1393, "name": "Cluster", "nameLocations": ["2864:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "2864:7:7"}, "referencedDeclaration": 2247, "src": "2864:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2794:98:7"}, "returnParameters": {"id": 1399, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1398, "mutability": "mutable", "name": "isLiquidated", "nameLocation": "2921:12:7", "nodeType": "VariableDeclaration", "scope": 1400, "src": "2916:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1397, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2916:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2915:19:7"}, "scope": 1493, "src": "2773:162:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1401, "nodeType": "StructuredDocumentation", "src": "2941:226:7", "text": "@notice Gets the burn rate of the cluster\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return burnRate The burn rate of the cluster (SSV)"}, "functionSelector": "ca162e5e", "id": 1414, "implemented": false, "kind": "function", "modifiers": [], "name": "getBurnRate", "nameLocation": "3181:11:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1410, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1403, "mutability": "mutable", "name": "owner", "nameLocation": "3210:5:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3202:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1402, "name": "address", "nodeType": "ElementaryTypeName", "src": "3202:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1406, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3241:11:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3225:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1404, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3225:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1405, "nodeType": "ArrayTypeName", "src": "3225:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1409, "mutability": "mutable", "name": "cluster", "nameLocation": "3277:7:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3262:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1408, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1407, "name": "Cluster", "nameLocations": ["3262:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3262:7:7"}, "referencedDeclaration": 2247, "src": "3262:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3192:98:7"}, "returnParameters": {"id": 1413, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1412, "mutability": "mutable", "name": "burnRate", "nameLocation": "3322:8:7", "nodeType": "VariableDeclaration", "scope": 1414, "src": "3314:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1411, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3314:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3313:18:7"}, "scope": 1493, "src": "3172:160:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1415, "nodeType": "StructuredDocumentation", "src": "3338:156:7", "text": "@notice Gets operator earnings\n @param operatorId The ID of the operator\n @return earnings The earnings associated with the operator (SSV)"}, "functionSelector": "6d0db0e4", "id": 1422, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorEarnings", "nameLocation": "3508:19:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1417, "mutability": "mutable", "name": "operatorId", "nameLocation": "3535:10:7", "nodeType": "VariableDeclaration", "scope": 1422, "src": "3528:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1416, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3528:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3527:19:7"}, "returnParameters": {"id": 1421, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1420, "mutability": "mutable", "name": "earnings", "nameLocation": "3578:8:7", "nodeType": "VariableDeclaration", "scope": 1422, "src": "3570:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1419, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3570:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3569:18:7"}, "scope": 1493, "src": "3499:89:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1423, "nodeType": "StructuredDocumentation", "src": "3594:221:7", "text": "@notice Gets the balance of the cluster\n @param owner The owner address of the cluster\n @param operatorIds The IDs of the operators in the cluster\n @return balance The balance of the cluster (SSV)"}, "functionSelector": "eb8ecfa7", "id": 1436, "implemented": false, "kind": "function", "modifiers": [], "name": "getBalance", "nameLocation": "3829:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1432, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1425, "mutability": "mutable", "name": "owner", "nameLocation": "3857:5:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3849:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1424, "name": "address", "nodeType": "ElementaryTypeName", "src": "3849:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1428, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3888:11:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3872:27:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1426, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3872:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1427, "nodeType": "ArrayTypeName", "src": "3872:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1431, "mutability": "mutable", "name": "cluster", "nameLocation": "3924:7:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3909:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1430, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1429, "name": "Cluster", "nameLocations": ["3909:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2247, "src": "3909:7:7"}, "referencedDeclaration": 2247, "src": "3909:7:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$2247_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3839:98:7"}, "returnParameters": {"id": 1435, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1434, "mutability": "mutable", "name": "balance", "nameLocation": "3969:7:7", "nodeType": "VariableDeclaration", "scope": 1436, "src": "3961:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3961:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3960:17:7"}, "scope": 1493, "src": "3820:158:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1437, "nodeType": "StructuredDocumentation", "src": "3984:101:7", "text": "@notice Gets the network fee\n @return networkFee The fee associated with the network (SSV)"}, "functionSelector": "fc043830", "id": 1442, "implemented": false, "kind": "function", "modifiers": [], "name": "getNetworkFee", "nameLocation": "4099:13:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1438, "nodeType": "ParameterList", "parameters": [], "src": "4112:2:7"}, "returnParameters": {"id": 1441, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1440, "mutability": "mutable", "name": "networkFee", "nameLocation": "4146:10:7", "nodeType": "VariableDeclaration", "scope": 1442, "src": "4138:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1439, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4138:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4137:20:7"}, "scope": 1493, "src": "4090:68:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1443, "nodeType": "StructuredDocumentation", "src": "4164:116:7", "text": "@notice Gets the network earnings\n @return networkEarnings The earnings associated with the network (SSV)"}, "functionSelector": "777915cb", "id": 1448, "implemented": false, "kind": "function", "modifiers": [], "name": "getNetworkEarnings", "nameLocation": "4294:18:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1444, "nodeType": "ParameterList", "parameters": [], "src": "4312:2:7"}, "returnParameters": {"id": 1447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1446, "mutability": "mutable", "name": "networkEarnings", "nameLocation": "4346:15:7", "nodeType": "VariableDeclaration", "scope": 1448, "src": "4338:23:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4338:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4337:25:7"}, "scope": 1493, "src": "4285:78:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1449, "nodeType": "StructuredDocumentation", "src": "4369:130:7", "text": "@notice Gets the operator fee increase limit\n @return operatorMaxFeeIncrease The maximum limit of operator fee increase"}, "functionSelector": "68465f7d", "id": 1454, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFeeIncreaseLimit", "nameLocation": "4513:27:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1450, "nodeType": "ParameterList", "parameters": [], "src": "4540:2:7"}, "returnParameters": {"id": 1453, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1452, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "4573:22:7", "nodeType": "VariableDeclaration", "scope": 1454, "src": "4566:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1451, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4566:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4565:31:7"}, "scope": 1493, "src": "4504:93:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1455, "nodeType": "StructuredDocumentation", "src": "4603:133:7", "text": "@notice Gets the operator maximum fee for operators that use SSV token\n @return operatorMaxFee The maximum fee value (SSV)"}, "functionSelector": "df02ef7f", "id": 1460, "implemented": false, "kind": "function", "modifiers": [], "name": "getMaximumOperatorFee", "nameLocation": "4750:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1456, "nodeType": "ParameterList", "parameters": [], "src": "4771:2:7"}, "returnParameters": {"id": 1459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1458, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "4804:14:7", "nodeType": "VariableDeclaration", "scope": 1460, "src": "4797:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1457, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4797:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4796:23:7"}, "scope": 1493, "src": "4741:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1461, "nodeType": "StructuredDocumentation", "src": "4826:228:7", "text": "@notice Gets the periods of operator fee declaration and execution\n @return declareOperatorFeePeriod The period for declaring operator fee\n @return executeOperatorFeePeriod The period for executing operator fee"}, "functionSelector": "e6d2834d", "id": 1468, "implemented": false, "kind": "function", "modifiers": [], "name": "getOperatorFeePeriods", "nameLocation": "5068:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1462, "nodeType": "ParameterList", "parameters": [], "src": "5089:2:7"}, "returnParameters": {"id": 1467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1464, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "5146:24:7", "nodeType": "VariableDeclaration", "scope": 1468, "src": "5139:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1463, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5139:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1466, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "5179:24:7", "nodeType": "VariableDeclaration", "scope": 1468, "src": "5172:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1465, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5172:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5138:66:7"}, "scope": 1493, "src": "5059:146:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1469, "nodeType": "StructuredDocumentation", "src": "5211:130:7", "text": "@notice Gets the liquidation threshold period\n @return blocks The number of blocks for the liquidation threshold period"}, "functionSelector": "9040f7c3", "id": 1474, "implemented": false, "kind": "function", "modifiers": [], "name": "getLiquidationThresholdPeriod", "nameLocation": "5355:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1470, "nodeType": "ParameterList", "parameters": [], "src": "5384:2:7"}, "returnParameters": {"id": 1473, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1472, "mutability": "mutable", "name": "blocks", "nameLocation": "5417:6:7", "nodeType": "VariableDeclaration", "scope": 1474, "src": "5410:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5410:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5409:15:7"}, "scope": 1493, "src": "5346:79:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1475, "nodeType": "StructuredDocumentation", "src": "5431:129:7", "text": "@notice Gets the minimum liquidation collateral\n @return amount The minimum amount of collateral for liquidation (SSV)"}, "functionSelector": "5ba3d62a", "id": 1480, "implemented": false, "kind": "function", "modifiers": [], "name": "getMinimumLiquidationCollateral", "nameLocation": "5574:31:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1476, "nodeType": "ParameterList", "parameters": [], "src": "5605:2:7"}, "returnParameters": {"id": 1479, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1478, "mutability": "mutable", "name": "amount", "nameLocation": "5639:6:7", "nodeType": "VariableDeclaration", "scope": 1480, "src": "5631:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1477, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5631:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5630:16:7"}, "scope": 1493, "src": "5565:82:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1481, "nodeType": "StructuredDocumentation", "src": "5653:134:7", "text": "@notice Gets the maximum limit of validators per operator\n @return validators The maximum number of validators per operator"}, "functionSelector": "14cb9d7b", "id": 1486, "implemented": false, "kind": "function", "modifiers": [], "name": "getValidatorsPerOperatorLimit", "nameLocation": "5801:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1482, "nodeType": "ParameterList", "parameters": [], "src": "5830:2:7"}, "returnParameters": {"id": 1485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1484, "mutability": "mutable", "name": "validators", "nameLocation": "5863:10:7", "nodeType": "VariableDeclaration", "scope": 1486, "src": "5856:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1483, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "5856:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "5855:19:7"}, "scope": 1493, "src": "5792:83:7", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1487, "nodeType": "StructuredDocumentation", "src": "5881:96:7", "text": "@notice Gets the version of the contract\n @return version The version of the contract"}, "functionSelector": "0d8e6e2c", "id": 1492, "implemented": false, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "5991:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1488, "nodeType": "ParameterList", "parameters": [], "src": "6001:2:7"}, "returnParameters": {"id": 1491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1490, "mutability": "mutable", "name": "version", "nameLocation": "6041:7:7", "nodeType": "VariableDeclaration", "scope": 1492, "src": "6027:21:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1489, "name": "string", "nodeType": "ElementaryTypeName", "src": "6027:6:7", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6026:23:7"}, "scope": 1493, "src": "5982:68:7", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1494, "src": "103:5949:7", "usedErrors": [2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2297, 2299, 2301, 2303, 2305, 2307]}], "src": "45:6008:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [1624], "Counters": [2382], "IERC20": [2192], "ISSVNetworkCore": [2308], "SSVModules": [1670], "SSVStorage": [1740], "StorageData": [1717]}, "id": 1625, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1495, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1496, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1625, "sourceUnit": 1741, "src": "70:26:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1624, "linearizedBaseContracts": [1624], "name": "CoreLib", "nameLocation": "106:7:8", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 1503, "name": "ModuleUpgraded", "nameLocation": "126:14:8", "nodeType": "EventDefinition", "parameters": {"id": 1502, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1499, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:8", "nodeType": "VariableDeclaration", "scope": 1503, "src": "141:27:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1498, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1497, "name": "SSVModules", "nameLocations": ["141:10:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "141:10:8"}, "referencedDeclaration": 1670, "src": "141:10:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1501, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:8", "nodeType": "VariableDeclaration", "scope": 1503, "src": "170:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1500, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:8"}, "src": "120:73:8"}, {"body": {"id": 1510, "nodeType": "Block", "src": "259:36:8", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 1507, "id": 1509, "nodeType": "Return", "src": "269:19:8"}]}, "id": 1511, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1504, "nodeType": "ParameterList", "parameters": [], "src": "218:2:8"}, "returnParameters": {"id": 1507, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1506, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1511, "src": "244:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1505, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:8"}, "scope": 1624, "src": "199:96:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1534, "nodeType": "Block", "src": "363:136:8", "statements": [{"condition": {"id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:8", "subExpression": {"arguments": [{"id": 1523, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1513, "src": "411:2:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1524, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "415:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1518, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "378:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "378:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:8", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "378:23:8", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:8", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2159, "src": "378:32:8", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1533, "nodeType": "IfStatement", "src": "373:120:8", "trueBody": {"id": 1532, "nodeType": "Block", "src": "424:69:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1527, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "445:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:8", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2291, "src": "445:35:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1531, "nodeType": "RevertStatement", "src": "438:44:8"}]}}]}, "id": 1535, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1516, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1513, "mutability": "mutable", "name": "to", "nameLocation": "334:2:8", "nodeType": "VariableDeclaration", "scope": 1535, "src": "326:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1512, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1515, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:8", "nodeType": "VariableDeclaration", "scope": 1535, "src": "338:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1514, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:8"}, "returnParameters": {"id": 1517, "nodeType": "ParameterList", "parameters": [], "src": "363:0:8"}, "scope": 1624, "src": "301:198:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1561, "nodeType": "Block", "src": "547:163:8", "statements": [{"condition": {"id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:8", "subExpression": {"arguments": [{"expression": {"id": 1545, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 1549, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:8", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$1624", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$1624", "typeString": "library CoreLib"}], "id": 1548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1547, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:8", "typeDescriptions": {}}}, "id": 1550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1551, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1537, "src": "626:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1540, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "562:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "562:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:8", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1712, "src": "562:23:8", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:8", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2191, "src": "562:36:8", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 1552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1560, "nodeType": "IfStatement", "src": "557:147:8", "trueBody": {"id": 1559, "nodeType": "Block", "src": "635:69:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1554, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "656:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:8", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2291, "src": "656:35:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1558, "nodeType": "RevertStatement", "src": "649:44:8"}]}}]}, "id": 1562, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1537, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:8", "nodeType": "VariableDeclaration", "scope": 1562, "src": "522:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:8"}, "returnParameters": {"id": 1539, "nodeType": "ParameterList", "parameters": [], "src": "547:0:8"}, "scope": 1624, "src": "505:205:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1588, "nodeType": "Block", "src": "1352:440:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1570, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1565, "src": "1366:7:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1573, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:8", "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": 1572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:8", "typeDescriptions": {}}}, "id": 1574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1579, "nodeType": "IfStatement", "src": "1362:64:8", "trueBody": {"id": 1578, "nodeType": "Block", "src": "1389:37:8", "statements": [{"expression": {"hexValue": "66616c7365", "id": 1576, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1569, "id": 1577, "nodeType": "Return", "src": "1403:12:8"}]}}, {"assignments": [1581], "declarations": [{"constant": false, "id": 1581, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:8", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1622:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1580, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1582, "nodeType": "VariableDeclarationStatement", "src": "1622:12:8"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:8", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:8", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:8"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:8"}, "nodeType": "YulFunctionCall", "src": "1731:20:8"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:8"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1565, "isOffset": false, "isSlot": false, "src": "1743:7:8", "valueSize": 1}, {"declaration": 1581, "isOffset": false, "isSlot": false, "src": "1723:4:8", "valueSize": 1}], "id": 1583, "nodeType": "InlineAssembly", "src": "1700:61:8"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1584, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "1777:4:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1569, "id": 1587, "nodeType": "Return", "src": "1770:15:8"}]}, "documentation": {"id": 1563, "nodeType": "StructuredDocumentation", "src": "716:565:8", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 1589, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1566, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1565, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:8", "nodeType": "VariableDeclaration", "scope": 1589, "src": "1306:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:8"}, "returnParameters": {"id": 1569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1568, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1589, "src": "1346:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1567, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:8"}, "scope": 1624, "src": "1286:506:8", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1622, "nodeType": "Block", "src": "1879:219:8", "statements": [{"condition": {"id": 1600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:8", "subExpression": {"arguments": [{"id": 1598, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "1905:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1597, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "1894:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1606, "nodeType": "IfStatement", "src": "1889:81:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1601, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2308, "src": "1928:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2308_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:8", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2303, "src": "1928:40:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1605, "nodeType": "RevertStatement", "src": "1921:49:8"}}, {"expression": {"id": 1615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1607, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "1981:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1740_$", "typeString": "type(library SSVStorage)"}}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "1981:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1717_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1611, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:8", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "1981:30:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 1613, "indexExpression": {"id": 1612, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1592, "src": "2012:8:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1614, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "2024:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1616, "nodeType": "ExpressionStatement", "src": "1981:56:8"}, {"eventCall": {"arguments": [{"id": 1618, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1592, "src": "2067:8:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, {"id": 1619, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1594, "src": "2077:13:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1617, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1503, "src": "2052:14:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1670_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1621, "nodeType": "EmitStatement", "src": "2047:44:8"}]}, "id": 1623, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1592, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:8", "nodeType": "VariableDeclaration", "scope": 1623, "src": "1826:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}, "typeName": {"id": 1591, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1590, "name": "SSVModules", "nameLocations": ["1826:10:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "1826:10:8"}, "referencedDeclaration": 1670, "src": "1826:10:8", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1594, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:8", "nodeType": "VariableDeclaration", "scope": 1623, "src": "1847:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1593, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:8"}, "returnParameters": {"id": 1596, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:8"}, "scope": 1624, "src": "1799:299:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1625, "src": "98:2002:8", "usedErrors": []}], "src": "45:2056:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol": {"AST": {"absolutePath": "contracts/libraries/RegisterAuth.sol", "exportedSymbols": {"Authorization": [1631], "RegisterAuth": [1660]}, "id": 1661, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1626, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"canonicalName": "Authorization", "id": 1631, "members": [{"constant": false, "id": 1628, "mutability": "mutable", "name": "registerOperator", "nameLocation": "102:16:9", "nodeType": "VariableDeclaration", "scope": 1631, "src": "97:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1627, "name": "bool", "nodeType": "ElementaryTypeName", "src": "97:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1630, "mutability": "mutable", "name": "registerValidator", "nameLocation": "129:17:9", "nodeType": "VariableDeclaration", "scope": 1631, "src": "124:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1629, "name": "bool", "nodeType": "ElementaryTypeName", "src": "124:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Authorization", "nameLocation": "77:13:9", "nodeType": "StructDefinition", "scope": 1661, "src": "70:79:9", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "RegisterAuth", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1660, "linearizedBaseContracts": [1660], "name": "RegisterAuth", "nameLocation": "159:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1641, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "203:20:9", "nodeType": "VariableDeclaration", "scope": 1660, "src": "178:98:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "178:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e61757468", "id": 1636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "244:26:9", "typeDescriptions": {"typeIdentifier": "t_stringliteral_196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb239", "typeString": "literal_string \"ssv.network.storage.auth\""}, "value": "ssv.network.storage.auth"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb239", "typeString": "literal_string \"ssv.network.storage.auth\""}], "id": 1635, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "234:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "234:37:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "226:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1633, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "226:7:9", "typeDescriptions": {}}}, "id": 1638, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "226:46:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "275:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "226:50:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"canonicalName": "RegisterAuth.AuthData", "id": 1647, "members": [{"constant": false, "id": 1646, "mutability": "mutable", "name": "authorization", "nameLocation": "343:13:9", "nodeType": "VariableDeclaration", "scope": 1647, "src": "309:47:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization)"}, "typeName": {"id": 1645, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1642, "name": "address", "nodeType": "ElementaryTypeName", "src": "317:7:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "309:33:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Authorization_$1631_storage_$", "typeString": "mapping(address => struct Authorization)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1644, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1643, "name": "Authorization", "nameLocations": ["328:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1631, "src": "328:13:9"}, "referencedDeclaration": 1631, "src": "328:13:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Authorization_$1631_storage_ptr", "typeString": "struct Authorization"}}}, "visibility": "internal"}], "name": "AuthData", "nameLocation": "290:8:9", "nodeType": "StructDefinition", "scope": 1660, "src": "283:80:9", "visibility": "public"}, {"body": {"id": 1658, "nodeType": "Block", "src": "429:117:9", "statements": [{"assignments": [1654], "declarations": [{"constant": false, "id": 1654, "mutability": "mutable", "name": "position", "nameLocation": "447:8:9", "nodeType": "VariableDeclaration", "scope": 1658, "src": "439:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1653, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "439:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1656, "initialValue": {"id": 1655, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1641, "src": "458:20:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "439:39:9"}, {"AST": {"nodeType": "YulBlock", "src": "497:43:9", "statements": [{"nodeType": "YulAssignment", "src": "511:19:9", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "522:8:9"}, "variableNames": [{"name": "ad.slot", "nodeType": "YulIdentifier", "src": "511:7:9"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1651, "isOffset": false, "isSlot": true, "src": "511:7:9", "suffix": "slot", "valueSize": 1}, {"declaration": 1654, "isOffset": false, "isSlot": false, "src": "522:8:9", "valueSize": 1}], "id": 1657, "nodeType": "InlineAssembly", "src": "488:52:9"}]}, "id": 1659, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "378:4:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1648, "nodeType": "ParameterList", "parameters": [], "src": "382:2:9"}, "returnParameters": {"id": 1652, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1651, "mutability": "mutable", "name": "ad", "nameLocation": "425:2:9", "nodeType": "VariableDeclaration", "scope": 1659, "src": "408:19:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData"}, "typeName": {"id": 1650, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1649, "name": "AuthData", "nameLocations": ["408:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1647, "src": "408:8:9"}, "referencedDeclaration": 1647, "src": "408:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_AuthData_$1647_storage_ptr", "typeString": "struct RegisterAuth.AuthData"}}, "visibility": "internal"}], "src": "407:21:9"}, "scope": 1660, "src": "369:177:9", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1661, "src": "151:397:9", "usedErrors": []}], "src": "45:504:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2382], "IERC20": [2192], "ISSVNetworkCore": [2308], "SSVModules": [1670], "SSVStorage": [1740], "StorageData": [1717]}, "id": 1741, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1662, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:10"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1663, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2309, "src": "70:43:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1664, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2383, "src": "114:52:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1665, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1741, "sourceUnit": 2193, "src": "167:56:10", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1670, "members": [{"id": 1666, "name": "SSV_OPERATORS", "nameLocation": "247:13:10", "nodeType": "EnumValue", "src": "247:13:10"}, {"id": 1667, "name": "SSV_CLUSTERS", "nameLocation": "266:12:10", "nodeType": "EnumValue", "src": "266:12:10"}, {"id": 1668, "name": "SSV_DAO", "nameLocation": "284:7:10", "nodeType": "EnumValue", "src": "284:7:10"}, {"id": 1669, "name": "SSV_VIEWS", "nameLocation": "297:9:10", "nodeType": "EnumValue", "src": "297:9:10"}], "name": "SSVModules", "nameLocation": "230:10:10", "nodeType": "EnumDefinition", "src": "225:83:10"}, {"canonicalName": "StorageData", "id": 1717, "members": [{"constant": false, "id": 1675, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "599:40:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1674, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1672, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1673, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1680, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "756:36:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1679, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1678, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1685, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "870:39:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1684, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1682, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1691, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "998:43:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1690, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1688, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1687, "name": "SSVModules", "nameLocations": ["1006:10:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "1006:10:10"}, "referencedDeclaration": 1670, "src": "1006:10:10", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1670", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1670_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1689, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1696, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1159:45:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 1695, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1693, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1694, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1702, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1304:85:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2231_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 1701, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1698, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2231_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1700, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1699, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:10", "1338:24:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2231, "src": "1322:40:10"}, "referencedDeclaration": 2231, "src": "1322:40:10", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2231_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 1708, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1470:53:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2221_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 1707, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1704, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2221_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1706, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1705, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:10", "1504:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2221, "src": "1488:24:10"}, "referencedDeclaration": 2221, "src": "1488:24:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2221_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 1712, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1599:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}, "typeName": {"id": 1711, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1710, "name": "IERC20", "nameLocations": ["1599:6:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2192, "src": "1599:6:10"}, "referencedDeclaration": 2192, "src": "1599:6:10", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2192", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1716, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:10", "nodeType": "VariableDeclaration", "scope": 1717, "src": "1686:31:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1715, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1714, "name": "Counters.Counter", "nameLocations": ["1686:8:10", "1695:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1686:16:10"}, "referencedDeclaration": 2314, "src": "1686:16:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:10", "nodeType": "StructDefinition", "scope": 1741, "src": "419:1301:10", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1740, "linearizedBaseContracts": [1740], "name": "SSVStorage", "nameLocation": "1730:10:10", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1727, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:10", "nodeType": "VariableDeclaration", "scope": 1740, "src": "1747:98:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1718, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 1722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 1721, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1723, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1720, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:10", "typeDescriptions": {}}}, "id": 1724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1738, "nodeType": "Block", "src": "1915:117:10", "statements": [{"assignments": [1734], "declarations": [{"constant": false, "id": 1734, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:10", "nodeType": "VariableDeclaration", "scope": 1738, "src": "1925:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1733, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1736, "initialValue": {"id": 1735, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1727, "src": "1944:20:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:10"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:10", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:10", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:10"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:10"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1734, "isOffset": false, "isSlot": false, "src": "2008:8:10", "valueSize": 1}, {"declaration": 1731, "isOffset": false, "isSlot": true, "src": "1997:7:10", "suffix": "slot", "valueSize": 1}], "id": 1737, "nodeType": "InlineAssembly", "src": "1974:52:10"}]}, "id": 1739, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1728, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:10"}, "returnParameters": {"id": 1732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1731, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:10", "nodeType": "VariableDeclaration", "scope": 1739, "src": "1891:22:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1730, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1729, "name": "StorageData", "nameLocations": ["1891:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1717, "src": "1891:11:10"}, "referencedDeclaration": 1717, "src": "1891:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1717_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:10"}, "scope": 1740, "src": "1852:180:10", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1741, "src": "1722:312:10", "usedErrors": []}], "src": "45:1990:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1805], "StorageProtocol": [1782]}, "id": 1806, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1742, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:11"}, {"canonicalName": "StorageProtocol", "id": 1782, "members": [{"constant": false, "id": 1745, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "307:33:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1744, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1748, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "406:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1751, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "505:26:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1750, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1754, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "598:33:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:11", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "683:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1760, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "758:22:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1763, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "833:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1766, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "945:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1769, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1052:35:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1768, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1772, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1166:31:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1775, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1278:31:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1774, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1778, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1397:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1781, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:11", "nodeType": "VariableDeclaration", "scope": 1782, "src": "1504:21:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:11", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:11", "nodeType": "StructDefinition", "scope": 1806, "src": "201:1327:11", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1805, "linearizedBaseContracts": [1805], "name": "SSVStorageProtocol", "nameLocation": "1538:18:11", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1792, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:11", "nodeType": "VariableDeclaration", "scope": 1805, "src": "1563:102:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1783, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1791, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1786, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:11", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1784, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:11", "typeDescriptions": {}}}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1803, "nodeType": "Block", "src": "1739:117:11", "statements": [{"assignments": [1799], "declarations": [{"constant": false, "id": 1799, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:11", "nodeType": "VariableDeclaration", "scope": 1803, "src": "1749:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1801, "initialValue": {"id": 1800, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1792, "src": "1768:20:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:11"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:11", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:11", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:11"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:11"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1799, "isOffset": false, "isSlot": false, "src": "1832:8:11", "valueSize": 1}, {"declaration": 1796, "isOffset": false, "isSlot": true, "src": "1821:7:11", "suffix": "slot", "valueSize": 1}], "id": 1802, "nodeType": "InlineAssembly", "src": "1798:52:11"}]}, "id": 1804, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1793, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:11"}, "returnParameters": {"id": 1797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1796, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:11", "nodeType": "VariableDeclaration", "scope": 1804, "src": "1711:26:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1795, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1794, "name": "StorageProtocol", "nameLocations": ["1711:15:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 1782, "src": "1711:15:11"}, "referencedDeclaration": 1782, "src": "1711:15:11", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1782_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:11"}, "scope": 1805, "src": "1672:184:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1806, "src": "1530:328:11", "usedErrors": []}], "src": "45:1814:11"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1810], "Types256": [1872], "Types64": [1823]}, "id": 1873, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1807, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:12"}, {"constant": true, "id": 1810, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:12", "nodeType": "VariableDeclaration", "scope": 1873, "src": "70:45:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1808, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:12", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1823, "linearizedBaseContracts": [1823], "name": "Types64", "nameLocation": "126:7:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1821, "nodeType": "Block", "src": "202:47:12", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1817, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1812, "src": "219:5:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1818, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "227:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1816, "id": 1820, "nodeType": "Return", "src": "212:30:12"}]}, "id": 1822, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1813, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1812, "mutability": "mutable", "name": "value", "nameLocation": "163:5:12", "nodeType": "VariableDeclaration", "scope": 1822, "src": "156:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1811, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:12"}, "returnParameters": {"id": 1816, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1815, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1822, "src": "193:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:12"}, "scope": 1823, "src": "140:109:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1873, "src": "118:133:12", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1872, "linearizedBaseContracts": [1872], "name": "Types256", "nameLocation": "261:8:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1851, "nodeType": "Block", "src": "338:144:12", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1831, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1825, "src": "356:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1832, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:12", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:12", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1835, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "376:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1837, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1830, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1841, "nodeType": "ExpressionStatement", "src": "348:67:12"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1848, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1845, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1825, "src": "450:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1844, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "439:10:12", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1847, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "459:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1843, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1842, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:12", "typeDescriptions": {}}}, "id": 1849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1829, "id": 1850, "nodeType": "Return", "src": "425:50:12"}]}, "id": 1852, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1826, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1825, "mutability": "mutable", "name": "value", "nameLocation": "300:5:12", "nodeType": "VariableDeclaration", "scope": 1852, "src": "292:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1824, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:12"}, "returnParameters": {"id": 1829, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1828, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1852, "src": "330:6:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1827, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:12", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:12"}, "scope": 1872, "src": "276:206:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1870, "nodeType": "Block", "src": "555:102:12", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1860, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "573:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1861, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "581:15:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1867, "nodeType": "ExpressionStatement", "src": "565:63:12"}, {"expression": {"id": 1868, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "645:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1858, "id": 1869, "nodeType": "Return", "src": "638:12:12"}]}, "id": 1871, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:12", "nodeType": "FunctionDefinition", "parameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1854, "mutability": "mutable", "name": "value", "nameLocation": "516:5:12", "nodeType": "VariableDeclaration", "scope": 1871, "src": "508:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:12"}, "returnParameters": {"id": 1858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1857, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1871, "src": "546:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:12"}, "scope": 1872, "src": "488:169:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1873, "src": "253:406:12", "usedErrors": []}], "src": "45:615:12"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683], "Ownable2StepUpgradeable": [1978], "OwnableUpgradeable": [2514]}, "id": 1979, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1874, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:13"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "./OwnableUpgradeable.sol", "id": 1875, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1979, "sourceUnit": 2515, "src": "132:34:13", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 1876, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1979, "sourceUnit": 2684, "src": "167:42:13", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1878, "name": "Initializable", "nameLocations": ["698:13:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "698:13:13"}, "id": 1879, "nodeType": "InheritanceSpecifier", "src": "698:13:13"}, {"baseName": {"id": 1880, "name": "OwnableUpgradeable", "nameLocations": ["713:18:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2514, "src": "713:18:13"}, "id": 1881, "nodeType": "InheritanceSpecifier", "src": "713:18:13"}], "canonicalName": "Ownable2StepUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1877, "nodeType": "StructuredDocumentation", "src": "211:441:13", "text": " @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."}, "fullyImplemented": true, "id": 1978, "linearizedBaseContracts": [1978, 2514, 3059, 2683], "name": "Ownable2StepUpgradeable", "nameLocation": "671:23:13", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1889, "nodeType": "Block", "src": "795:43:13", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 1886, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "805:24:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 1887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1888, "nodeType": "ExpressionStatement", "src": "805:26:13"}]}, "id": 1890, "implemented": true, "kind": "function", "modifiers": [{"id": 1884, "kind": "modifierInvocation", "modifierName": {"id": 1883, "name": "onlyInitializing", "nameLocations": ["778:16:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "778:16:13"}, "nodeType": "ModifierInvocation", "src": "778:16:13"}], "name": "__Ownable2Step_init", "nameLocation": "747:19:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1882, "nodeType": "ParameterList", "parameters": [], "src": "766:2:13"}, "returnParameters": {"id": 1885, "nodeType": "ParameterList", "parameters": [], "src": "795:0:13"}, "scope": 1978, "src": "738:100:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1895, "nodeType": "Block", "src": "911:7:13", "statements": []}, "id": 1896, "implemented": true, "kind": "function", "modifiers": [{"id": 1893, "kind": "modifierInvocation", "modifierName": {"id": 1892, "name": "onlyInitializing", "nameLocations": ["894:16:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "894:16:13"}, "nodeType": "ModifierInvocation", "src": "894:16:13"}], "name": "__Ownable2Step_init_unchained", "nameLocation": "853:29:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1891, "nodeType": "ParameterList", "parameters": [], "src": "882:2:13"}, "returnParameters": {"id": 1894, "nodeType": "ParameterList", "parameters": [], "src": "911:0:13"}, "scope": 1978, "src": "844:74:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "id": 1898, "mutability": "mutable", "name": "_pendingOwner", "nameLocation": "939:13:13", "nodeType": "VariableDeclaration", "scope": 1978, "src": "923:29:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1897, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700", "id": 1904, "name": "OwnershipTransferStarted", "nameLocation": "965:24:13", "nodeType": "EventDefinition", "parameters": {"id": 1903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1900, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "1006:13:13", "nodeType": "VariableDeclaration", "scope": 1904, "src": "990:29:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1899, "name": "address", "nodeType": "ElementaryTypeName", "src": "990:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1902, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "1037:8:13", "nodeType": "VariableDeclaration", "scope": 1904, "src": "1021:24:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1901, "name": "address", "nodeType": "ElementaryTypeName", "src": "1021:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "989:57:13"}, "src": "959:88:13"}, {"body": {"id": 1912, "nodeType": "Block", "src": "1185:37:13", "statements": [{"expression": {"id": 1910, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1202:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1909, "id": 1911, "nodeType": "Return", "src": "1195:20:13"}]}, "documentation": {"id": 1905, "nodeType": "StructuredDocumentation", "src": "1053:65:13", "text": " @dev Returns the address of the pending owner."}, "functionSelector": "e30c3978", "id": 1913, "implemented": true, "kind": "function", "modifiers": [], "name": "pendingOwner", "nameLocation": "1132:12:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1906, "nodeType": "ParameterList", "parameters": [], "src": "1144:2:13"}, "returnParameters": {"id": 1909, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1908, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1913, "src": "1176:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1907, "name": "address", "nodeType": "ElementaryTypeName", "src": "1176:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1175:9:13"}, "scope": 1978, "src": "1123:99:13", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [2488], "body": {"id": 1932, "nodeType": "Block", "src": "1494:99:13", "statements": [{"expression": {"id": 1924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1922, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1504:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1923, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1916, "src": "1520:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1504:24:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1925, "nodeType": "ExpressionStatement", "src": "1504:24:13"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1927, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2437, "src": "1568:5:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1568:7:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1929, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1916, "src": "1577:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1926, "name": "OwnershipTransferStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1904, "src": "1543:24:13", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1543:43:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1931, "nodeType": "EmitStatement", "src": "1538:48:13"}]}, "documentation": {"id": 1914, "nodeType": "StructuredDocumentation", "src": "1228:182:13", "text": " @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 1933, "implemented": true, "kind": "function", "modifiers": [{"id": 1920, "kind": "modifierInvocation", "modifierName": {"id": 1919, "name": "onlyOwner", "nameLocations": ["1484:9:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "1484:9:13"}, "nodeType": "ModifierInvocation", "src": "1484:9:13"}], "name": "transferOwnership", "nameLocation": "1424:17:13", "nodeType": "FunctionDefinition", "overrides": {"id": 1918, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1475:8:13"}, "parameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1916, "mutability": "mutable", "name": "newOwner", "nameLocation": "1450:8:13", "nodeType": "VariableDeclaration", "scope": 1933, "src": "1442:16:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1915, "name": "address", "nodeType": "ElementaryTypeName", "src": "1442:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1441:18:13"}, "returnParameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "1494:0:13"}, "scope": 1978, "src": "1415:178:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [2508], "body": {"id": 1949, "nodeType": "Block", "src": "1849:81:13", "statements": [{"expression": {"id": 1941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "1859:20:13", "subExpression": {"id": 1940, "name": "_pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1898, "src": "1866:13:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1942, "nodeType": "ExpressionStatement", "src": "1859:20:13"}, {"expression": {"arguments": [{"id": 1946, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1936, "src": "1914:8:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 1943, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1889:5:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_Ownable2StepUpgradeable_$1978_$", "typeString": "type(contract super Ownable2StepUpgradeable)"}}, "id": 1945, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1895:18:13", "memberName": "_transferOwnership", "nodeType": "MemberAccess", "referencedDeclaration": 2508, "src": "1889:24:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1947, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1889:34:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1948, "nodeType": "ExpressionStatement", "src": "1889:34:13"}]}, "documentation": {"id": 1934, "nodeType": "StructuredDocumentation", "src": "1599:173:13", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."}, "id": 1950, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "1786:18:13", "nodeType": "FunctionDefinition", "overrides": {"id": 1938, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1840:8:13"}, "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1936, "mutability": "mutable", "name": "newOwner", "nameLocation": "1813:8:13", "nodeType": "VariableDeclaration", "scope": 1950, "src": "1805:16:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1935, "name": "address", "nodeType": "ElementaryTypeName", "src": "1805:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1804:18:13"}, "returnParameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "1849:0:13"}, "scope": 1978, "src": "1777:153:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1971, "nodeType": "Block", "src": "2052:170:13", "statements": [{"assignments": [1955], "declarations": [{"constant": false, "id": 1955, "mutability": "mutable", "name": "sender", "nameLocation": "2070:6:13", "nodeType": "VariableDeclaration", "scope": 1971, "src": "2062:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1954, "name": "address", "nodeType": "ElementaryTypeName", "src": "2062:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1958, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 1956, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "2079:10:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2079:12:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2062:29:13"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 1960, "name": "pendingOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1913, "src": "2109:12:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2109:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1962, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2127:6:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2109:24:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572", "id": 1964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2135:43:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc", "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""}, "value": "Ownable2Step: caller is not the new owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc", "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""}], "id": 1959, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2101:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2101:78:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1966, "nodeType": "ExpressionStatement", "src": "2101:78:13"}, {"expression": {"arguments": [{"id": 1968, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2208:6:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1967, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [1950], "referencedDeclaration": 1950, "src": "2189:18:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2189:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1970, "nodeType": "ExpressionStatement", "src": "2189:26:13"}]}, "documentation": {"id": 1951, "nodeType": "StructuredDocumentation", "src": "1936:69:13", "text": " @dev The new owner accepts the ownership transfer."}, "functionSelector": "79ba5097", "id": 1972, "implemented": true, "kind": "function", "modifiers": [], "name": "acceptOwnership", "nameLocation": "2019:15:13", "nodeType": "FunctionDefinition", "parameters": {"id": 1952, "nodeType": "ParameterList", "parameters": [], "src": "2034:2:13"}, "returnParameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [], "src": "2052:0:13"}, "scope": 1978, "src": "2010:212:13", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"constant": false, "documentation": {"id": 1973, "nodeType": "StructuredDocumentation", "src": "2228:254:13", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1977, "mutability": "mutable", "name": "__gap", "nameLocation": "2507:5:13", "nodeType": "VariableDeclaration", "scope": 1978, "src": "2487:25:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 1974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2487:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1976, "length": {"hexValue": "3439", "id": 1975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2495:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "2487:11:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 1979, "src": "653:1862:13", "usedErrors": []}], "src": "107:2409:13"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683], "OwnableUpgradeable": [2514]}, "id": 2515, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2384, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:14"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../utils/ContextUpgradeable.sol", "id": 2385, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2515, "sourceUnit": 3060, "src": "127:41:14", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 2386, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2515, "sourceUnit": 2684, "src": "169:42:14", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2388, "name": "Initializable", "nameLocations": ["748:13:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "748:13:14"}, "id": 2389, "nodeType": "InheritanceSpecifier", "src": "748:13:14"}, {"baseName": {"id": 2390, "name": "ContextUpgradeable", "nameLocations": ["763:18:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 3059, "src": "763:18:14"}, "id": 2391, "nodeType": "InheritanceSpecifier", "src": "763:18:14"}], "canonicalName": "OwnableUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2387, "nodeType": "StructuredDocumentation", "src": "213:494:14", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 2514, "linearizedBaseContracts": [2514, 3059, 2683], "name": "OwnableUpgradeable", "nameLocation": "726:18:14", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2393, "mutability": "mutable", "name": "_owner", "nameLocation": "804:6:14", "nodeType": "VariableDeclaration", "scope": 2514, "src": "788:22:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2392, "name": "address", "nodeType": "ElementaryTypeName", "src": "788:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 2399, "name": "OwnershipTransferred", "nameLocation": "823:20:14", "nodeType": "EventDefinition", "parameters": {"id": 2398, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2395, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "860:13:14", "nodeType": "VariableDeclaration", "scope": 2399, "src": "844:29:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2394, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2397, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "891:8:14", "nodeType": "VariableDeclaration", "scope": 2399, "src": "875:24:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2396, "name": "address", "nodeType": "ElementaryTypeName", "src": "875:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "843:57:14"}, "src": "817:84:14"}, {"body": {"id": 2408, "nodeType": "Block", "src": "1055:43:14", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2405, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2420, "src": "1065:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 2406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1065:26:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2407, "nodeType": "ExpressionStatement", "src": "1065:26:14"}]}, "documentation": {"id": 2400, "nodeType": "StructuredDocumentation", "src": "907:91:14", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 2409, "implemented": true, "kind": "function", "modifiers": [{"id": 2403, "kind": "modifierInvocation", "modifierName": {"id": 2402, "name": "onlyInitializing", "nameLocations": ["1038:16:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1038:16:14"}, "nodeType": "ModifierInvocation", "src": "1038:16:14"}], "name": "__Ownable_init", "nameLocation": "1012:14:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2401, "nodeType": "ParameterList", "parameters": [], "src": "1026:2:14"}, "returnParameters": {"id": 2404, "nodeType": "ParameterList", "parameters": [], "src": "1055:0:14"}, "scope": 2514, "src": "1003:95:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2419, "nodeType": "Block", "src": "1166:49:14", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2415, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "1195:10:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:12:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2414, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "1176:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1176:32:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2418, "nodeType": "ExpressionStatement", "src": "1176:32:14"}]}, "id": 2420, "implemented": true, "kind": "function", "modifiers": [{"id": 2412, "kind": "modifierInvocation", "modifierName": {"id": 2411, "name": "onlyInitializing", "nameLocations": ["1149:16:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1149:16:14"}, "nodeType": "ModifierInvocation", "src": "1149:16:14"}], "name": "__Ownable_init_unchained", "nameLocation": "1113:24:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2410, "nodeType": "ParameterList", "parameters": [], "src": "1137:2:14"}, "returnParameters": {"id": 2413, "nodeType": "ParameterList", "parameters": [], "src": "1166:0:14"}, "scope": 2514, "src": "1104:111:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2427, "nodeType": "Block", "src": "1324:41:14", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2423, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2451, "src": "1334:11:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1334:13:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2425, "nodeType": "ExpressionStatement", "src": "1334:13:14"}, {"id": 2426, "nodeType": "PlaceholderStatement", "src": "1357:1:14"}]}, "documentation": {"id": 2421, "nodeType": "StructuredDocumentation", "src": "1221:77:14", "text": " @dev Throws if called by any account other than the owner."}, "id": 2428, "name": "onlyOwner", "nameLocation": "1312:9:14", "nodeType": "ModifierDefinition", "parameters": {"id": 2422, "nodeType": "ParameterList", "parameters": [], "src": "1321:2:14"}, "src": "1303:62:14", "virtual": false, "visibility": "internal"}, {"body": {"id": 2436, "nodeType": "Block", "src": "1496:30:14", "statements": [{"expression": {"id": 2434, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "1513:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2433, "id": 2435, "nodeType": "Return", "src": "1506:13:14"}]}, "documentation": {"id": 2429, "nodeType": "StructuredDocumentation", "src": "1371:65:14", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 2437, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1450:5:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2430, "nodeType": "ParameterList", "parameters": [], "src": "1455:2:14"}, "returnParameters": {"id": 2433, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2432, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2437, "src": "1487:7:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2431, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1486:9:14"}, "scope": 2514, "src": "1441:85:14", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 2450, "nodeType": "Block", "src": "1644:85:14", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2442, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2437, "src": "1662:5:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1662:7:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2444, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "1673:10:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1673:12:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1662:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 2447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1687:34:14", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 2441, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1654:7:14", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1654:68:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2449, "nodeType": "ExpressionStatement", "src": "1654:68:14"}]}, "documentation": {"id": 2438, "nodeType": "StructuredDocumentation", "src": "1532:62:14", "text": " @dev Throws if the sender is not the owner."}, "id": 2451, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1608:11:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2439, "nodeType": "ParameterList", "parameters": [], "src": "1619:2:14"}, "returnParameters": {"id": 2440, "nodeType": "ParameterList", "parameters": [], "src": "1644:0:14"}, "scope": 2514, "src": "1599:130:14", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2464, "nodeType": "Block", "src": "2118:47:14", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 2460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2155:1:14", "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": 2459, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2147:7:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2458, "name": "address", "nodeType": "ElementaryTypeName", "src": "2147:7:14", "typeDescriptions": {}}}, "id": 2461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2147:10:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2457, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "2128:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2462, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2128:30:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2463, "nodeType": "ExpressionStatement", "src": "2128:30:14"}]}, "documentation": {"id": 2452, "nodeType": "StructuredDocumentation", "src": "1735:324:14", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 2465, "implemented": true, "kind": "function", "modifiers": [{"id": 2455, "kind": "modifierInvocation", "modifierName": {"id": 2454, "name": "onlyOwner", "nameLocations": ["2108:9:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "2108:9:14"}, "nodeType": "ModifierInvocation", "src": "2108:9:14"}], "name": "renounceOwnership", "nameLocation": "2073:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2453, "nodeType": "ParameterList", "parameters": [], "src": "2090:2:14"}, "returnParameters": {"id": 2456, "nodeType": "ParameterList", "parameters": [], "src": "2118:0:14"}, "scope": 2514, "src": "2064:101:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2487, "nodeType": "Block", "src": "2384:128:14", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2474, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "2402:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2422:1:14", "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": 2476, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2414:7:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2475, "name": "address", "nodeType": "ElementaryTypeName", "src": "2414:7:14", "typeDescriptions": {}}}, "id": 2478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2414:10:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2402:22:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 2480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2426:40:14", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 2473, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2394:7:14", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2394:73:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2482, "nodeType": "ExpressionStatement", "src": "2394:73:14"}, {"expression": {"arguments": [{"id": 2484, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "2496:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2483, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2508, "src": "2477:18:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2477:28:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2486, "nodeType": "ExpressionStatement", "src": "2477:28:14"}]}, "documentation": {"id": 2466, "nodeType": "StructuredDocumentation", "src": "2171:138:14", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 2488, "implemented": true, "kind": "function", "modifiers": [{"id": 2471, "kind": "modifierInvocation", "modifierName": {"id": 2470, "name": "onlyOwner", "nameLocations": ["2374:9:14"], "nodeType": "IdentifierPath", "referencedDeclaration": 2428, "src": "2374:9:14"}, "nodeType": "ModifierInvocation", "src": "2374:9:14"}], "name": "transferOwnership", "nameLocation": "2323:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2468, "mutability": "mutable", "name": "newOwner", "nameLocation": "2349:8:14", "nodeType": "VariableDeclaration", "scope": 2488, "src": "2341:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2467, "name": "address", "nodeType": "ElementaryTypeName", "src": "2341:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2340:18:14"}, "returnParameters": {"id": 2472, "nodeType": "ParameterList", "parameters": [], "src": "2384:0:14"}, "scope": 2514, "src": "2314:198:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2507, "nodeType": "Block", "src": "2729:124:14", "statements": [{"assignments": [2495], "declarations": [{"constant": false, "id": 2495, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2747:8:14", "nodeType": "VariableDeclaration", "scope": 2507, "src": "2739:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2494, "name": "address", "nodeType": "ElementaryTypeName", "src": "2739:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 2497, "initialValue": {"id": 2496, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "2758:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2739:25:14"}, {"expression": {"id": 2500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2498, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2393, "src": "2774:6:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2499, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2491, "src": "2783:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2774:17:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2501, "nodeType": "ExpressionStatement", "src": "2774:17:14"}, {"eventCall": {"arguments": [{"id": 2503, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2495, "src": "2827:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2504, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2491, "src": "2837:8:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2502, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2399, "src": "2806:20:14", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2806:40:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2506, "nodeType": "EmitStatement", "src": "2801:45:14"}]}, "documentation": {"id": 2489, "nodeType": "StructuredDocumentation", "src": "2518:143:14", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 2508, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2675:18:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2492, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2491, "mutability": "mutable", "name": "newOwner", "nameLocation": "2702:8:14", "nodeType": "VariableDeclaration", "scope": 2508, "src": "2694:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2490, "name": "address", "nodeType": "ElementaryTypeName", "src": "2694:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2693:18:14"}, "returnParameters": {"id": 2493, "nodeType": "ParameterList", "parameters": [], "src": "2729:0:14"}, "scope": 2514, "src": "2666:187:14", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2509, "nodeType": "StructuredDocumentation", "src": "2859:254:14", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2513, "mutability": "mutable", "name": "__gap", "nameLocation": "3138:5:14", "nodeType": "VariableDeclaration", "scope": 2514, "src": "3118:25:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 2510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3118:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2512, "length": {"hexValue": "3439", "id": 2511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3126:2:14", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3118:11:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 2515, "src": "708:2438:14", "usedErrors": []}], "src": "102:3045:14"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "exportedSymbols": {"IERC1967Upgradeable": [3410]}, "id": 3411, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3391, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:15"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC1967Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3392, "nodeType": "StructuredDocumentation", "src": "132:133:15", "text": " @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"}, "fullyImplemented": true, "id": 3410, "linearizedBaseContracts": [3410], "name": "IERC1967Upgradeable", "nameLocation": "276:19:15", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 3393, "nodeType": "StructuredDocumentation", "src": "302:68:15", "text": " @dev Emitted when the implementation is upgraded."}, "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", "id": 3397, "name": "Upgraded", "nameLocation": "381:8:15", "nodeType": "EventDefinition", "parameters": {"id": 3396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3395, "indexed": true, "mutability": "mutable", "name": "implementation", "nameLocation": "406:14:15", "nodeType": "VariableDeclaration", "scope": 3397, "src": "390:30:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3394, "name": "address", "nodeType": "ElementaryTypeName", "src": "390:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "389:32:15"}, "src": "375:47:15"}, {"anonymous": false, "documentation": {"id": 3398, "nodeType": "StructuredDocumentation", "src": "428:67:15", "text": " @dev Emitted when the admin account has changed."}, "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", "id": 3404, "name": "AdminChanged", "nameLocation": "506:12:15", "nodeType": "EventDefinition", "parameters": {"id": 3403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3400, "indexed": false, "mutability": "mutable", "name": "previousAdmin", "nameLocation": "527:13:15", "nodeType": "VariableDeclaration", "scope": 3404, "src": "519:21:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3399, "name": "address", "nodeType": "ElementaryTypeName", "src": "519:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3402, "indexed": false, "mutability": "mutable", "name": "newAdmin", "nameLocation": "550:8:15", "nodeType": "VariableDeclaration", "scope": 3404, "src": "542:16:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3401, "name": "address", "nodeType": "ElementaryTypeName", "src": "542:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "518:41:15"}, "src": "500:60:15"}, {"anonymous": false, "documentation": {"id": 3405, "nodeType": "StructuredDocumentation", "src": "566:59:15", "text": " @dev Emitted when the beacon is changed."}, "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", "id": 3409, "name": "BeaconUpgraded", "nameLocation": "636:14:15", "nodeType": "EventDefinition", "parameters": {"id": 3408, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3407, "indexed": true, "mutability": "mutable", "name": "beacon", "nameLocation": "667:6:15", "nodeType": "VariableDeclaration", "scope": 3409, "src": "651:22:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3406, "name": "address", "nodeType": "ElementaryTypeName", "src": "651:7:15", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "650:24:15"}, "src": "630:45:15"}], "scope": 3411, "src": "266:411:15", "usedErrors": []}], "src": "107:571:15"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "exportedSymbols": {"IERC1822ProxiableUpgradeable": [2693]}, "id": 2694, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2685, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "113:23:16"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC1822ProxiableUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2686, "nodeType": "StructuredDocumentation", "src": "138:203:16", "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."}, "fullyImplemented": false, "id": 2693, "linearizedBaseContracts": [2693], "name": "IERC1822ProxiableUpgradeable", "nameLocation": "352:28:16", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2687, "nodeType": "StructuredDocumentation", "src": "387:438:16", "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."}, "functionSelector": "52d1902d", "id": 2692, "implemented": false, "kind": "function", "modifiers": [], "name": "proxiableUUID", "nameLocation": "839:13:16", "nodeType": "FunctionDefinition", "parameters": {"id": 2688, "nodeType": "ParameterList", "parameters": [], "src": "852:2:16"}, "returnParameters": {"id": 2691, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2690, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2692, "src": "878:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2689, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:16", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "877:9:16"}, "scope": 2693, "src": "830:57:16", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2694, "src": "342:547:16", "usedErrors": []}], "src": "113:777:16"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "Initializable": [2683], "StorageSlotUpgradeable": [3530]}, "id": 3018, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2695, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "116:23:17"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "file": "../beacon/IBeaconUpgradeable.sol", "id": 2696, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3421, "src": "141:42:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "file": "../../interfaces/IERC1967Upgradeable.sol", "id": 2697, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3411, "src": "184:50:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "file": "../../interfaces/draft-IERC1822Upgradeable.sol", "id": 2698, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 2694, "src": "235:56:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 2699, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3390, "src": "292:44:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "file": "../../utils/StorageSlotUpgradeable.sol", "id": 2700, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 3531, "src": "337:48:17", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../utils/Initializable.sol", "id": 2701, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3018, "sourceUnit": 2684, "src": "386:36:17", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2703, "name": "Initializable", "nameLocations": ["656:13:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "656:13:17"}, "id": 2704, "nodeType": "InheritanceSpecifier", "src": "656:13:17"}, {"baseName": {"id": 2705, "name": "IERC1967Upgradeable", "nameLocations": ["671:19:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 3410, "src": "671:19:17"}, "id": 2706, "nodeType": "InheritanceSpecifier", "src": "671:19:17"}], "canonicalName": "ERC1967UpgradeUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2702, "nodeType": "StructuredDocumentation", "src": "424:184:17", "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"}, "fullyImplemented": true, "id": 3017, "linearizedBaseContracts": [3017, 3410, 2683], "name": "ERC1967UpgradeUpgradeable", "nameLocation": "627:25:17", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2711, "nodeType": "Block", "src": "756:7:17", "statements": []}, "id": 2712, "implemented": true, "kind": "function", "modifiers": [{"id": 2709, "kind": "modifierInvocation", "modifierName": {"id": 2708, "name": "onlyInitializing", "nameLocations": ["739:16:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "739:16:17"}, "nodeType": "ModifierInvocation", "src": "739:16:17"}], "name": "__ERC1967Upgrade_init", "nameLocation": "706:21:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2707, "nodeType": "ParameterList", "parameters": [], "src": "727:2:17"}, "returnParameters": {"id": 2710, "nodeType": "ParameterList", "parameters": [], "src": "756:0:17"}, "scope": 3017, "src": "697:66:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2717, "nodeType": "Block", "src": "838:7:17", "statements": []}, "id": 2718, "implemented": true, "kind": "function", "modifiers": [{"id": 2715, "kind": "modifierInvocation", "modifierName": {"id": 2714, "name": "onlyInitializing", "nameLocations": ["821:16:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "821:16:17"}, "nodeType": "ModifierInvocation", "src": "821:16:17"}], "name": "__ERC1967Upgrade_init_unchained", "nameLocation": "778:31:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2713, "nodeType": "ParameterList", "parameters": [], "src": "809:2:17"}, "returnParameters": {"id": 2716, "nodeType": "ParameterList", "parameters": [], "src": "838:0:17"}, "scope": 3017, "src": "769:76:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "id": 2721, "mutability": "constant", "name": "_ROLLBACK_SLOT", "nameLocation": "954:14:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "929:108:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2719, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "929:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433", "id": 2720, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "971:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1", "typeString": "int_const 3304...(69 digits omitted)...9347"}, "value": "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"}, "visibility": "private"}, {"constant": true, "documentation": {"id": 2722, "nodeType": "StructuredDocumentation", "src": "1044:214:17", "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."}, "id": 2725, "mutability": "constant", "name": "_IMPLEMENTATION_SLOT", "nameLocation": "1289:20:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "1263:115:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2723, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1263:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", "id": 2724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1312:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", "typeString": "int_const 2444...(69 digits omitted)...5612"}, "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"}, "visibility": "internal"}, {"body": {"id": 2737, "nodeType": "Block", "src": "1519:89:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2733, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "1574:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2731, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "1536:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1559:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "1536:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2734, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1536:59:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2735, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1596:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "1536:65:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2730, "id": 2736, "nodeType": "Return", "src": "1529:72:17"}]}, "documentation": {"id": 2726, "nodeType": "StructuredDocumentation", "src": "1385:67:17", "text": " @dev Returns the current implementation address."}, "id": 2738, "implemented": true, "kind": "function", "modifiers": [], "name": "_getImplementation", "nameLocation": "1466:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2727, "nodeType": "ParameterList", "parameters": [], "src": "1484:2:17"}, "returnParameters": {"id": 2730, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2729, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2738, "src": "1510:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2728, "name": "address", "nodeType": "ElementaryTypeName", "src": "1510:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1509:9:17"}, "scope": 3017, "src": "1457:151:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2761, "nodeType": "Block", "src": "1762:218:17", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2747, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2741, "src": "1810:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2745, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "1780:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1799:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "1780:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2748, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1780:48:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", "id": 2749, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1830:47:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65", "typeString": "literal_string \"ERC1967: new implementation is not a contract\""}, "value": "ERC1967: new implementation is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65", "typeString": "literal_string \"ERC1967: new implementation is not a contract\""}], "id": 2744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1772:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1772:106:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2751, "nodeType": "ExpressionStatement", "src": "1772:106:17"}, {"expression": {"id": 2759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2755, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "1926:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2752, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "1888:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1911:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "1888:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1888:59:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2757, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1948:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "1888:65:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2758, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2741, "src": "1956:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1888:85:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2760, "nodeType": "ExpressionStatement", "src": "1888:85:17"}]}, "documentation": {"id": 2739, "nodeType": "StructuredDocumentation", "src": "1614:80:17", "text": " @dev Stores a new address in the EIP1967 implementation slot."}, "id": 2762, "implemented": true, "kind": "function", "modifiers": [], "name": "_setImplementation", "nameLocation": "1708:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2742, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2741, "mutability": "mutable", "name": "newImplementation", "nameLocation": "1735:17:17", "nodeType": "VariableDeclaration", "scope": 2762, "src": "1727:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2740, "name": "address", "nodeType": "ElementaryTypeName", "src": "1727:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1726:27:17"}, "returnParameters": {"id": 2743, "nodeType": "ParameterList", "parameters": [], "src": "1762:0:17"}, "scope": 3017, "src": "1699:281:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 2776, "nodeType": "Block", "src": "2142:96:17", "statements": [{"expression": {"arguments": [{"id": 2769, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2765, "src": "2171:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2768, "name": "_setImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "2152:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2152:37:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2771, "nodeType": "ExpressionStatement", "src": "2152:37:17"}, {"eventCall": {"arguments": [{"id": 2773, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2765, "src": "2213:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2772, "name": "Upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3397, "src": "2204:8:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2204:27:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2775, "nodeType": "EmitStatement", "src": "2199:32:17"}]}, "documentation": {"id": 2763, "nodeType": "StructuredDocumentation", "src": "1986:95:17", "text": " @dev Perform implementation upgrade\n Emits an {Upgraded} event."}, "id": 2777, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeTo", "nameLocation": "2095:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2766, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2765, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2114:17:17", "nodeType": "VariableDeclaration", "scope": 2777, "src": "2106:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2764, "name": "address", "nodeType": "ElementaryTypeName", "src": "2106:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2105:27:17"}, "returnParameters": {"id": 2767, "nodeType": "ParameterList", "parameters": [], "src": "2142:0:17"}, "scope": 3017, "src": "2086:152:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2806, "nodeType": "Block", "src": "2470:178:17", "statements": [{"expression": {"arguments": [{"id": 2788, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2780, "src": "2491:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2787, "name": "_upgradeTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2777, "src": "2480:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2480:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2790, "nodeType": "ExpressionStatement", "src": "2480:29:17"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2791, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2782, "src": "2523:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2528:6:17", "memberName": "length", "nodeType": "MemberAccess", "src": "2523:11:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2537:1:17", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2523:15:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 2795, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2784, "src": "2542:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2523:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2805, "nodeType": "IfStatement", "src": "2519:123:17", "trueBody": {"id": 2804, "nodeType": "Block", "src": "2553:89:17", "statements": [{"expression": {"arguments": [{"id": 2800, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2780, "src": "2607:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2801, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2782, "src": "2626:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2797, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "2567:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2586:20:17", "memberName": "functionDelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": 3276, "src": "2567:39:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)"}}, "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2567:64:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2803, "nodeType": "ExpressionStatement", "src": "2567:64:17"}]}}]}, "documentation": {"id": 2778, "nodeType": "StructuredDocumentation", "src": "2244:123:17", "text": " @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."}, "id": 2807, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeToAndCall", "nameLocation": "2381:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2785, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2780, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2407:17:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2399:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2779, "name": "address", "nodeType": "ElementaryTypeName", "src": "2399:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2782, "mutability": "mutable", "name": "data", "nameLocation": "2439:4:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2426:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2781, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2426:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2784, "mutability": "mutable", "name": "forceCall", "nameLocation": "2450:9:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2445:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2783, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2445:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2398:62:17"}, "returnParameters": {"id": 2786, "nodeType": "ParameterList", "parameters": [], "src": "2470:0:17"}, "scope": 3017, "src": "2372:276:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2859, "nodeType": "Block", "src": "2922:842:17", "statements": [{"condition": {"expression": {"arguments": [{"id": 2819, "name": "_ROLLBACK_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2721, "src": "3274:14:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2817, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "3236:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3259:14:17", "memberName": "getBooleanSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3463, "src": "3236:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$3429_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}}, "id": 2820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3236:53:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot storage pointer"}}, "id": 2821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3290:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3428, "src": "3236:59:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2857, "nodeType": "Block", "src": "3365:393:17", "statements": [{"clauses": [{"block": {"id": 2842, "nodeType": "Block", "src": "3470:115:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 2838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2836, "name": "slot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2833, "src": "3496:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2837, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "3504:20:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3496:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944", "id": 2839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3526:43:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c", "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}, "value": "ERC1967Upgrade: unsupported proxiableUUID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c", "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}], "id": 2835, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3488:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3488:82:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2841, "nodeType": "ExpressionStatement", "src": "3488:82:17"}]}, "errorName": "", "id": 2843, "nodeType": "TryCatchClause", "parameters": {"id": 2834, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2833, "mutability": "mutable", "name": "slot", "nameLocation": "3464:4:17", "nodeType": "VariableDeclaration", "scope": 2843, "src": "3456:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2832, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3456:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3455:14:17"}, "src": "3447:138:17"}, {"block": {"id": 2848, "nodeType": "Block", "src": "3592:89:17", "statements": [{"expression": {"arguments": [{"hexValue": "45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053", "id": 2845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:48:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24", "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}, "value": "ERC1967Upgrade: new implementation is not UUPS"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24", "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}], "id": 2844, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "3610:6:17", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 2846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3610:56:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2847, "nodeType": "ExpressionStatement", "src": "3610:56:17"}]}, "errorName": "", "id": 2849, "nodeType": "TryCatchClause", "src": "3586:95:17"}], "externalCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 2828, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3412:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2827, "name": "IERC1822ProxiableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2693, "src": "3383:28:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC1822ProxiableUpgradeable_$2693_$", "typeString": "type(contract IERC1822ProxiableUpgradeable)"}}, "id": 2829, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3383:47:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC1822ProxiableUpgradeable_$2693", "typeString": "contract IERC1822ProxiableUpgradeable"}}, "id": 2830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3431:13:17", "memberName": "proxiableUUID", "nodeType": "MemberAccess", "referencedDeclaration": 2692, "src": "3383:61:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)"}}, "id": 2831, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3383:63:17", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 2850, "nodeType": "TryStatement", "src": "3379:302:17"}, {"expression": {"arguments": [{"id": 2852, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3712:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2853, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2812, "src": "3731:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2854, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2814, "src": "3737:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2851, "name": "_upgradeToAndCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "3694:17:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3694:53:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2856, "nodeType": "ExpressionStatement", "src": "3694:53:17"}]}, "id": 2858, "nodeType": "IfStatement", "src": "3232:526:17", "trueBody": {"id": 2826, "nodeType": "Block", "src": "3297:62:17", "statements": [{"expression": {"arguments": [{"id": 2823, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "3330:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2822, "name": "_setImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "3311:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2824, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3311:37:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2825, "nodeType": "ExpressionStatement", "src": "3311:37:17"}]}}]}, "documentation": {"id": 2808, "nodeType": "StructuredDocumentation", "src": "2654:161:17", "text": " @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."}, "id": 2860, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeToAndCallUUPS", "nameLocation": "2829:21:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2815, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2810, "mutability": "mutable", "name": "newImplementation", "nameLocation": "2859:17:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2851:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2809, "name": "address", "nodeType": "ElementaryTypeName", "src": "2851:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2812, "mutability": "mutable", "name": "data", "nameLocation": "2891:4:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2878:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2811, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2878:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2814, "mutability": "mutable", "name": "forceCall", "nameLocation": "2902:9:17", "nodeType": "VariableDeclaration", "scope": 2860, "src": "2897:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2813, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2897:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2850:62:17"}, "returnParameters": {"id": 2816, "nodeType": "ParameterList", "parameters": [], "src": "2922:0:17"}, "scope": 3017, "src": "2820:944:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "documentation": {"id": 2861, "nodeType": "StructuredDocumentation", "src": "3770:189:17", "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."}, "id": 2864, "mutability": "constant", "name": "_ADMIN_SLOT", "nameLocation": "3990:11:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "3964:106:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2862, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3964:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", "id": 2863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4004:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", "typeString": "int_const 8195...(69 digits omitted)...7091"}, "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"}, "visibility": "internal"}, {"body": {"id": 2876, "nodeType": "Block", "src": "4185:80:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2872, "name": "_ADMIN_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "4240:11:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2870, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "4202:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4225:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "4202:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2873, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4202:50:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2874, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4253:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "4202:56:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2869, "id": 2875, "nodeType": "Return", "src": "4195:63:17"}]}, "documentation": {"id": 2865, "nodeType": "StructuredDocumentation", "src": "4077:50:17", "text": " @dev Returns the current admin."}, "id": 2877, "implemented": true, "kind": "function", "modifiers": [], "name": "_getAdmin", "nameLocation": "4141:9:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2866, "nodeType": "ParameterList", "parameters": [], "src": "4150:2:17"}, "returnParameters": {"id": 2869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2868, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2877, "src": "4176:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2867, "name": "address", "nodeType": "ElementaryTypeName", "src": "4176:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4175:9:17"}, "scope": 3017, "src": "4132:133:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2902, "nodeType": "Block", "src": "4392:167:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2884, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2880, "src": "4410:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4430:1:17", "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": 2886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4422:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2885, "name": "address", "nodeType": "ElementaryTypeName", "src": "4422:7:17", "typeDescriptions": {}}}, "id": 2888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4422:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4410:22:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", "id": 2890, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4434:40:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5", "typeString": "literal_string \"ERC1967: new admin is the zero address\""}, "value": "ERC1967: new admin is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5", "typeString": "literal_string \"ERC1967: new admin is the zero address\""}], "id": 2883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4402:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4402:73:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2892, "nodeType": "ExpressionStatement", "src": "4402:73:17"}, {"expression": {"id": 2900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2896, "name": "_ADMIN_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "4523:11:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2893, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "4485:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4508:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "4485:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4485:50:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4536:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "4485:56:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2899, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2880, "src": "4544:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4485:67:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2901, "nodeType": "ExpressionStatement", "src": "4485:67:17"}]}, "documentation": {"id": 2878, "nodeType": "StructuredDocumentation", "src": "4271:71:17", "text": " @dev Stores a new address in the EIP1967 admin slot."}, "id": 2903, "implemented": true, "kind": "function", "modifiers": [], "name": "_setAdmin", "nameLocation": "4356:9:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2881, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2880, "mutability": "mutable", "name": "newAdmin", "nameLocation": "4374:8:17", "nodeType": "VariableDeclaration", "scope": 2903, "src": "4366:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2879, "name": "address", "nodeType": "ElementaryTypeName", "src": "4366:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4365:18:17"}, "returnParameters": {"id": 2882, "nodeType": "ParameterList", "parameters": [], "src": "4392:0:17"}, "scope": 3017, "src": "4347:212:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 2919, "nodeType": "Block", "src": "4719:86:17", "statements": [{"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2910, "name": "_getAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "4747:9:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4747:11:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2912, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2906, "src": "4760:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2909, "name": "AdminChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3404, "src": "4734:12:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2913, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4734:35:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2914, "nodeType": "EmitStatement", "src": "4729:40:17"}, {"expression": {"arguments": [{"id": 2916, "name": "newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2906, "src": "4789:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2915, "name": "_setAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2903, "src": "4779:9:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4779:19:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2918, "nodeType": "ExpressionStatement", "src": "4779:19:17"}]}, "documentation": {"id": 2904, "nodeType": "StructuredDocumentation", "src": "4565:100:17", "text": " @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."}, "id": 2920, "implemented": true, "kind": "function", "modifiers": [], "name": "_changeAdmin", "nameLocation": "4679:12:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2907, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2906, "mutability": "mutable", "name": "newAdmin", "nameLocation": "4700:8:17", "nodeType": "VariableDeclaration", "scope": 2920, "src": "4692:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2905, "name": "address", "nodeType": "ElementaryTypeName", "src": "4692:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4691:18:17"}, "returnParameters": {"id": 2908, "nodeType": "ParameterList", "parameters": [], "src": "4719:0:17"}, "scope": 3017, "src": "4670:135:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": true, "documentation": {"id": 2921, "nodeType": "StructuredDocumentation", "src": "4811:232:17", "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."}, "id": 2924, "mutability": "constant", "name": "_BEACON_SLOT", "nameLocation": "5074:12:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "5048:107:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2922, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5048:7:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "value": {"hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", "id": 2923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5089:66:17", "typeDescriptions": {"typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", "typeString": "int_const 7415...(69 digits omitted)...4704"}, "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"}, "visibility": "internal"}, {"body": {"id": 2936, "nodeType": "Block", "src": "5272:81:17", "statements": [{"expression": {"expression": {"arguments": [{"id": 2932, "name": "_BEACON_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2924, "src": "5327:12:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2930, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "5289:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5312:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "5289:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2933, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5289:51:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2934, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5341:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "5289:57:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2929, "id": 2935, "nodeType": "Return", "src": "5282:64:17"}]}, "documentation": {"id": 2925, "nodeType": "StructuredDocumentation", "src": "5162:51:17", "text": " @dev Returns the current beacon."}, "id": 2937, "implemented": true, "kind": "function", "modifiers": [], "name": "_getBeacon", "nameLocation": "5227:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2926, "nodeType": "ParameterList", "parameters": [], "src": "5237:2:17"}, "returnParameters": {"id": 2929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2928, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2937, "src": "5263:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2927, "name": "address", "nodeType": "ElementaryTypeName", "src": "5263:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5262:9:17"}, "scope": 3017, "src": "5218:135:17", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2972, "nodeType": "Block", "src": "5482:368:17", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2946, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5530:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2944, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "5500:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2945, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5519:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "5500:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2947, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5500:40:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", "id": 2948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5542:39:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470", "typeString": "literal_string \"ERC1967: new beacon is not a contract\""}, "value": "ERC1967: new beacon is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470", "typeString": "literal_string \"ERC1967: new beacon is not a contract\""}], "id": 2943, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5492:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:90:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2950, "nodeType": "ExpressionStatement", "src": "5492:90:17"}, {"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 2955, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5662:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2954, "name": "IBeaconUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3420, "src": "5643:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$3420_$", "typeString": "type(contract IBeaconUpgradeable)"}}, "id": 2956, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5643:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IBeaconUpgradeable_$3420", "typeString": "contract IBeaconUpgradeable"}}, "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5673:14:17", "memberName": "implementation", "nodeType": "MemberAccess", "referencedDeclaration": 3419, "src": "5643:44:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)"}}, "id": 2958, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5643:46:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2952, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "5613:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5632:10:17", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "5613:29:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5613:77:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", "id": 2960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5704:50:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8", "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""}, "value": "ERC1967: beacon implementation is not a contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8", "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""}], "id": 2951, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5592:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5592:172:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2962, "nodeType": "ExpressionStatement", "src": "5592:172:17"}, {"expression": {"id": 2970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [{"id": 2966, "name": "_BEACON_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2924, "src": "5812:12:17", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 2963, "name": "StorageSlotUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3530, "src": "5774:22:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_StorageSlotUpgradeable_$3530_$", "typeString": "type(library StorageSlotUpgradeable)"}}, "id": 2965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5797:14:17", "memberName": "getAddressSlot", "nodeType": "MemberAccess", "referencedDeclaration": 3452, "src": "5774:37:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3426_storage_ptr_$", "typeString": "function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}}, "id": 2967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5774:51:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot storage pointer"}}, "id": 2968, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5826:5:17", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 3425, "src": "5774:57:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2969, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2940, "src": "5834:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "5774:69:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2971, "nodeType": "ExpressionStatement", "src": "5774:69:17"}]}, "documentation": {"id": 2938, "nodeType": "StructuredDocumentation", "src": "5359:71:17", "text": " @dev Stores a new beacon in the EIP1967 beacon slot."}, "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "_setBeacon", "nameLocation": "5444:10:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2940, "mutability": "mutable", "name": "newBeacon", "nameLocation": "5463:9:17", "nodeType": "VariableDeclaration", "scope": 2973, "src": "5455:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2939, "name": "address", "nodeType": "ElementaryTypeName", "src": "5455:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5454:19:17"}, "returnParameters": {"id": 2942, "nodeType": "ParameterList", "parameters": [], "src": "5482:0:17"}, "scope": 3017, "src": "5435:415:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 3010, "nodeType": "Block", "src": "6249:239:17", "statements": [{"expression": {"arguments": [{"id": 2984, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6270:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2983, "name": "_setBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2973, "src": "6259:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2985, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6259:21:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2986, "nodeType": "ExpressionStatement", "src": "6259:21:17"}, {"eventCall": {"arguments": [{"id": 2988, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6310:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2987, "name": "BeaconUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3409, "src": "6295:14:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6295:25:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2990, "nodeType": "EmitStatement", "src": "6290:30:17"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2991, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2978, "src": "6334:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6339:6:17", "memberName": "length", "nodeType": "MemberAccess", "src": "6334:11:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6348:1:17", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6334:15:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 2995, "name": "forceCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2980, "src": "6353:9:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6334:28:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3009, "nodeType": "IfStatement", "src": "6330:152:17", "trueBody": {"id": 3008, "nodeType": "Block", "src": "6364:118:17", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"id": 3001, "name": "newBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "6437:9:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 3000, "name": "IBeaconUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3420, "src": "6418:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IBeaconUpgradeable_$3420_$", "typeString": "type(contract IBeaconUpgradeable)"}}, "id": 3002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6418:29:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IBeaconUpgradeable_$3420", "typeString": "contract IBeaconUpgradeable"}}, "id": 3003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6448:14:17", "memberName": "implementation", "nodeType": "MemberAccess", "referencedDeclaration": 3419, "src": "6418:44:17", "typeDescriptions": {"typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)"}}, "id": 3004, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6418:46:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3005, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2978, "src": "6466:4:17", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2997, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "6378:18:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2999, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6397:20:17", "memberName": "functionDelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": 3276, "src": "6378:39:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)"}}, "id": 3006, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6378:93:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3007, "nodeType": "ExpressionStatement", "src": "6378:93:17"}]}}]}, "documentation": {"id": 2974, "nodeType": "StructuredDocumentation", "src": "5856:292:17", "text": " @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."}, "id": 3011, "implemented": true, "kind": "function", "modifiers": [], "name": "_upgradeBeaconToAndCall", "nameLocation": "6162:23:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "newBeacon", "nameLocation": "6194:9:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6186:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2975, "name": "address", "nodeType": "ElementaryTypeName", "src": "6186:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2978, "mutability": "mutable", "name": "data", "nameLocation": "6218:4:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6205:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2977, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6205:5:17", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2980, "mutability": "mutable", "name": "forceCall", "nameLocation": "6229:9:17", "nodeType": "VariableDeclaration", "scope": 3011, "src": "6224:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2979, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6224:4:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6185:54:17"}, "returnParameters": {"id": 2982, "nodeType": "ParameterList", "parameters": [], "src": "6249:0:17"}, "scope": 3017, "src": "6153:335:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 3012, "nodeType": "StructuredDocumentation", "src": "6494:254:17", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 3016, "mutability": "mutable", "name": "__gap", "nameLocation": "6773:5:17", "nodeType": "VariableDeclaration", "scope": 3017, "src": "6753:25:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 3013, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6753:7:17", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3015, "length": {"hexValue": "3530", "id": 3014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6761:2:17", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "6753:11:17", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 3018, "src": "609:6172:17", "usedErrors": []}], "src": "116:6666:17"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "exportedSymbols": {"IBeaconUpgradeable": [3420]}, "id": 3421, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3412, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "93:23:18"}, {"abstract": false, "baseContracts": [], "canonicalName": "IBeaconUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3413, "nodeType": "StructuredDocumentation", "src": "118:79:18", "text": " @dev This is the interface that {BeaconProxy} expects of its beacon."}, "fullyImplemented": false, "id": 3420, "linearizedBaseContracts": [3420], "name": "IBeaconUpgradeable", "nameLocation": "208:18:18", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 3414, "nodeType": "StructuredDocumentation", "src": "233:162:18", "text": " @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."}, "functionSelector": "5c60da1b", "id": 3419, "implemented": false, "kind": "function", "modifiers": [], "name": "implementation", "nameLocation": "409:14:18", "nodeType": "FunctionDefinition", "parameters": {"id": 3415, "nodeType": "ParameterList", "parameters": [], "src": "423:2:18"}, "returnParameters": {"id": 3418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3417, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3419, "src": "449:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3416, "name": "address", "nodeType": "ElementaryTypeName", "src": "449:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "448:9:18"}, "scope": 3420, "src": "400:58:18", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 3421, "src": "198:262:18", "usedErrors": []}], "src": "93:368:18"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "Initializable": [2683]}, "id": 2684, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2516, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "113:23:19"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 2517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 3390, "src": "138:44:19", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "Initializable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2518, "nodeType": "StructuredDocumentation", "src": "184:2209:19", "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="}, "fullyImplemented": true, "id": 2683, "linearizedBaseContracts": [2683], "name": "Initializable", "nameLocation": "2412:13:19", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 2519, "nodeType": "StructuredDocumentation", "src": "2432:109:19", "text": " @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"}, "id": 2521, "mutability": "mutable", "name": "_initialized", "nameLocation": "2560:12:19", "nodeType": "VariableDeclaration", "scope": 2683, "src": "2546:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2520, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2546:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "private"}, {"constant": false, "documentation": {"id": 2522, "nodeType": "StructuredDocumentation", "src": "2579:91:19", "text": " @dev Indicates that the contract is in the process of being initialized."}, "id": 2524, "mutability": "mutable", "name": "_initializing", "nameLocation": "2688:13:19", "nodeType": "VariableDeclaration", "scope": 2683, "src": "2675:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2523, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2675:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"anonymous": false, "documentation": {"id": 2525, "nodeType": "StructuredDocumentation", "src": "2708:90:19", "text": " @dev Triggered when the contract has been initialized or reinitialized."}, "eventSelector": "7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498", "id": 2529, "name": "Initialized", "nameLocation": "2809:11:19", "nodeType": "EventDefinition", "parameters": {"id": 2528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2527, "indexed": false, "mutability": "mutable", "name": "version", "nameLocation": "2827:7:19", "nodeType": "VariableDeclaration", "scope": 2529, "src": "2821:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2526, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2821:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "2820:15:19"}, "src": "2803:33:19"}, {"body": {"id": 2584, "nodeType": "Block", "src": "3269:483:19", "statements": [{"assignments": [2533], "declarations": [{"constant": false, "id": 2533, "mutability": "mutable", "name": "isTopLevelCall", "nameLocation": "3284:14:19", "nodeType": "VariableDeclaration", "scope": 2584, "src": "3279:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2532, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3279:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 2536, "initialValue": {"id": 2535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3301:14:19", "subExpression": {"id": 2534, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3302:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3279:36:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2538, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3347:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2539, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3365:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "31", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3380:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3365:16:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3347:34:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 2543, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3346:36:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3387:45:19", "subExpression": {"arguments": [{"arguments": [{"id": 2548, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3426:4:19", "typeDescriptions": {"typeIdentifier": "t_contract$_Initializable_$2683", "typeString": "contract Initializable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Initializable_$2683", "typeString": "contract Initializable"}], "id": 2547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3418:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2546, "name": "address", "nodeType": "ElementaryTypeName", "src": "3418:7:19", "typeDescriptions": {}}}, "id": 2549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3418:13:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 2544, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3389, "src": "3388:18:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$3389_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 2545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3407:10:19", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 3077, "src": "3388:29:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3388:44:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2552, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3436:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "31", "id": 2553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3452:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3436:17:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3387:66:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 2556, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3386:68:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3346:108:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 2558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3468:48:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 2537, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3325:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3325:201:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2560, "nodeType": "ExpressionStatement", "src": "3325:201:19"}, {"expression": {"id": 2563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2561, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3536:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31", "id": 2562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3551:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3536:16:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2564, "nodeType": "ExpressionStatement", "src": "3536:16:19"}, {"condition": {"id": 2565, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3566:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2571, "nodeType": "IfStatement", "src": "3562:65:19", "trueBody": {"id": 2570, "nodeType": "Block", "src": "3582:45:19", "statements": [{"expression": {"id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2566, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3596:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 2567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3612:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3596:20:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2569, "nodeType": "ExpressionStatement", "src": "3596:20:19"}]}}, {"id": 2572, "nodeType": "PlaceholderStatement", "src": "3636:1:19"}, {"condition": {"id": 2573, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2533, "src": "3651:14:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2583, "nodeType": "IfStatement", "src": "3647:99:19", "trueBody": {"id": 2582, "nodeType": "Block", "src": "3667:79:19", "statements": [{"expression": {"id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2574, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "3681:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 2575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3697:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "3681:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2577, "nodeType": "ExpressionStatement", "src": "3681:21:19"}, {"eventCall": {"arguments": [{"hexValue": "31", "id": 2579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3733:1:19", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 2578, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "3721:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3721:14:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2581, "nodeType": "EmitStatement", "src": "3716:19:19"}]}}]}, "documentation": {"id": 2530, "nodeType": "StructuredDocumentation", "src": "2842:399:19", "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."}, "id": 2585, "name": "initializer", "nameLocation": "3255:11:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2531, "nodeType": "ParameterList", "parameters": [], "src": "3266:2:19"}, "src": "3246:506:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2617, "nodeType": "Block", "src": "4863:255:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4881:14:19", "subExpression": {"id": 2591, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "4882:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2593, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "4899:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2594, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "4914:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4899:22:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4881:40:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 2597, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4923:48:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 2590, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4873:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2598, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4873:99:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2599, "nodeType": "ExpressionStatement", "src": "4873:99:19"}, {"expression": {"id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2600, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "4982:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2601, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "4997:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4982:22:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "4982:22:19"}, {"expression": {"id": 2606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2604, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5014:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 2605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5030:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "5014:20:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2607, "nodeType": "ExpressionStatement", "src": "5014:20:19"}, {"id": 2608, "nodeType": "PlaceholderStatement", "src": "5044:1:19"}, {"expression": {"id": 2611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2609, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5055:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 2610, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5071:5:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "5055:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2612, "nodeType": "ExpressionStatement", "src": "5055:21:19"}, {"eventCall": {"arguments": [{"id": 2614, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2588, "src": "5103:7:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2613, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "5091:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5091:20:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2616, "nodeType": "EmitStatement", "src": "5086:25:19"}]}, "documentation": {"id": 2586, "nodeType": "StructuredDocumentation", "src": "3758:1062:19", "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."}, "id": 2618, "name": "reinitializer", "nameLocation": "4834:13:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2589, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2588, "mutability": "mutable", "name": "version", "nameLocation": "4854:7:19", "nodeType": "VariableDeclaration", "scope": 2618, "src": "4848:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2587, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4848:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "4847:15:19"}, "src": "4825:293:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2627, "nodeType": "Block", "src": "5356:97:19", "statements": [{"expression": {"arguments": [{"id": 2622, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "5374:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67", "id": 2623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5389:45:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}, "value": "Initializable: contract is not initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}], "id": 2621, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5366:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5366:69:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2625, "nodeType": "ExpressionStatement", "src": "5366:69:19"}, {"id": 2626, "nodeType": "PlaceholderStatement", "src": "5445:1:19"}]}, "documentation": {"id": 2619, "nodeType": "StructuredDocumentation", "src": "5124:199:19", "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."}, "id": 2628, "name": "onlyInitializing", "nameLocation": "5337:16:19", "nodeType": "ModifierDefinition", "parameters": {"id": 2620, "nodeType": "ParameterList", "parameters": [], "src": "5353:2:19"}, "src": "5328:125:19", "virtual": false, "visibility": "internal"}, {"body": {"id": 2663, "nodeType": "Block", "src": "5988:231:19", "statements": [{"expression": {"arguments": [{"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "6006:14:19", "subExpression": {"id": 2633, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "6007:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67", "id": 2635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6022:41:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}, "value": "Initializable: contract is initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}], "id": 2632, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5998:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5998:66:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2637, "nodeType": "ExpressionStatement", "src": "5998:66:19"}, {"condition": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 2644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2638, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6078:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"arguments": [{"id": 2641, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6099:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2640, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6099:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2639, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6094:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6094:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2643, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6106:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6094:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "6078:31:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2662, "nodeType": "IfStatement", "src": "6074:139:19", "trueBody": {"id": 2661, "nodeType": "Block", "src": "6111:102:19", "statements": [{"expression": {"id": 2651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2645, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6125:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"arguments": [{"id": 2648, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6145:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2647, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6145:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2646, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6140:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2649, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6140:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6152:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6140:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "6125:30:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 2652, "nodeType": "ExpressionStatement", "src": "6125:30:19"}, {"eventCall": {"arguments": [{"expression": {"arguments": [{"id": 2656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6191:5:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2655, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6191:5:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 2654, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "6186:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6186:11:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 2658, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6198:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "6186:15:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2653, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2529, "src": "6174:11:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 2659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6174:28:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2660, "nodeType": "EmitStatement", "src": "6169:33:19"}]}}]}, "documentation": {"id": 2629, "nodeType": "StructuredDocumentation", "src": "5459:475:19", "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."}, "id": 2664, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableInitializers", "nameLocation": "5948:20:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2630, "nodeType": "ParameterList", "parameters": [], "src": "5968:2:19"}, "returnParameters": {"id": 2631, "nodeType": "ParameterList", "parameters": [], "src": "5988:0:19"}, "scope": 2683, "src": "5939:280:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 2672, "nodeType": "Block", "src": "6393:36:19", "statements": [{"expression": {"id": 2670, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "6410:12:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "functionReturnParameters": 2669, "id": 2671, "nodeType": "Return", "src": "6403:19:19"}]}, "documentation": {"id": 2665, "nodeType": "StructuredDocumentation", "src": "6225:99:19", "text": " @dev Returns the highest version that has been initialized. See {reinitializer}."}, "id": 2673, "implemented": true, "kind": "function", "modifiers": [], "name": "_getInitializedVersion", "nameLocation": "6338:22:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2666, "nodeType": "ParameterList", "parameters": [], "src": "6360:2:19"}, "returnParameters": {"id": 2669, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2668, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2673, "src": "6386:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2667, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6386:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "6385:7:19"}, "scope": 2683, "src": "6329:100:19", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2681, "nodeType": "Block", "src": "6601:37:19", "statements": [{"expression": {"id": 2679, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2524, "src": "6618:13:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2678, "id": 2680, "nodeType": "Return", "src": "6611:20:19"}]}, "documentation": {"id": 2674, "nodeType": "StructuredDocumentation", "src": "6435:105:19", "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."}, "id": 2682, "implemented": true, "kind": "function", "modifiers": [], "name": "_isInitializing", "nameLocation": "6554:15:19", "nodeType": "FunctionDefinition", "parameters": {"id": 2675, "nodeType": "ParameterList", "parameters": [], "src": "6569:2:19"}, "returnParameters": {"id": 2678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2677, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2682, "src": "6595:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2676, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6595:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6594:6:19"}, "scope": 2683, "src": "6545:93:19", "stateMutability": "view", "virtual": false, "visibility": "internal"}], "scope": 2684, "src": "2394:4246:19", "usedErrors": []}], "src": "113:6528:19"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ERC1967UpgradeUpgradeable": [3017], "IBeaconUpgradeable": [3420], "IERC1822ProxiableUpgradeable": [2693], "IERC1967Upgradeable": [3410], "Initializable": [2683], "StorageSlotUpgradeable": [3530], "UUPSUpgradeable": [2114]}, "id": 2115, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1980, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "115:23:20"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "file": "../../interfaces/draft-IERC1822Upgradeable.sol", "id": 1981, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 2694, "src": "140:56:20", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "file": "../ERC1967/ERC1967UpgradeUpgradeable.sol", "id": 1982, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 3018, "src": "197:50:20", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "./Initializable.sol", "id": 1983, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2115, "sourceUnit": 2684, "src": "248:29:20", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1985, "name": "Initializable", "nameLocations": ["965:13:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "965:13:20"}, "id": 1986, "nodeType": "InheritanceSpecifier", "src": "965:13:20"}, {"baseName": {"id": 1987, "name": "IERC1822ProxiableUpgradeable", "nameLocations": ["980:28:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2693, "src": "980:28:20"}, "id": 1988, "nodeType": "InheritanceSpecifier", "src": "980:28:20"}, {"baseName": {"id": 1989, "name": "ERC1967UpgradeUpgradeable", "nameLocations": ["1010:25:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 3017, "src": "1010:25:20"}, "id": 1990, "nodeType": "InheritanceSpecifier", "src": "1010:25:20"}], "canonicalName": "UUPSUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1984, "nodeType": "StructuredDocumentation", "src": "279:648:20", "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"}, "fullyImplemented": false, "id": 2114, "linearizedBaseContracts": [2114, 3017, 3410, 2693, 2683], "name": "UUPSUpgradeable", "nameLocation": "946:15:20", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1995, "nodeType": "Block", "src": "1102:7:20", "statements": []}, "id": 1996, "implemented": true, "kind": "function", "modifiers": [{"id": 1993, "kind": "modifierInvocation", "modifierName": {"id": 1992, "name": "onlyInitializing", "nameLocations": ["1085:16:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1085:16:20"}, "nodeType": "ModifierInvocation", "src": "1085:16:20"}], "name": "__UUPSUpgradeable_init", "nameLocation": "1051:22:20", "nodeType": "FunctionDefinition", "parameters": {"id": 1991, "nodeType": "ParameterList", "parameters": [], "src": "1073:2:20"}, "returnParameters": {"id": 1994, "nodeType": "ParameterList", "parameters": [], "src": "1102:0:20"}, "scope": 2114, "src": "1042:67:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2001, "nodeType": "Block", "src": "1185:7:20", "statements": []}, "id": 2002, "implemented": true, "kind": "function", "modifiers": [{"id": 1999, "kind": "modifierInvocation", "modifierName": {"id": 1998, "name": "onlyInitializing", "nameLocations": ["1168:16:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "1168:16:20"}, "nodeType": "ModifierInvocation", "src": "1168:16:20"}], "name": "__UUPSUpgradeable_init_unchained", "nameLocation": "1124:32:20", "nodeType": "FunctionDefinition", "parameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [], "src": "1156:2:20"}, "returnParameters": {"id": 2000, "nodeType": "ParameterList", "parameters": [], "src": "1185:0:20"}, "scope": 2114, "src": "1115:77:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2003, "nodeType": "StructuredDocumentation", "src": "1197:87:20", "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"}, "id": 2009, "mutability": "immutable", "name": "__self", "nameLocation": "1315:6:20", "nodeType": "VariableDeclaration", "scope": 2114, "src": "1289:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2004, "name": "address", "nodeType": "ElementaryTypeName", "src": "1289:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "value": {"arguments": [{"id": 2007, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1332:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1324:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2005, "name": "address", "nodeType": "ElementaryTypeName", "src": "1324:7:20", "typeDescriptions": {}}}, "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1324:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"body": {"id": 2031, "nodeType": "Block", "src": "1863:205:20", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2015, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1889:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2014, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1881:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2013, "name": "address", "nodeType": "ElementaryTypeName", "src": "1881:7:20", "typeDescriptions": {}}}, "id": 2016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1881:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 2017, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "1898:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1881:23:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c", "id": 2019, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1906:46:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb", "typeString": "literal_string \"Function must be called through delegatecall\""}, "value": "Function must be called through delegatecall"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb", "typeString": "literal_string \"Function must be called through delegatecall\""}], "id": 2012, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1873:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1873:80:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2021, "nodeType": "ExpressionStatement", "src": "1873:80:20"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2023, "name": "_getImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2738, "src": "1971:18:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1971:20:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2025, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "1995:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1971:30:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879", "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2003:46:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434", "typeString": "literal_string \"Function must be called through active proxy\""}, "value": "Function must be called through active proxy"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434", "typeString": "literal_string \"Function must be called through active proxy\""}], "id": 2022, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1963:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1963:87:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2029, "nodeType": "ExpressionStatement", "src": "1963:87:20"}, {"id": 2030, "nodeType": "PlaceholderStatement", "src": "2060:1:20"}]}, "documentation": {"id": 2010, "nodeType": "StructuredDocumentation", "src": "1344:493:20", "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."}, "id": 2032, "name": "onlyProxy", "nameLocation": "1851:9:20", "nodeType": "ModifierDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [], "src": "1860:2:20"}, "src": "1842:226:20", "virtual": false, "visibility": "internal"}, {"body": {"id": 2046, "nodeType": "Block", "src": "2298:120:20", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2038, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2324:4:20", "typeDescriptions": {"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_UUPSUpgradeable_$2114", "typeString": "contract UUPSUpgradeable"}], "id": 2037, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2316:7:20", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2036, "name": "address", "nodeType": "ElementaryTypeName", "src": "2316:7:20", "typeDescriptions": {}}}, "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2316:13:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 2040, "name": "__self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "2333:6:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2316:23:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c", "id": 2042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2341:58:20", "typeDescriptions": {"typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4", "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}, "value": "UUPSUpgradeable: must not be called through delegatecall"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4", "typeString": "literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}], "id": 2035, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2308:7:20", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2043, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2308:92:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2044, "nodeType": "ExpressionStatement", "src": "2308:92:20"}, {"id": 2045, "nodeType": "PlaceholderStatement", "src": "2410:1:20"}]}, "documentation": {"id": 2033, "nodeType": "StructuredDocumentation", "src": "2074:195:20", "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."}, "id": 2047, "name": "notDelegated", "nameLocation": "2283:12:20", "nodeType": "ModifierDefinition", "parameters": {"id": 2034, "nodeType": "ParameterList", "parameters": [], "src": "2295:2:20"}, "src": "2274:144:20", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2692], "body": {"id": 2058, "nodeType": "Block", "src": "3093:44:20", "statements": [{"expression": {"id": 2056, "name": "_IMPLEMENTATION_SLOT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2725, "src": "3110:20:20", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 2055, "id": 2057, "nodeType": "Return", "src": "3103:27:20"}]}, "documentation": {"id": 2048, "nodeType": "StructuredDocumentation", "src": "2424:577:20", "text": " @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."}, "functionSelector": "52d1902d", "id": 2059, "implemented": true, "kind": "function", "modifiers": [{"id": 2052, "kind": "modifierInvocation", "modifierName": {"id": 2051, "name": "notDelegated", "nameLocations": ["3062:12:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2047, "src": "3062:12:20"}, "nodeType": "ModifierInvocation", "src": "3062:12:20"}], "name": "proxiableUUID", "nameLocation": "3015:13:20", "nodeType": "FunctionDefinition", "overrides": {"id": 2050, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3053:8:20"}, "parameters": {"id": 2049, "nodeType": "ParameterList", "parameters": [], "src": "3028:2:20"}, "returnParameters": {"id": 2055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2054, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2059, "src": "3084:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2053, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3084:7:20", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3083:9:20"}, "scope": 2114, "src": "3006:131:20", "stateMutability": "view", "virtual": true, "visibility": "external"}, {"body": {"id": 2080, "nodeType": "Block", "src": "3458:124:20", "statements": [{"expression": {"arguments": [{"id": 2068, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2062, "src": "3486:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2067, "name": "_authorizeUpgrade", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2108, "src": "3468:17:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3468:36:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2070, "nodeType": "ExpressionStatement", "src": "3468:36:20"}, {"expression": {"arguments": [{"id": 2072, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2062, "src": "3536:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 2075, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:20", "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": 2074, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "3555:9:20", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2073, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3559:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3555:12:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "66616c7365", "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3569:5:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2071, "name": "_upgradeToAndCallUUPS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2860, "src": "3514:21:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3514:61:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2079, "nodeType": "ExpressionStatement", "src": "3514:61:20"}]}, "documentation": {"id": 2060, "nodeType": "StructuredDocumentation", "src": "3143:239:20", "text": " @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"}, "functionSelector": "3659cfe6", "id": 2081, "implemented": true, "kind": "function", "modifiers": [{"id": 2065, "kind": "modifierInvocation", "modifierName": {"id": 2064, "name": "onlyProxy", "nameLocations": ["3448:9:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "3448:9:20"}, "nodeType": "ModifierInvocation", "src": "3448:9:20"}], "name": "upgradeTo", "nameLocation": "3396:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2062, "mutability": "mutable", "name": "newImplementation", "nameLocation": "3414:17:20", "nodeType": "VariableDeclaration", "scope": 2081, "src": "3406:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2061, "name": "address", "nodeType": "ElementaryTypeName", "src": "3406:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3405:27:20"}, "returnParameters": {"id": 2066, "nodeType": "ParameterList", "parameters": [], "src": "3458:0:20"}, "scope": 2114, "src": "3387:195:20", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2101, "nodeType": "Block", "src": "4006:115:20", "statements": [{"expression": {"arguments": [{"id": 2092, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2084, "src": "4034:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2091, "name": "_authorizeUpgrade", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2108, "src": "4016:17:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2093, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4016:36:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2094, "nodeType": "ExpressionStatement", "src": "4016:36:20"}, {"expression": {"arguments": [{"id": 2096, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2084, "src": "4084:17:20", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2097, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2086, "src": "4103:4:20", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "74727565", "id": 2098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4109:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 2095, "name": "_upgradeToAndCallUUPS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2860, "src": "4062:21:20", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)"}}, "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4062:52:20", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2100, "nodeType": "ExpressionStatement", "src": "4062:52:20"}]}, "documentation": {"id": 2082, "nodeType": "StructuredDocumentation", "src": "3588:308:20", "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"}, "functionSelector": "4f1ef286", "id": 2102, "implemented": true, "kind": "function", "modifiers": [{"id": 2089, "kind": "modifierInvocation", "modifierName": {"id": 2088, "name": "onlyProxy", "nameLocations": ["3996:9:20"], "nodeType": "IdentifierPath", "referencedDeclaration": 2032, "src": "3996:9:20"}, "nodeType": "ModifierInvocation", "src": "3996:9:20"}], "name": "upgradeToAndCall", "nameLocation": "3910:16:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2084, "mutability": "mutable", "name": "newImplementation", "nameLocation": "3935:17:20", "nodeType": "VariableDeclaration", "scope": 2102, "src": "3927:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2083, "name": "address", "nodeType": "ElementaryTypeName", "src": "3927:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2086, "mutability": "mutable", "name": "data", "nameLocation": "3967:4:20", "nodeType": "VariableDeclaration", "scope": 2102, "src": "3954:17:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2085, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3954:5:20", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3926:46:20"}, "returnParameters": {"id": 2090, "nodeType": "ParameterList", "parameters": [], "src": "4006:0:20"}, "scope": 2114, "src": "3901:220:20", "stateMutability": "payable", "virtual": true, "visibility": "public"}, {"documentation": {"id": 2103, "nodeType": "StructuredDocumentation", "src": "4127:397:20", "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"}, "id": 2108, "implemented": false, "kind": "function", "modifiers": [], "name": "_authorizeUpgrade", "nameLocation": "4538:17:20", "nodeType": "FunctionDefinition", "parameters": {"id": 2106, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2105, "mutability": "mutable", "name": "newImplementation", "nameLocation": "4564:17:20", "nodeType": "VariableDeclaration", "scope": 2108, "src": "4556:25:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2104, "name": "address", "nodeType": "ElementaryTypeName", "src": "4556:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4555:27:20"}, "returnParameters": {"id": 2107, "nodeType": "ParameterList", "parameters": [], "src": "4599:0:20"}, "scope": 2114, "src": "4529:71:20", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2109, "nodeType": "StructuredDocumentation", "src": "4606:254:20", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2113, "mutability": "mutable", "name": "__gap", "nameLocation": "4885:5:20", "nodeType": "VariableDeclaration", "scope": 2114, "src": "4865:25:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4865:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2112, "length": {"hexValue": "3530", "id": 2111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4873:2:20", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "4865:11:20", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2115, "src": "928:3965:20", "usedErrors": []}], "src": "115:4779:20"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389]}, "id": 3390, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3061, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:21"}, {"abstract": false, "baseContracts": [], "canonicalName": "AddressUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 3062, "nodeType": "StructuredDocumentation", "src": "126:67:21", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 3389, "linearizedBaseContracts": [3389], "name": "AddressUpgradeable", "nameLocation": "202:18:21", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3076, "nodeType": "Block", "src": "1489:254:21", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 3070, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3065, "src": "1713:7:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1721:4:21", "memberName": "code", "nodeType": "MemberAccess", "src": "1713:12:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1726:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "1713:19:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3073, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1735:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1713:23:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3069, "id": 3075, "nodeType": "Return", "src": "1706:30:21"}]}, "documentation": {"id": 3063, "nodeType": "StructuredDocumentation", "src": "227:1191:21", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 3077, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1432:10:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3066, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3065, "mutability": "mutable", "name": "account", "nameLocation": "1451:7:21", "nodeType": "VariableDeclaration", "scope": 3077, "src": "1443:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3064, "name": "address", "nodeType": "ElementaryTypeName", "src": "1443:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1442:17:21"}, "returnParameters": {"id": 3069, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3068, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3077, "src": "1483:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3067, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1483:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1482:6:21"}, "scope": 3389, "src": "1423:320:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3110, "nodeType": "Block", "src": "2729:241:21", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3088, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2755:4:21", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}], "id": 3087, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2747:7:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3086, "name": "address", "nodeType": "ElementaryTypeName", "src": "2747:7:21", "typeDescriptions": {}}}, "id": 3089, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2747:13:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2761:7:21", "memberName": "balance", "nodeType": "MemberAccess", "src": "2747:21:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3091, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3082, "src": "2772:6:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2747:31:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 3093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2780:31:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 3085, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2739:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3094, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2739:73:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3095, "nodeType": "ExpressionStatement", "src": "2739:73:21"}, {"assignments": [3097, null], "declarations": [{"constant": false, "id": 3097, "mutability": "mutable", "name": "success", "nameLocation": "2829:7:21", "nodeType": "VariableDeclaration", "scope": 3110, "src": "2824:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3096, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2824:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 3104, "initialValue": {"arguments": [{"hexValue": "", "id": 3102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2872:2:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "expression": {"id": 3098, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3080, "src": "2842:9:21", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 3099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2852:4:21", "memberName": "call", "nodeType": "MemberAccess", "src": "2842:14:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 3100, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3082, "src": "2864:6:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2842:29:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2842:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2823:52:21"}, {"expression": {"arguments": [{"id": 3106, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3097, "src": "2893:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 3107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2902:60:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 3105, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2885:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2885:78:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3109, "nodeType": "ExpressionStatement", "src": "2885:78:21"}]}, "documentation": {"id": 3078, "nodeType": "StructuredDocumentation", "src": "1749:904:21", "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 3111, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2667:9:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3083, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3080, "mutability": "mutable", "name": "recipient", "nameLocation": "2693:9:21", "nodeType": "VariableDeclaration", "scope": 3111, "src": "2677:25:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 3079, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:15:21", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 3082, "mutability": "mutable", "name": "amount", "nameLocation": "2712:6:21", "nodeType": "VariableDeclaration", "scope": 3111, "src": "2704:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2704:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2676:43:21"}, "returnParameters": {"id": 3084, "nodeType": "ParameterList", "parameters": [], "src": "2729:0:21"}, "scope": 3389, "src": "2658:312:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3128, "nodeType": "Block", "src": "3801:96:21", "statements": [{"expression": {"arguments": [{"id": 3122, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3114, "src": "3840:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3123, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3116, "src": "3848:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 3124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3854:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 3125, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3857:32:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 3121, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "3818:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3818:72:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3120, "id": 3127, "nodeType": "Return", "src": "3811:79:21"}]}, "documentation": {"id": 3112, "nodeType": "StructuredDocumentation", "src": "2976:731:21", "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"}, "id": 3129, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3721:12:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3117, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3114, "mutability": "mutable", "name": "target", "nameLocation": "3742:6:21", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3734:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3113, "name": "address", "nodeType": "ElementaryTypeName", "src": "3734:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3116, "mutability": "mutable", "name": "data", "nameLocation": "3763:4:21", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3750:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3115, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3750:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3733:35:21"}, "returnParameters": {"id": 3120, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3119, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3129, "src": "3787:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3118, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3787:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3786:14:21"}, "scope": 3389, "src": "3712:185:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3148, "nodeType": "Block", "src": "4266:76:21", "statements": [{"expression": {"arguments": [{"id": 3142, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3132, "src": "4305:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3143, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3134, "src": "4313:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 3144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4319:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 3145, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3136, "src": "4322:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3141, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "4283:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4283:52:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3140, "id": 3147, "nodeType": "Return", "src": "4276:59:21"}]}, "documentation": {"id": 3130, "nodeType": "StructuredDocumentation", "src": "3903:211:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 3149, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "4128:12:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3137, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3132, "mutability": "mutable", "name": "target", "nameLocation": "4158:6:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4150:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3131, "name": "address", "nodeType": "ElementaryTypeName", "src": "4150:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3134, "mutability": "mutable", "name": "data", "nameLocation": "4187:4:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4174:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3133, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4174:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3136, "mutability": "mutable", "name": "errorMessage", "nameLocation": "4215:12:21", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4201:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3135, "name": "string", "nodeType": "ElementaryTypeName", "src": "4201:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4140:93:21"}, "returnParameters": {"id": 3140, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3139, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3149, "src": "4252:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3138, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4252:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4251:14:21"}, "scope": 3389, "src": "4119:223:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3168, "nodeType": "Block", "src": "4817:111:21", "statements": [{"expression": {"arguments": [{"id": 3162, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3152, "src": "4856:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3163, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3154, "src": "4864:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3164, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3156, "src": "4870:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 3165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4877:43:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 3161, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [3169, 3213], "referencedDeclaration": 3213, "src": "4834:21:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 3166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4834:87:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3160, "id": 3167, "nodeType": "Return", "src": "4827:94:21"}]}, "documentation": {"id": 3150, "nodeType": "StructuredDocumentation", "src": "4348:351:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"}, "id": 3169, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4713:21:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3152, "mutability": "mutable", "name": "target", "nameLocation": "4743:6:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4735:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3151, "name": "address", "nodeType": "ElementaryTypeName", "src": "4735:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3154, "mutability": "mutable", "name": "data", "nameLocation": "4764:4:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4751:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3153, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4751:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3156, "mutability": "mutable", "name": "value", "nameLocation": "4778:5:21", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4770:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3155, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4770:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4734:50:21"}, "returnParameters": {"id": 3160, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3159, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3169, "src": "4803:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3158, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4803:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4802:14:21"}, "scope": 3389, "src": "4704:224:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3212, "nodeType": "Block", "src": "5355:267:21", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3186, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5381:4:21", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$3389", "typeString": "library AddressUpgradeable"}], "id": 3185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5373:7:21", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3184, "name": "address", "nodeType": "ElementaryTypeName", "src": "5373:7:21", "typeDescriptions": {}}}, "id": 3187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5373:13:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5387:7:21", "memberName": "balance", "nodeType": "MemberAccess", "src": "5373:21:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3189, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "5398:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5373:30:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 3191, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5405:40:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 3183, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5365:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5365:81:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3193, "nodeType": "ExpressionStatement", "src": "5365:81:21"}, {"assignments": [3195, 3197], "declarations": [{"constant": false, "id": 3195, "mutability": "mutable", "name": "success", "nameLocation": "5462:7:21", "nodeType": "VariableDeclaration", "scope": 3212, "src": "5457:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3194, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5457:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3197, "mutability": "mutable", "name": "returndata", "nameLocation": "5484:10:21", "nodeType": "VariableDeclaration", "scope": 3212, "src": "5471:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3196, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5471:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3204, "initialValue": {"arguments": [{"id": 3202, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3174, "src": "5524:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3198, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3172, "src": "5498:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5505:4:21", "memberName": "call", "nodeType": "MemberAccess", "src": "5498:11:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 3200, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "5517:5:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5498:25:21", "typeDescriptions": {"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)"}}, "id": 3203, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5498:31:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5456:73:21"}, {"expression": {"arguments": [{"id": 3206, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3172, "src": "5573:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3207, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "5581:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3208, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3197, "src": "5590:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3209, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3178, "src": "5602:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3205, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "5546:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5546:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3182, "id": 3211, "nodeType": "Return", "src": "5539:76:21"}]}, "documentation": {"id": 3170, "nodeType": "StructuredDocumentation", "src": "4934:237:21", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 3213, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "5185:21:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3179, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3172, "mutability": "mutable", "name": "target", "nameLocation": "5224:6:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5216:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3171, "name": "address", "nodeType": "ElementaryTypeName", "src": "5216:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3174, "mutability": "mutable", "name": "data", "nameLocation": "5253:4:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5240:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3173, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5240:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3176, "mutability": "mutable", "name": "value", "nameLocation": "5275:5:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5267:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3175, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5267:7:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3178, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5304:12:21", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5290:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3177, "name": "string", "nodeType": "ElementaryTypeName", "src": "5290:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "5206:116:21"}, "returnParameters": {"id": 3182, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3181, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3213, "src": "5341:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3180, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5341:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5340:14:21"}, "scope": 3389, "src": "5176:446:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3229, "nodeType": "Block", "src": "5899:97:21", "statements": [{"expression": {"arguments": [{"id": 3224, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3216, "src": "5935:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3225, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3218, "src": "5943:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 3226, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5949:39:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 3223, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [3230, 3259], "referencedDeclaration": 3259, "src": "5916:18:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5916:73:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3222, "id": 3228, "nodeType": "Return", "src": "5909:80:21"}]}, "documentation": {"id": 3214, "nodeType": "StructuredDocumentation", "src": "5628:166:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 3230, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5808:18:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3219, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3216, "mutability": "mutable", "name": "target", "nameLocation": "5835:6:21", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5827:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3215, "name": "address", "nodeType": "ElementaryTypeName", "src": "5827:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3218, "mutability": "mutable", "name": "data", "nameLocation": "5856:4:21", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5843:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3217, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5843:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5826:35:21"}, "returnParameters": {"id": 3222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3221, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3230, "src": "5885:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3220, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5885:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5884:14:21"}, "scope": 3389, "src": "5799:197:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3258, "nodeType": "Block", "src": "6338:168:21", "statements": [{"assignments": [3243, 3245], "declarations": [{"constant": false, "id": 3243, "mutability": "mutable", "name": "success", "nameLocation": "6354:7:21", "nodeType": "VariableDeclaration", "scope": 3258, "src": "6349:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3242, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6349:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3245, "mutability": "mutable", "name": "returndata", "nameLocation": "6376:10:21", "nodeType": "VariableDeclaration", "scope": 3258, "src": "6363:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6363:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3250, "initialValue": {"arguments": [{"id": 3248, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "6408:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3246, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3233, "src": "6390:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6397:10:21", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6390:17:21", "typeDescriptions": {"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) view returns (bool,bytes memory)"}}, "id": 3249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6390:23:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6348:65:21"}, {"expression": {"arguments": [{"id": 3252, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3233, "src": "6457:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3253, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3243, "src": "6465:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3254, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3245, "src": "6474:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3255, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3237, "src": "6486:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3251, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "6430:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6430:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3241, "id": 3257, "nodeType": "Return", "src": "6423:76:21"}]}, "documentation": {"id": 3231, "nodeType": "StructuredDocumentation", "src": "6002:173:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 3259, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6189:18:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3238, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3233, "mutability": "mutable", "name": "target", "nameLocation": "6225:6:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6217:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3232, "name": "address", "nodeType": "ElementaryTypeName", "src": "6217:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3235, "mutability": "mutable", "name": "data", "nameLocation": "6254:4:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6241:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3234, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6241:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3237, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6282:12:21", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6268:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3236, "name": "string", "nodeType": "ElementaryTypeName", "src": "6268:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6207:93:21"}, "returnParameters": {"id": 3241, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3240, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3259, "src": "6324:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3239, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6324:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6323:14:21"}, "scope": 3389, "src": "6180:326:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3275, "nodeType": "Block", "src": "6782:101:21", "statements": [{"expression": {"arguments": [{"id": 3270, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3262, "src": "6820:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3271, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3264, "src": "6828:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "id": 3272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6834:41:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}, "value": "Address: low-level delegate call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}], "id": 3269, "name": "functionDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [3276, 3305], "referencedDeclaration": 3305, "src": "6799:20:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 3273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6799:77:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3268, "id": 3274, "nodeType": "Return", "src": "6792:84:21"}]}, "documentation": {"id": 3260, "nodeType": "StructuredDocumentation", "src": "6512:168:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 3276, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6694:20:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3262, "mutability": "mutable", "name": "target", "nameLocation": "6723:6:21", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6715:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3261, "name": "address", "nodeType": "ElementaryTypeName", "src": "6715:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3264, "mutability": "mutable", "name": "data", "nameLocation": "6744:4:21", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6731:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3263, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6731:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6714:35:21"}, "returnParameters": {"id": 3268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3276, "src": "6768:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3266, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6768:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6767:14:21"}, "scope": 3389, "src": "6685:198:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3304, "nodeType": "Block", "src": "7224:170:21", "statements": [{"assignments": [3289, 3291], "declarations": [{"constant": false, "id": 3289, "mutability": "mutable", "name": "success", "nameLocation": "7240:7:21", "nodeType": "VariableDeclaration", "scope": 3304, "src": "7235:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3288, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7235:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3291, "mutability": "mutable", "name": "returndata", "nameLocation": "7262:10:21", "nodeType": "VariableDeclaration", "scope": 3304, "src": "7249:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3290, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7249:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 3296, "initialValue": {"arguments": [{"id": 3294, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3281, "src": "7296:4:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 3292, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3279, "src": "7276:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 3293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7283:12:21", "memberName": "delegatecall", "nodeType": "MemberAccess", "src": "7276:19:21", "typeDescriptions": {"typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) returns (bool,bytes memory)"}}, "id": 3295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7276:25:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "7234:67:21"}, {"expression": {"arguments": [{"id": 3298, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3279, "src": "7345:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3299, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3289, "src": "7353:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 3300, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3291, "src": "7362:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3301, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3283, "src": "7374:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3297, "name": "verifyCallResultFromTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "7318:26:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bool,bytes memory,string memory) view returns (bytes memory)"}}, "id": 3302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7318:69:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3287, "id": 3303, "nodeType": "Return", "src": "7311:76:21"}]}, "documentation": {"id": 3277, "nodeType": "StructuredDocumentation", "src": "6889:175:21", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 3305, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "7078:20:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3279, "mutability": "mutable", "name": "target", "nameLocation": "7116:6:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7108:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3278, "name": "address", "nodeType": "ElementaryTypeName", "src": "7108:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3281, "mutability": "mutable", "name": "data", "nameLocation": "7145:4:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7132:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3280, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7132:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3283, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7173:12:21", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7159:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3282, "name": "string", "nodeType": "ElementaryTypeName", "src": "7159:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7098:93:21"}, "returnParameters": {"id": 3287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3286, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3305, "src": "7210:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3285, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7210:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7209:14:21"}, "scope": 3389, "src": "7069:325:21", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3343, "nodeType": "Block", "src": "7876:434:21", "statements": [{"condition": {"id": 3319, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3310, "src": "7890:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3341, "nodeType": "Block", "src": "8246:58:21", "statements": [{"expression": {"arguments": [{"id": 3337, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "8268:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3338, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3314, "src": "8280:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3336, "name": "_revert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "8260:7:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bytes memory,string memory) pure"}}, "id": 3339, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8260:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3340, "nodeType": "ExpressionStatement", "src": "8260:33:21"}]}, "id": 3342, "nodeType": "IfStatement", "src": "7886:418:21", "trueBody": {"id": 3335, "nodeType": "Block", "src": "7899:341:21", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 3320, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "7917:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7928:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "7917:17:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 3322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7938:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7917:22:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3332, "nodeType": "IfStatement", "src": "7913:286:21", "trueBody": {"id": 3331, "nodeType": "Block", "src": "7941:258:21", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 3326, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3308, "src": "8143:6:21", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 3325, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3077, "src": "8132:10:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8132:18:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 3328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8152:31:21", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 3324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8124:7:21", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8124:60:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3330, "nodeType": "ExpressionStatement", "src": "8124:60:21"}]}}, {"expression": {"id": 3333, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3312, "src": "8219:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3318, "id": 3334, "nodeType": "Return", "src": "8212:17:21"}]}}]}, "documentation": {"id": 3306, "nodeType": "StructuredDocumentation", "src": "7400:277:21", "text": " @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"}, "id": 3344, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResultFromTarget", "nameLocation": "7691:26:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3308, "mutability": "mutable", "name": "target", "nameLocation": "7735:6:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7727:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3307, "name": "address", "nodeType": "ElementaryTypeName", "src": "7727:7:21", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3310, "mutability": "mutable", "name": "success", "nameLocation": "7756:7:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7751:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3309, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7751:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3312, "mutability": "mutable", "name": "returndata", "nameLocation": "7786:10:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7773:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3311, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7773:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3314, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7820:12:21", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7806:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3313, "name": "string", "nodeType": "ElementaryTypeName", "src": "7806:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7717:121:21"}, "returnParameters": {"id": 3318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3317, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3344, "src": "7862:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3316, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7862:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7861:14:21"}, "scope": 3389, "src": "7682:628:21", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 3367, "nodeType": "Block", "src": "8691:135:21", "statements": [{"condition": {"id": 3356, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3347, "src": "8705:7:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3365, "nodeType": "Block", "src": "8762:58:21", "statements": [{"expression": {"arguments": [{"id": 3361, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3349, "src": "8784:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 3362, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3351, "src": "8796:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3360, "name": "_revert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "8776:7:21", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bytes memory,string memory) pure"}}, "id": 3363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8776:33:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3364, "nodeType": "ExpressionStatement", "src": "8776:33:21"}]}, "id": 3366, "nodeType": "IfStatement", "src": "8701:119:21", "trueBody": {"id": 3359, "nodeType": "Block", "src": "8714:42:21", "statements": [{"expression": {"id": 3357, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3349, "src": "8735:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 3355, "id": 3358, "nodeType": "Return", "src": "8728:17:21"}]}}]}, "documentation": {"id": 3345, "nodeType": "StructuredDocumentation", "src": "8316:210:21", "text": " @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"}, "id": 3368, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "8540:16:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3347, "mutability": "mutable", "name": "success", "nameLocation": "8571:7:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8566:12:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3346, "name": "bool", "nodeType": "ElementaryTypeName", "src": "8566:4:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 3349, "mutability": "mutable", "name": "returndata", "nameLocation": "8601:10:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8588:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3348, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8588:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3351, "mutability": "mutable", "name": "errorMessage", "nameLocation": "8635:12:21", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8621:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3350, "name": "string", "nodeType": "ElementaryTypeName", "src": "8621:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "8556:97:21"}, "returnParameters": {"id": 3355, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3354, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3368, "src": "8677:12:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3353, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8677:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8676:14:21"}, "scope": 3389, "src": "8531:295:21", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3387, "nodeType": "Block", "src": "8915:457:21", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 3375, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "8991:10:21", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9002:6:21", "memberName": "length", "nodeType": "MemberAccess", "src": "8991:17:21", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9011:1:21", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8991:21:21", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 3385, "nodeType": "Block", "src": "9321:45:21", "statements": [{"expression": {"arguments": [{"id": 3382, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3372, "src": "9342:12:21", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3381, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9335:6:21", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 3383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9335:20:21", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3384, "nodeType": "ExpressionStatement", "src": "9335:20:21"}]}, "id": 3386, "nodeType": "IfStatement", "src": "8987:379:21", "trueBody": {"id": 3380, "nodeType": "Block", "src": "9014:301:21", "statements": [{"AST": {"nodeType": "YulBlock", "src": "9172:133:21", "statements": [{"nodeType": "YulVariableDeclaration", "src": "9190:40:21", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "9219:10:21"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "9213:5:21"}, "nodeType": "YulFunctionCall", "src": "9213:17:21"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "9194:15:21", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "9258:2:21", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "9262:10:21"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "9254:3:21"}, "nodeType": "YulFunctionCall", "src": "9254:19:21"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "9275:15:21"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "9247:6:21"}, "nodeType": "YulFunctionCall", "src": "9247:44:21"}, "nodeType": "YulExpressionStatement", "src": "9247:44:21"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3370, "isOffset": false, "isSlot": false, "src": "9219:10:21", "valueSize": 1}, {"declaration": 3370, "isOffset": false, "isSlot": false, "src": "9262:10:21", "valueSize": 1}], "id": 3379, "nodeType": "InlineAssembly", "src": "9163:142:21"}]}}]}, "id": 3388, "implemented": true, "kind": "function", "modifiers": [], "name": "_revert", "nameLocation": "8841:7:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3373, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3370, "mutability": "mutable", "name": "returndata", "nameLocation": "8862:10:21", "nodeType": "VariableDeclaration", "scope": 3388, "src": "8849:23:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3369, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8849:5:21", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 3372, "mutability": "mutable", "name": "errorMessage", "nameLocation": "8888:12:21", "nodeType": "VariableDeclaration", "scope": 3388, "src": "8874:26:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3371, "name": "string", "nodeType": "ElementaryTypeName", "src": "8874:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "8848:53:21"}, "returnParameters": {"id": 3374, "nodeType": "ParameterList", "parameters": [], "src": "8915:0:21"}, "scope": 3389, "src": "8832:540:21", "stateMutability": "pure", "virtual": false, "visibility": "private"}], "scope": 3390, "src": "194:9180:21", "usedErrors": []}], "src": "101:9274:21"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [3389], "ContextUpgradeable": [3059], "Initializable": [2683]}, "id": 3060, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3019, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:22"}, {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 3020, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3060, "sourceUnit": 2684, "src": "110:42:22", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 3022, "name": "Initializable", "nameLocations": ["691:13:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "691:13:22"}, "id": 3023, "nodeType": "InheritanceSpecifier", "src": "691:13:22"}], "canonicalName": "ContextUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 3021, "nodeType": "StructuredDocumentation", "src": "154:496:22", "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."}, "fullyImplemented": true, "id": 3059, "linearizedBaseContracts": [3059, 2683], "name": "ContextUpgradeable", "nameLocation": "669:18:22", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3028, "nodeType": "Block", "src": "763:7:22", "statements": []}, "id": 3029, "implemented": true, "kind": "function", "modifiers": [{"id": 3026, "kind": "modifierInvocation", "modifierName": {"id": 3025, "name": "onlyInitializing", "nameLocations": ["746:16:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "746:16:22"}, "nodeType": "ModifierInvocation", "src": "746:16:22"}], "name": "__Context_init", "nameLocation": "720:14:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3024, "nodeType": "ParameterList", "parameters": [], "src": "734:2:22"}, "returnParameters": {"id": 3027, "nodeType": "ParameterList", "parameters": [], "src": "763:0:22"}, "scope": 3059, "src": "711:59:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3034, "nodeType": "Block", "src": "838:7:22", "statements": []}, "id": 3035, "implemented": true, "kind": "function", "modifiers": [{"id": 3032, "kind": "modifierInvocation", "modifierName": {"id": 3031, "name": "onlyInitializing", "nameLocations": ["821:16:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 2628, "src": "821:16:22"}, "nodeType": "ModifierInvocation", "src": "821:16:22"}], "name": "__Context_init_unchained", "nameLocation": "785:24:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3030, "nodeType": "ParameterList", "parameters": [], "src": "809:2:22"}, "returnParameters": {"id": 3033, "nodeType": "ParameterList", "parameters": [], "src": "838:0:22"}, "scope": 3059, "src": "776:69:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3043, "nodeType": "Block", "src": "912:34:22", "statements": [{"expression": {"expression": {"id": 3040, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "929:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "933:6:22", "memberName": "sender", "nodeType": "MemberAccess", "src": "929:10:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3039, "id": 3042, "nodeType": "Return", "src": "922:17:22"}]}, "id": 3044, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "859:10:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3036, "nodeType": "ParameterList", "parameters": [], "src": "869:2:22"}, "returnParameters": {"id": 3039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3038, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3044, "src": "903:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3037, "name": "address", "nodeType": "ElementaryTypeName", "src": "903:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "902:9:22"}, "scope": 3059, "src": "850:96:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 3052, "nodeType": "Block", "src": "1019:32:22", "statements": [{"expression": {"expression": {"id": 3049, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1036:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1040:4:22", "memberName": "data", "nodeType": "MemberAccess", "src": "1036:8:22", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 3048, "id": 3051, "nodeType": "Return", "src": "1029:15:22"}]}, "id": 3053, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "961:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3045, "nodeType": "ParameterList", "parameters": [], "src": "969:2:22"}, "returnParameters": {"id": 3048, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3047, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3053, "src": "1003:14:22", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 3046, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1003:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1002:16:22"}, "scope": 3059, "src": "952:99:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 3054, "nodeType": "StructuredDocumentation", "src": "1057:254:22", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 3058, "mutability": "mutable", "name": "__gap", "nameLocation": "1336:5:22", "nodeType": "VariableDeclaration", "scope": 3059, "src": "1316:25:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 3055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3057, "length": {"hexValue": "3530", "id": 3056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1324:2:22", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1316:11:22", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 3060, "src": "651:693:22", "usedErrors": []}], "src": "86:1259:22"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "exportedSymbols": {"StorageSlotUpgradeable": [3530]}, "id": 3531, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3422, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "193:23:23"}, {"abstract": false, "baseContracts": [], "canonicalName": "StorageSlotUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 3423, "nodeType": "StructuredDocumentation", "src": "218:1201:23", "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"}, "fullyImplemented": true, "id": 3530, "linearizedBaseContracts": [3530], "name": "StorageSlotUpgradeable", "nameLocation": "1428:22:23", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "StorageSlotUpgradeable.AddressSlot", "id": 3426, "members": [{"constant": false, "id": 3425, "mutability": "mutable", "name": "value", "nameLocation": "1494:5:23", "nodeType": "VariableDeclaration", "scope": 3426, "src": "1486:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3424, "name": "address", "nodeType": "ElementaryTypeName", "src": "1486:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "name": "AddressSlot", "nameLocation": "1464:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1457:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.BooleanSlot", "id": 3429, "members": [{"constant": false, "id": 3428, "mutability": "mutable", "name": "value", "nameLocation": "1546:5:23", "nodeType": "VariableDeclaration", "scope": 3429, "src": "1541:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3427, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1541:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "BooleanSlot", "nameLocation": "1519:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1512:46:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.Bytes32Slot", "id": 3432, "members": [{"constant": false, "id": 3431, "mutability": "mutable", "name": "value", "nameLocation": "1601:5:23", "nodeType": "VariableDeclaration", "scope": 3432, "src": "1593:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3430, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1593:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "name": "Bytes32Slot", "nameLocation": "1571:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1564:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.Uint256Slot", "id": 3435, "members": [{"constant": false, "id": 3434, "mutability": "mutable", "name": "value", "nameLocation": "1656:5:23", "nodeType": "VariableDeclaration", "scope": 3435, "src": "1648:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1648:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Uint256Slot", "nameLocation": "1626:11:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1619:49:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.StringSlot", "id": 3438, "members": [{"constant": false, "id": 3437, "mutability": "mutable", "name": "value", "nameLocation": "1709:5:23", "nodeType": "VariableDeclaration", "scope": 3438, "src": "1702:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 3436, "name": "string", "nodeType": "ElementaryTypeName", "src": "1702:6:23", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "name": "StringSlot", "nameLocation": "1681:10:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1674:47:23", "visibility": "public"}, {"canonicalName": "StorageSlotUpgradeable.BytesSlot", "id": 3441, "members": [{"constant": false, "id": 3440, "mutability": "mutable", "name": "value", "nameLocation": "1760:5:23", "nodeType": "VariableDeclaration", "scope": 3441, "src": "1754:11:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 3439, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1754:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "name": "BytesSlot", "nameLocation": "1734:9:23", "nodeType": "StructDefinition", "scope": 3530, "src": "1727:45:23", "visibility": "public"}, {"body": {"id": 3451, "nodeType": "Block", "src": "1954:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2016:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2030:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2040:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2030:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3448, "isOffset": false, "isSlot": true, "src": "2030:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3444, "isOffset": false, "isSlot": false, "src": "2040:4:23", "valueSize": 1}], "id": 3450, "nodeType": "InlineAssembly", "src": "2007:47:23"}]}, "documentation": {"id": 3442, "nodeType": "StructuredDocumentation", "src": "1778:87:23", "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."}, "id": 3452, "implemented": true, "kind": "function", "modifiers": [], "name": "getAddressSlot", "nameLocation": "1879:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3444, "mutability": "mutable", "name": "slot", "nameLocation": "1902:4:23", "nodeType": "VariableDeclaration", "scope": 3452, "src": "1894:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3443, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1894:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1893:14:23"}, "returnParameters": {"id": 3449, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3448, "mutability": "mutable", "name": "r", "nameLocation": "1951:1:23", "nodeType": "VariableDeclaration", "scope": 3452, "src": "1931:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot"}, "typeName": {"id": 3447, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3446, "name": "AddressSlot", "nameLocations": ["1931:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3426, "src": "1931:11:23"}, "referencedDeclaration": 3426, "src": "1931:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_AddressSlot_$3426_storage_ptr", "typeString": "struct StorageSlotUpgradeable.AddressSlot"}}, "visibility": "internal"}], "src": "1930:23:23"}, "scope": 3530, "src": "1870:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3462, "nodeType": "Block", "src": "2242:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2304:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2318:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2328:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2318:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3459, "isOffset": false, "isSlot": true, "src": "2318:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3455, "isOffset": false, "isSlot": false, "src": "2328:4:23", "valueSize": 1}], "id": 3461, "nodeType": "InlineAssembly", "src": "2295:47:23"}]}, "documentation": {"id": 3453, "nodeType": "StructuredDocumentation", "src": "2066:87:23", "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."}, "id": 3463, "implemented": true, "kind": "function", "modifiers": [], "name": "getBooleanSlot", "nameLocation": "2167:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3455, "mutability": "mutable", "name": "slot", "nameLocation": "2190:4:23", "nodeType": "VariableDeclaration", "scope": 3463, "src": "2182:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3454, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2182:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2181:14:23"}, "returnParameters": {"id": 3460, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3459, "mutability": "mutable", "name": "r", "nameLocation": "2239:1:23", "nodeType": "VariableDeclaration", "scope": 3463, "src": "2219:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot"}, "typeName": {"id": 3458, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3457, "name": "BooleanSlot", "nameLocations": ["2219:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3429, "src": "2219:11:23"}, "referencedDeclaration": 3429, "src": "2219:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BooleanSlot_$3429_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BooleanSlot"}}, "visibility": "internal"}], "src": "2218:23:23"}, "scope": 3530, "src": "2158:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3473, "nodeType": "Block", "src": "2530:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2592:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2606:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2616:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2606:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3470, "isOffset": false, "isSlot": true, "src": "2606:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3466, "isOffset": false, "isSlot": false, "src": "2616:4:23", "valueSize": 1}], "id": 3472, "nodeType": "InlineAssembly", "src": "2583:47:23"}]}, "documentation": {"id": 3464, "nodeType": "StructuredDocumentation", "src": "2354:87:23", "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."}, "id": 3474, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytes32Slot", "nameLocation": "2455:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3466, "mutability": "mutable", "name": "slot", "nameLocation": "2478:4:23", "nodeType": "VariableDeclaration", "scope": 3474, "src": "2470:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3465, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2470:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2469:14:23"}, "returnParameters": {"id": 3471, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3470, "mutability": "mutable", "name": "r", "nameLocation": "2527:1:23", "nodeType": "VariableDeclaration", "scope": 3474, "src": "2507:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Bytes32Slot_$3432_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"}, "typeName": {"id": 3469, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3468, "name": "Bytes32Slot", "nameLocations": ["2507:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3432, "src": "2507:11:23"}, "referencedDeclaration": 3432, "src": "2507:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_Bytes32Slot_$3432_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"}}, "visibility": "internal"}], "src": "2506:23:23"}, "scope": 3530, "src": "2446:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3484, "nodeType": "Block", "src": "2818:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2880:38:23", "statements": [{"nodeType": "YulAssignment", "src": "2894:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "2904:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "2894:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3481, "isOffset": false, "isSlot": true, "src": "2894:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3477, "isOffset": false, "isSlot": false, "src": "2904:4:23", "valueSize": 1}], "id": 3483, "nodeType": "InlineAssembly", "src": "2871:47:23"}]}, "documentation": {"id": 3475, "nodeType": "StructuredDocumentation", "src": "2642:87:23", "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."}, "id": 3485, "implemented": true, "kind": "function", "modifiers": [], "name": "getUint256Slot", "nameLocation": "2743:14:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3478, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3477, "mutability": "mutable", "name": "slot", "nameLocation": "2766:4:23", "nodeType": "VariableDeclaration", "scope": 3485, "src": "2758:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3476, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2758:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2757:14:23"}, "returnParameters": {"id": 3482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3481, "mutability": "mutable", "name": "r", "nameLocation": "2815:1:23", "nodeType": "VariableDeclaration", "scope": 3485, "src": "2795:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Uint256Slot_$3435_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Uint256Slot"}, "typeName": {"id": 3480, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3479, "name": "Uint256Slot", "nameLocations": ["2795:11:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3435, "src": "2795:11:23"}, "referencedDeclaration": 3435, "src": "2795:11:23", "typeDescriptions": {"typeIdentifier": "t_struct$_Uint256Slot_$3435_storage_ptr", "typeString": "struct StorageSlotUpgradeable.Uint256Slot"}}, "visibility": "internal"}], "src": "2794:23:23"}, "scope": 3530, "src": "2734:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3495, "nodeType": "Block", "src": "3103:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3165:38:23", "statements": [{"nodeType": "YulAssignment", "src": "3179:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "3189:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3179:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3492, "isOffset": false, "isSlot": true, "src": "3179:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3488, "isOffset": false, "isSlot": false, "src": "3189:4:23", "valueSize": 1}], "id": 3494, "nodeType": "InlineAssembly", "src": "3156:47:23"}]}, "documentation": {"id": 3486, "nodeType": "StructuredDocumentation", "src": "2930:86:23", "text": " @dev Returns an `StringSlot` with member `value` located at `slot`."}, "id": 3496, "implemented": true, "kind": "function", "modifiers": [], "name": "getStringSlot", "nameLocation": "3030:13:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3489, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3488, "mutability": "mutable", "name": "slot", "nameLocation": "3052:4:23", "nodeType": "VariableDeclaration", "scope": 3496, "src": "3044:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3487, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3044:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3043:14:23"}, "returnParameters": {"id": 3493, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3492, "mutability": "mutable", "name": "r", "nameLocation": "3100:1:23", "nodeType": "VariableDeclaration", "scope": 3496, "src": "3081:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}, "typeName": {"id": 3491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3490, "name": "StringSlot", "nameLocations": ["3081:10:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3438, "src": "3081:10:23"}, "referencedDeclaration": 3438, "src": "3081:10:23", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}}, "visibility": "internal"}], "src": "3080:22:23"}, "scope": 3530, "src": "3021:188:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3506, "nodeType": "Block", "src": "3411:112:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3473:44:23", "statements": [{"nodeType": "YulAssignment", "src": "3487:20:23", "value": {"name": "store.slot", "nodeType": "YulIdentifier", "src": "3497:10:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3487:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3503, "isOffset": false, "isSlot": true, "src": "3487:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3499, "isOffset": false, "isSlot": true, "src": "3497:10:23", "suffix": "slot", "valueSize": 1}], "id": 3505, "nodeType": "InlineAssembly", "src": "3464:53:23"}]}, "documentation": {"id": 3497, "nodeType": "StructuredDocumentation", "src": "3215:101:23", "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`."}, "id": 3507, "implemented": true, "kind": "function", "modifiers": [], "name": "getStringSlot", "nameLocation": "3330:13:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3499, "mutability": "mutable", "name": "store", "nameLocation": "3359:5:23", "nodeType": "VariableDeclaration", "scope": 3507, "src": "3344:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 3498, "name": "string", "nodeType": "ElementaryTypeName", "src": "3344:6:23", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3343:22:23"}, "returnParameters": {"id": 3504, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3503, "mutability": "mutable", "name": "r", "nameLocation": "3408:1:23", "nodeType": "VariableDeclaration", "scope": 3507, "src": "3389:20:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}, "typeName": {"id": 3502, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3501, "name": "StringSlot", "nameLocations": ["3389:10:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3438, "src": "3389:10:23"}, "referencedDeclaration": 3438, "src": "3389:10:23", "typeDescriptions": {"typeIdentifier": "t_struct$_StringSlot_$3438_storage_ptr", "typeString": "struct StorageSlotUpgradeable.StringSlot"}}, "visibility": "internal"}], "src": "3388:22:23"}, "scope": 3530, "src": "3321:202:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3517, "nodeType": "Block", "src": "3699:106:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "3761:38:23", "statements": [{"nodeType": "YulAssignment", "src": "3775:14:23", "value": {"name": "slot", "nodeType": "YulIdentifier", "src": "3785:4:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "3775:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3514, "isOffset": false, "isSlot": true, "src": "3775:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3510, "isOffset": false, "isSlot": false, "src": "3785:4:23", "valueSize": 1}], "id": 3516, "nodeType": "InlineAssembly", "src": "3752:47:23"}]}, "documentation": {"id": 3508, "nodeType": "StructuredDocumentation", "src": "3529:85:23", "text": " @dev Returns an `BytesSlot` with member `value` located at `slot`."}, "id": 3518, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytesSlot", "nameLocation": "3628:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3511, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3510, "mutability": "mutable", "name": "slot", "nameLocation": "3649:4:23", "nodeType": "VariableDeclaration", "scope": 3518, "src": "3641:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 3509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3641:7:23", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3640:14:23"}, "returnParameters": {"id": 3515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3514, "mutability": "mutable", "name": "r", "nameLocation": "3696:1:23", "nodeType": "VariableDeclaration", "scope": 3518, "src": "3678:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}, "typeName": {"id": 3513, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3512, "name": "BytesSlot", "nameLocations": ["3678:9:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3441, "src": "3678:9:23"}, "referencedDeclaration": 3441, "src": "3678:9:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}}, "visibility": "internal"}], "src": "3677:21:23"}, "scope": 3530, "src": "3619:186:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3528, "nodeType": "Block", "src": "4002:112:23", "statements": [{"AST": {"nodeType": "YulBlock", "src": "4064:44:23", "statements": [{"nodeType": "YulAssignment", "src": "4078:20:23", "value": {"name": "store.slot", "nodeType": "YulIdentifier", "src": "4088:10:23"}, "variableNames": [{"name": "r.slot", "nodeType": "YulIdentifier", "src": "4078:6:23"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "paris", "externalReferences": [{"declaration": 3525, "isOffset": false, "isSlot": true, "src": "4078:6:23", "suffix": "slot", "valueSize": 1}, {"declaration": 3521, "isOffset": false, "isSlot": true, "src": "4088:10:23", "suffix": "slot", "valueSize": 1}], "id": 3527, "nodeType": "InlineAssembly", "src": "4055:53:23"}]}, "documentation": {"id": 3519, "nodeType": "StructuredDocumentation", "src": "3811:99:23", "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."}, "id": 3529, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytesSlot", "nameLocation": "3924:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 3522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3521, "mutability": "mutable", "name": "store", "nameLocation": "3951:5:23", "nodeType": "VariableDeclaration", "scope": 3529, "src": "3937:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}, "typeName": {"id": 3520, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3937:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3936:21:23"}, "returnParameters": {"id": 3526, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3525, "mutability": "mutable", "name": "r", "nameLocation": "3999:1:23", "nodeType": "VariableDeclaration", "scope": 3529, "src": "3981:19:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}, "typeName": {"id": 3524, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3523, "name": "BytesSlot", "nameLocations": ["3981:9:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 3441, "src": "3981:9:23"}, "referencedDeclaration": 3441, "src": "3981:9:23", "typeDescriptions": {"typeIdentifier": "t_struct$_BytesSlot_$3441_storage_ptr", "typeString": "struct StorageSlotUpgradeable.BytesSlot"}}, "visibility": "internal"}], "src": "3980:21:23"}, "scope": 3530, "src": "3915:199:23", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 3531, "src": "1420:2696:23", "usedErrors": []}], "src": "193:3924:23"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2192]}, "id": 2193, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2116, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:24"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2117, "nodeType": "StructuredDocumentation", "src": "131:70:24", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2192, "linearizedBaseContracts": [2192], "name": "IERC20", "nameLocation": "212:6:24", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2118, "nodeType": "StructuredDocumentation", "src": "225:158:24", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2126, "name": "Transfer", "nameLocation": "394:8:24", "nodeType": "EventDefinition", "parameters": {"id": 2125, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2120, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "403:20:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2119, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2122, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "425:18:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2121, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2124, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:24", "nodeType": "VariableDeclaration", "scope": 2126, "src": "445:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2123, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:24"}, "src": "388:72:24"}, {"anonymous": false, "documentation": {"id": 2127, "nodeType": "StructuredDocumentation", "src": "466:148:24", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2135, "name": "Approval", "nameLocation": "625:8:24", "nodeType": "EventDefinition", "parameters": {"id": 2134, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2129, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "634:21:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2128, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2131, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "657:23:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2130, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2133, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:24", "nodeType": "VariableDeclaration", "scope": 2135, "src": "682:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:24"}, "src": "619:78:24"}, {"documentation": {"id": 2136, "nodeType": "StructuredDocumentation", "src": "703:66:24", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2141, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2137, "nodeType": "ParameterList", "parameters": [], "src": "794:2:24"}, "returnParameters": {"id": 2140, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2139, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2141, "src": "820:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:24"}, "scope": 2192, "src": "774:55:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2142, "nodeType": "StructuredDocumentation", "src": "835:72:24", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2149, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2144, "mutability": "mutable", "name": "account", "nameLocation": "939:7:24", "nodeType": "VariableDeclaration", "scope": 2149, "src": "931:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2143, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:24"}, "returnParameters": {"id": 2148, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2147, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2149, "src": "971:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2146, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:24"}, "scope": 2192, "src": "912:68:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2150, "nodeType": "StructuredDocumentation", "src": "986:202:24", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2159, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2152, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:24", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1211:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2151, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2154, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:24", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1223:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2153, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:24"}, "returnParameters": {"id": 2158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2157, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1257:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2156, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:24"}, "scope": 2192, "src": "1193:70:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2160, "nodeType": "StructuredDocumentation", "src": "1269:264:24", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2169, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2165, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2162, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:24", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1557:13:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2161, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2164, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:24", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1572:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2163, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:24"}, "returnParameters": {"id": 2168, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2167, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2169, "src": "1612:7:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2166, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:24"}, "scope": 2192, "src": "1538:83:24", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2170, "nodeType": "StructuredDocumentation", "src": "1627:642:24", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2179, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2172, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:24", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2291:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2171, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2174, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:24", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2308:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:24"}, "returnParameters": {"id": 2178, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2177, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2342:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2176, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:24"}, "scope": 2192, "src": "2274:74:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2180, "nodeType": "StructuredDocumentation", "src": "2354:287:24", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2191, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:24", "nodeType": "FunctionDefinition", "parameters": {"id": 2187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2182, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2668:12:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2181, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2184, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2682:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2183, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2186, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:24", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2694:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:24"}, "returnParameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2189, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2191, "src": "2728:4:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2188, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:24", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:24"}, "scope": 2192, "src": "2646:88:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2193, "src": "202:2534:24", "usedErrors": []}], "src": "106:2631:24"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2382]}, "id": 2383, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2310, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:25"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2311, "nodeType": "StructuredDocumentation", "src": "112:311:25", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2382, "linearizedBaseContracts": [2382], "name": "Counters", "nameLocation": "432:8:25", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2314, "members": [{"constant": false, "id": 2313, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:25", "nodeType": "VariableDeclaration", "scope": 2314, "src": "786:14:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:25", "nodeType": "StructDefinition", "scope": 2382, "src": "447:374:25", "visibility": "public"}, {"body": {"id": 2325, "nodeType": "Block", "src": "901:38:25", "statements": [{"expression": {"expression": {"id": 2322, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2317, "src": "918:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "918:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2321, "id": 2324, "nodeType": "Return", "src": "911:21:25"}]}, "id": 2326, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2317, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:25", "nodeType": "VariableDeclaration", "scope": 2326, "src": "844:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2316, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2315, "name": "Counter", "nameLocations": ["844:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "844:7:25"}, "referencedDeclaration": 2314, "src": "844:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:25"}, "returnParameters": {"id": 2321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2320, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2326, "src": "892:7:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2319, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:25"}, "scope": 2382, "src": "827:112:25", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2339, "nodeType": "Block", "src": "998:70:25", "statements": [{"id": 2338, "nodeType": "UncheckedBlock", "src": "1008:54:25", "statements": [{"expression": {"id": 2336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2332, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2329, "src": "1032:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1032:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2337, "nodeType": "ExpressionStatement", "src": "1032:19:25"}]}]}, "id": 2340, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2330, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2329, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:25", "nodeType": "VariableDeclaration", "scope": 2340, "src": "964:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2328, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2327, "name": "Counter", "nameLocations": ["964:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "964:7:25"}, "referencedDeclaration": 2314, "src": "964:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:25"}, "returnParameters": {"id": 2331, "nodeType": "ParameterList", "parameters": [], "src": "998:0:25"}, "scope": 2382, "src": "945:123:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2367, "nodeType": "Block", "src": "1127:176:25", "statements": [{"assignments": [2347], "declarations": [{"constant": false, "id": 2347, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:25", "nodeType": "VariableDeclaration", "scope": 2367, "src": "1137:13:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2346, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2350, "initialValue": {"expression": {"id": 2348, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2343, "src": "1153:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1153:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:25"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2352, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "1185:5:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:25", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:25", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2357, "nodeType": "ExpressionStatement", "src": "1177:49:25"}, {"id": 2366, "nodeType": "UncheckedBlock", "src": "1236:61:25", "statements": [{"expression": {"id": 2364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2358, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2343, "src": "1260:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1260:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2361, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "1277:5:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2365, "nodeType": "ExpressionStatement", "src": "1260:26:25"}]}]}, "id": 2368, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2343, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:25", "nodeType": "VariableDeclaration", "scope": 2368, "src": "1093:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2342, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2341, "name": "Counter", "nameLocations": ["1093:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1093:7:25"}, "referencedDeclaration": 2314, "src": "1093:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:25"}, "returnParameters": {"id": 2345, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:25"}, "scope": 2382, "src": "1074:229:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2380, "nodeType": "Block", "src": "1358:35:25", "statements": [{"expression": {"id": 2378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2374, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "1368:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2376, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:25", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2313, "src": "1368:14:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2379, "nodeType": "ExpressionStatement", "src": "1368:18:25"}]}, "id": 2381, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:25", "nodeType": "FunctionDefinition", "parameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2371, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:25", "nodeType": "VariableDeclaration", "scope": 2381, "src": "1324:23:25", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2370, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2369, "name": "Counter", "nameLocations": ["1324:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 2314, "src": "1324:7:25"}, "referencedDeclaration": 2314, "src": "1324:7:25", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2314_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:25"}, "returnParameters": {"id": 2373, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:25"}, "scope": 2382, "src": "1309:84:25", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2383, "src": "424:971:25", "usedErrors": []}], "src": "87:1309:25"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVNetwork.sol:SSVNetwork": {"srcmap": "751:9241:0:-:0;;;1332:4:20;1289:48;;;;;;;;;3367:53:0;;;;;;;;;;3391:22;:20;;;:22;;:::i;:::-;751:9241;;5939:280:19;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:26:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;751:9241:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "751:9241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3754:63;3764:17;:15;:17::i;:::-;:30;;:52;3795:20;3764:52;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3754:9;:63::i;:::-;751:9241;5952:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8962:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6373:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5054:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7629:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4892:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4240:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5221:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7941:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3387:195:20;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9475:221:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5398:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3901:220:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3006:131;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6872:238:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8460:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7387:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:14;;;;;;;;;;;;;:::i;:::-;;9702:288:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2010:212:13;;;;;;;;;;;;;:::i;:::-;;8112:168:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4737:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:14;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4569:162:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8629:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7116:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6632:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1013:963;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4391:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7780:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5676:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1123:99:13;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8801:155:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9203:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1415:178:13;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3945:289:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:180:10;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;185:887:1:-;515:14;512:1;509;496:34;729:1;726;710:14;707:1;691:14;684:5;671:60;805:16;802:1;799;784:38;843:6;915:1;910:66;;;;1025:16;1022:1;1015:27;910:66;945:16;942:1;935:27;5952:415:0;6196:19;:17;:19::i;:::-;:33;;:45;6230:10;6196:45;;;;;;;;;;;;;;;:63;;;;;;;;;;;;6191:92;;6268:15;;;;;;;;;;;;;;6191:92;6294:66;6304:17;:15;:17::i;:::-;:30;;:55;6335:23;6304:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6294:9;:66::i;:::-;5952:415;;;;;;;:::o;8962:121::-;9016:21;9056:20;:18;:20::i;:::-;9049:27;;8962:121;:::o;6373:253::-;6553:66;6563:17;:15;:17::i;:::-;:30;;:55;6594:23;6563:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6553:9;:66::i;:::-;6373:253;;;;;:::o;5054:161::-;5141:67;5151:17;:15;:17::i;:::-;:30;;:56;5182:24;5151:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5141:9;:67::i;:::-;5054:161;;:::o;7629:145::-;1334:13:14;:11;:13::i;:::-;7706:61:0::1;7716:17;:15;:17::i;:::-;:30;;:50;7747:18;7716:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7706:9;:61::i;:::-;7629:145:::0;:::o;4892:156::-;4974:67;4984:17;:15;:17::i;:::-;:30;;:56;5015:24;4984:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4974:9;:67::i;:::-;4892:156;:::o;4240:145::-;4311:67;4321:17;:15;:17::i;:::-;:30;;:56;4352:24;4321:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4311:9;:67::i;:::-;4240:145;:::o;5221:171::-;5318:67;5328:17;:15;:17::i;:::-;:30;;:56;5359:24;5328:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5318:9;:67::i;:::-;5221:171;;:::o;7941:165::-;1334:13:14;:11;:13::i;:::-;8038:61:0::1;8048:17;:15;:17::i;:::-;:30;;:50;8079:18;8048:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8038:9;:61::i;:::-;7941:165:::0;:::o;3387:195:20:-;1898:6;1881:23;;1889:4;1881:23;;;1873:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;3468:36:::1;3486:17;3468;:36::i;:::-;3514:61;3536:17;3565:1;3555:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3569:5;3514:21;:61::i;:::-;3387:195:::0;:::o;9475:221:0:-;1334:13:14;:11;:13::i;:::-;9647:42:0::1;;;;;;;;9661:12;9647:42;;;;;;9675:13;9647:42;;;;::::0;9598:19:::1;:17;:19::i;:::-;:33;;:46;9632:11;9598:46;;;;;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9475:221:::0;;;:::o;5398:158::-;5482:67;5492:17;:15;:17::i;:::-;:30;;:56;5523:24;5492:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5482:9;:67::i;:::-;5398:158;:::o;3901:220:20:-;1898:6;1881:23;;1889:4;1881:23;;;1873:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;4016:36:::1;4034:17;4016;:36::i;:::-;4062:52;4084:17;4103:4;4109;4062:21;:52::i;:::-;3901:220:::0;;:::o;3006:131::-;3084:7;2333:6;2316:23;;2324:4;2316:23;;;2308:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;1312:66:17::1;3110:20:20;;3103:27;;3006:131:::0;:::o;6872:238:0:-;7037:66;7047:17;:15;:17::i;:::-;:30;;:55;7078:23;7047:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7037:9;:66::i;:::-;6872:238;;;;:::o;8460:163::-;1334:13:14;:11;:13::i;:::-;8555:61:0::1;8565:17;:15;:17::i;:::-;:30;;:50;8596:18;8565:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8555:9;:61::i;:::-;8460:163:::0;:::o;7387:236::-;7550:66;7560:17;:15;:17::i;:::-;:30;;:55;7591:23;7560:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7550:9;:66::i;:::-;7387:236;;;;:::o;2064:101:14:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;9702:288:0:-;9794:18;9814:19;9845:25;9873:19;:17;:19::i;:::-;:33;;:46;9907:11;9873:46;;;;;;;;;;;;;;;9845:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9937:4;:21;;;9960:4;:22;;;9929:54;;;;;9702:288;;;:::o;2010:212:13:-;2062:14;2079:12;:10;:12::i;:::-;2062:29;;2127:6;2109:24;;:14;:12;:14::i;:::-;:24;;;2101:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2189:26;2208:6;2189:18;:26::i;:::-;2052:170;2010:212::o;8112:168:0:-;1334:13:14;:11;:13::i;:::-;8212:61:0::1;8222:17;:15;:17::i;:::-;:30;;:50;8253:18;8222:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8212:9;:61::i;:::-;8112:168:::0;:::o;4737:149::-;4812:67;4822:17;:15;:17::i;:::-;:30;;:56;4853:24;4822:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4812:9;:67::i;:::-;4737:149;:::o;1441:85:14:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;4569:162:0:-;4657:67;4667:17;:15;:17::i;:::-;:30;;:56;4698:24;4667:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4657:9;:67::i;:::-;4569:162;;:::o;8629:166::-;1334:13:14;:11;:13::i;:::-;8727:61:0::1;8737:17;:15;:17::i;:::-;:30;;:50;8768:18;8737:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8727:9;:61::i;:::-;8629:166:::0;:::o;7116:265::-;7308:66;7318:17;:15;:17::i;:::-;:30;;:55;7349:23;7318:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7308:9;:66::i;:::-;7116:265;;;;;:::o;6632:234::-;6793:66;6803:17;:15;:17::i;:::-;:30;;:55;6834:23;6803:55;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6793:9;:66::i;:::-;6632:234;;;;:::o;1013:963::-;3279:19:19;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;1898:6:20::1;1881:23;;1889:4;1881:23;;::::0;1873:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1995:6;1971:30;;:20;:18;:20::i;:::-;:30;;;1963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1501:24:0::2;:22;:24::i;:::-;1535:26;:24;:26::i;:::-;1571:398;1612:6;1632:13;1659:12;1685:7;1706:9;1729:31;1774:29;1817:27;1858:25;1897;1936:23;1571:27;:398::i;:::-;3651:14:19::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;1013:963:0;;;;;;;;;;;:::o;4391:172::-;4489:67;4499:17;:15;:17::i;:::-;:30;;:56;4530:24;4499:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4489:9;:67::i;:::-;4391:172;;:::o;7780:155::-;1334:13:14;:11;:13::i;:::-;7867:61:0::1;7877:17;:15;:17::i;:::-;:30;;:50;7908:18;7877:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7867:9;:61::i;:::-;7780:155:::0;:::o;5676:154::-;5794:10;5767:56;;;5806:16;5767:56;;;;;;:::i;:::-;;;;;;;;5676:154;:::o;1123:99:13:-;1176:7;1202:13;;;;;;;;;;;1195:20;;1123:99;:::o;8801:155:0:-;1334:13:14;:11;:13::i;:::-;8888:61:0::1;8898:17;:15;:17::i;:::-;:30;;:50;8929:18;8898:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8888:9;:61::i;:::-;8801:155:::0;:::o;9203:152::-;1334:13:14;:11;:13::i;:::-;9298:50:0::1;9324:8;9334:13;9298:25;:50::i;:::-;9203:152:::0;;:::o;8286:168::-;1334:13:14;:11;:13::i;:::-;8386:61:0::1;8396:17;:15;:17::i;:::-;:30;;:50;8427:18;8396:50;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8386:9;:61::i;:::-;8286:168:::0;:::o;1415:178:13:-;1334:13:14;:11;:13::i;:::-;1520:8:13::1;1504:13;;:24;;;;;;;;;;;;;;;;;;1577:8;1543:43;;1568:7;:5;:7::i;:::-;1543:43;;;;;;;;;;;;1415:178:::0;:::o;3945:289:0:-;4037:9;4063:19;:17;:19::i;:::-;:33;;:45;4097:10;4063:45;;;;;;;;;;;;;;;:62;;;;;;;;;;;;4058:91;;4134:15;;;;;;;;;;;;;;4058:91;4160:67;4170:17;:15;:17::i;:::-;:30;;:56;4201:24;4170:56;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4160:9;:67::i;:::-;3945:289;;;;;:::o;369:177:9:-;408:19;439:16;275:1;234:37;226:46;;:50;;;;:::i;:::-;439:39;;522:8;511:19;;497:43;369:177;:::o;199:96:8:-;244:13;269:19;;;;;;;;;;;;;;;;;;;199:96;:::o;1599:130:14:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;1457:151:17:-;1510:7;1536:59;1312:66;1574:20;;1536:37;:59::i;:::-;:65;;;;;;;;;;;;1529:72;;1457:151;:::o;3499:66:0:-;1334:13:14;:11;:13::i;:::-;3499:66:0;:::o;2820:944:17:-;3236:53;971:66;3274:14;;3236:37;:53::i;:::-;:59;;;;;;;;;;;;3232:526;;;3311:37;3330:17;3311:18;:37::i;:::-;3232:526;;;3412:17;3383:61;;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3379:302;;3610:56;;;;;;;;;;:::i;:::-;;;;;;;;3379:302;1312:66;3504:20;;3496:4;:28;3488:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;3447:138;3694:53;3712:17;3731:4;3737:9;3694:17;:53::i;:::-;3232:526;2820:944;;;:::o;1777:153:13:-;1866:13;;1859:20;;;;;;;;;;;1889:34;1914:8;1889:24;:34::i;:::-;1777:153;:::o;850:96:22:-;903:7;929:10;922:17;;850:96;:::o;1423:320:21:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1042:67:20:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:67:20:o;1104:111:14:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:14::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;1982:1326:0:-;5374:13:19;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2473:21:0::1;2497:17;:15;:17::i;:::-;2473:41;;2524:26;2553:25;:23;:25::i;:::-;2524:54;;2598:6;2588:1;:7;;;:16;;;;;;;;;;;;;;;;;;2665:13;2614:1;:14;;:40;2629:24:::0;2614:40:::1;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;2739:12;2689:1;:14;;:39;2704:23;2689:39;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2807:7;2762:1;:14;;:34;2777:18;2762:34;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;2872:9;2825:1;:14;;:36;2840:20;2825:36:::0;::::1;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;2928:31;2892:2;:33;;;:67;;;;;;;;;;;;;;;;;;3003:38;:29;:36;:38::i;:::-;2969:2;:31;;;:72;;;;;;;;;;;;;;;;;;3083:27;3051:2;:29;;;:59;;;;;;;;;;;;;;;;;;3150:25;3120:2;:27;;;:55;;;;;;;;;;;;;;;;;;3215:25;3185:2;:27;;;:55;;;;;;;;;;;;;;;;;;3278:23;3250:2;:25;;;:51;;;;;;;;;;;;;;;;;;2463:845;;1982:1326:::0;;;;;;;;;;;:::o;1799:299:8:-;1894:25;1905:13;1894:10;:25::i;:::-;1889:81;;1928:42;;;;;;;;;;;;;;1889:81;2024:13;1981:17;:15;:17::i;:::-;:30;;:40;2012:8;1981:40;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;2067:8;2052:39;;;;;;;;:::i;:::-;;;2077:13;2052:39;;;;;;:::i;:::-;;;;;;;;1799:299;;:::o;1870:190:23:-;1931:21;2040:4;2030:14;;1870:190;;;:::o;2158:::-;2219:21;2328:4;2318:14;;2158:190;;;:::o;1699:281:17:-;1780:48;1810:17;1780:29;:48::i;:::-;1772:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;1956:17;1888:59;1312:66;1926:20;;1888:37;:59::i;:::-;:65;;;:85;;;;;;;;;;;;;;;;;;1699:281;:::o;2372:276::-;2480:29;2491:17;2480:10;:29::i;:::-;2537:1;2523:4;:11;:15;:28;;;;2542:9;2523:28;2519:123;;;2567:64;2607:17;2626:4;2567:39;:64::i;:::-;;2519:123;2372:276;;;:::o;2666:187:14:-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1672:184:11:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:12:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1286:506:8:-;1346:4;1385:1;1366:21;;:7;:21;;;1362:64;;1410:5;1403:12;;;;1362:64;1622:12;1743:7;1731:20;1723:28;;1784:1;1777:4;:8;1770:15;;;1286:506;;;;:::o;2086:152:17:-;2152:37;2171:17;2152:18;:37::i;:::-;2213:17;2204:27;;;;;;;;;;;;2086:152;:::o;6685:198:21:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;;6685:198;;;;:::o;488:169:12:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;7069:325:21:-;7210:12;7235;7249:23;7276:6;:19;;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;;;;7069:325;;;;;:::o;7682:628::-;7862:12;7890:7;7886:418;;;7938:1;7917:10;:17;:22;7913:286;;8132:18;8143:6;8132:10;:18::i;:::-;8124:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7913:286;8219:10;8212:17;;;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;;:::o;8832:540::-;9011:1;8991:10;:17;:21;8987:379;;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:180:26;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;193:75;226:6;259:2;253:9;243:19;;193:75;:::o;274:117::-;383:1;380;373:12;397:117;506:1;503;496:12;520:117;629:1;626;619:12;643:117;752:1;749;742:12;766:117;875:1;872;865:12;902:552;959:8;969:6;1019:3;1012:4;1004:6;1000:17;996:27;986:122;;1027:79;;:::i;:::-;986:122;1140:6;1127:20;1117:30;;1170:18;1162:6;1159:30;1156:117;;;1192:79;;:::i;:::-;1156:117;1306:4;1298:6;1294:17;1282:29;;1360:3;1352:4;1344:6;1340:17;1330:8;1326:32;1323:41;1320:128;;;1367:79;;:::i;:::-;1320:128;902:552;;;;;:::o;1460:102::-;1501:6;1552:2;1548:7;1543:2;1536:5;1532:14;1528:28;1518:38;;1460:102;;;:::o;1568:180::-;1616:77;1613:1;1606:88;1713:4;1710:1;1703:15;1737:4;1734:1;1727:15;1754:281;1837:27;1859:4;1837:27;:::i;:::-;1829:6;1825:40;1967:6;1955:10;1952:22;1931:18;1919:10;1916:34;1913:62;1910:88;;;1978:18;;:::i;:::-;1910:88;2018:10;2014:2;2007:22;1797:238;1754:281;;:::o;2041:129::-;2075:6;2102:20;;:::i;:::-;2092:30;;2131:33;2159:4;2151:6;2131:33;:::i;:::-;2041:129;;;:::o;2176:310::-;2252:4;2342:18;2334:6;2331:30;2328:56;;;2364:18;;:::i;:::-;2328:56;2414:4;2406:6;2402:17;2394:25;;2474:4;2468;2464:15;2456:23;;2176:310;;;:::o;2492:101::-;2528:7;2568:18;2561:5;2557:30;2546:41;;2492:101;;;:::o;2599:120::-;2671:23;2688:5;2671:23;:::i;:::-;2664:5;2661:34;2651:62;;2709:1;2706;2699:12;2651:62;2599:120;:::o;2725:137::-;2770:5;2808:6;2795:20;2786:29;;2824:32;2850:5;2824:32;:::i;:::-;2725:137;;;;:::o;2884:707::-;2979:5;3004:80;3020:63;3076:6;3020:63;:::i;:::-;3004:80;:::i;:::-;2995:89;;3104:5;3133:6;3126:5;3119:21;3167:4;3160:5;3156:16;3149:23;;3220:4;3212:6;3208:17;3200:6;3196:30;3249:3;3241:6;3238:15;3235:122;;;3268:79;;:::i;:::-;3235:122;3383:6;3366:219;3400:6;3395:3;3392:15;3366:219;;;3475:3;3504:36;3536:3;3524:10;3504:36;:::i;:::-;3499:3;3492:49;3570:4;3565:3;3561:14;3554:21;;3442:143;3426:4;3421:3;3417:14;3410:21;;3366:219;;;3370:21;2985:606;;2884:707;;;;;:::o;3613:368::-;3683:5;3732:3;3725:4;3717:6;3713:17;3709:27;3699:122;;3740:79;;:::i;:::-;3699:122;3857:6;3844:20;3882:93;3971:3;3963:6;3956:4;3948:6;3944:17;3882:93;:::i;:::-;3873:102;;3689:292;3613:368;;;;:::o;3987:77::-;4024:7;4053:5;4042:16;;3987:77;;;:::o;4070:122::-;4143:24;4161:5;4143:24;:::i;:::-;4136:5;4133:35;4123:63;;4182:1;4179;4172:12;4123:63;4070:122;:::o;4198:139::-;4244:5;4282:6;4269:20;4260:29;;4298:33;4325:5;4298:33;:::i;:::-;4198:139;;;;:::o;4343:117::-;4452:1;4449;4442:12;4589:93;4625:7;4665:10;4658:5;4654:22;4643:33;;4589:93;;;:::o;4688:120::-;4760:23;4777:5;4760:23;:::i;:::-;4753:5;4750:34;4740:62;;4798:1;4795;4788:12;4740:62;4688:120;:::o;4814:137::-;4859:5;4897:6;4884:20;4875:29;;4913:32;4939:5;4913:32;:::i;:::-;4814:137;;;;:::o;4957:90::-;4991:7;5034:5;5027:13;5020:21;5009:32;;4957:90;;;:::o;5053:116::-;5123:21;5138:5;5123:21;:::i;:::-;5116:5;5113:32;5103:60;;5159:1;5156;5149:12;5103:60;5053:116;:::o;5175:133::-;5218:5;5256:6;5243:20;5234:29;;5272:30;5296:5;5272:30;:::i;:::-;5175:133;;;;:::o;5352:1079::-;5426:5;5470:4;5458:9;5453:3;5449:19;5445:30;5442:117;;;5478:79;;:::i;:::-;5442:117;5577:21;5593:4;5577:21;:::i;:::-;5568:30;;5667:1;5707:48;5751:3;5742:6;5731:9;5727:22;5707:48;:::i;:::-;5700:4;5693:5;5689:16;5682:74;5608:159;5837:2;5878:48;5922:3;5913:6;5902:9;5898:22;5878:48;:::i;:::-;5871:4;5864:5;5860:16;5853:74;5777:161;5998:2;6039:48;6083:3;6074:6;6063:9;6059:22;6039:48;:::i;:::-;6032:4;6025:5;6021:16;6014:74;5948:151;6160:2;6201:46;6243:3;6234:6;6223:9;6219:22;6201:46;:::i;:::-;6194:4;6187:5;6183:16;6176:72;6109:150;6321:3;6363:49;6408:3;6399:6;6388:9;6384:22;6363:49;:::i;:::-;6356:4;6349:5;6345:16;6338:75;6269:155;5352:1079;;;;:::o;6437:1565::-;6603:6;6611;6619;6627;6635;6643;6651;6700:3;6688:9;6679:7;6675:23;6671:33;6668:120;;;6707:79;;:::i;:::-;6668:120;6855:1;6844:9;6840:17;6827:31;6885:18;6877:6;6874:30;6871:117;;;6907:79;;:::i;:::-;6871:117;7020:64;7076:7;7067:6;7056:9;7052:22;7020:64;:::i;:::-;7002:82;;;;6798:296;7161:2;7150:9;7146:18;7133:32;7192:18;7184:6;7181:30;7178:117;;;7214:79;;:::i;:::-;7178:117;7319:77;7388:7;7379:6;7368:9;7364:22;7319:77;:::i;:::-;7309:87;;7104:302;7473:2;7462:9;7458:18;7445:32;7504:18;7496:6;7493:30;7490:117;;;7526:79;;:::i;:::-;7490:117;7639:64;7695:7;7686:6;7675:9;7671:22;7639:64;:::i;:::-;7621:82;;;;7416:297;7752:2;7778:53;7823:7;7814:6;7803:9;7799:22;7778:53;:::i;:::-;7768:63;;7723:118;7880:3;7907:78;7977:7;7968:6;7957:9;7953:22;7907:78;:::i;:::-;7897:88;;7851:144;6437:1565;;;;;;;;;;:::o;8008:99::-;8060:6;8094:5;8088:12;8078:22;;8008:99;;;:::o;8113:169::-;8197:11;8231:6;8226:3;8219:19;8271:4;8266:3;8262:14;8247:29;;8113:169;;;;:::o;8288:246::-;8369:1;8379:113;8393:6;8390:1;8387:13;8379:113;;;8478:1;8473:3;8469:11;8463:18;8459:1;8454:3;8450:11;8443:39;8415:2;8412:1;8408:10;8403:15;;8379:113;;;8526:1;8517:6;8512:3;8508:16;8501:27;8350:184;8288:246;;;:::o;8540:377::-;8628:3;8656:39;8689:5;8656:39;:::i;:::-;8711:71;8775:6;8770:3;8711:71;:::i;:::-;8704:78;;8791:65;8849:6;8844:3;8837:4;8830:5;8826:16;8791:65;:::i;:::-;8881:29;8903:6;8881:29;:::i;:::-;8876:3;8872:39;8865:46;;8632:285;8540:377;;;;:::o;8923:313::-;9036:4;9074:2;9063:9;9059:18;9051:26;;9123:9;9117:4;9113:20;9109:1;9098:9;9094:17;9087:47;9151:78;9224:4;9215:6;9151:78;:::i;:::-;9143:86;;8923:313;;;;:::o;9258:567::-;9330:8;9340:6;9390:3;9383:4;9375:6;9371:17;9367:27;9357:122;;9398:79;;:::i;:::-;9357:122;9511:6;9498:20;9488:30;;9541:18;9533:6;9530:30;9527:117;;;9563:79;;:::i;:::-;9527:117;9677:4;9669:6;9665:17;9653:29;;9731:3;9723:4;9715:6;9711:17;9701:8;9697:32;9694:41;9691:128;;;9738:79;;:::i;:::-;9691:128;9258:567;;;;;:::o;9831:1096::-;9970:6;9978;9986;9994;10002;10051:3;10039:9;10030:7;10026:23;10022:33;10019:120;;;10058:79;;:::i;:::-;10019:120;10206:1;10195:9;10191:17;10178:31;10236:18;10228:6;10225:30;10222:117;;;10258:79;;:::i;:::-;10222:117;10371:64;10427:7;10418:6;10407:9;10403:22;10371:64;:::i;:::-;10353:82;;;;10149:296;10512:2;10501:9;10497:18;10484:32;10543:18;10535:6;10532:30;10529:117;;;10565:79;;:::i;:::-;10529:117;10678:79;10749:7;10740:6;10729:9;10725:22;10678:79;:::i;:::-;10660:97;;;;10455:312;10806:2;10832:78;10902:7;10893:6;10882:9;10878:22;10832:78;:::i;:::-;10822:88;;10777:143;9831:1096;;;;;;;;:::o;10933:472::-;11000:6;11008;11057:2;11045:9;11036:7;11032:23;11028:32;11025:119;;;11063:79;;:::i;:::-;11025:119;11183:1;11208:52;11252:7;11243:6;11232:9;11228:22;11208:52;:::i;:::-;11198:62;;11154:116;11309:2;11335:53;11380:7;11371:6;11360:9;11356:22;11335:53;:::i;:::-;11325:63;;11280:118;10933:472;;;;;:::o;11411:329::-;11470:6;11519:2;11507:9;11498:7;11494:23;11490:32;11487:119;;;11525:79;;:::i;:::-;11487:119;11645:1;11670:53;11715:7;11706:6;11695:9;11691:22;11670:53;:::i;:::-;11660:63;;11616:117;11411:329;;;;:::o;11746:327::-;11804:6;11853:2;11841:9;11832:7;11828:23;11824:32;11821:119;;;11859:79;;:::i;:::-;11821:119;11979:1;12004:52;12048:7;12039:6;12028:9;12024:22;12004:52;:::i;:::-;11994:62;;11950:116;11746:327;;;;:::o;12079:126::-;12116:7;12156:42;12149:5;12145:54;12134:65;;12079:126;;;:::o;12211:96::-;12248:7;12277:24;12295:5;12277:24;:::i;:::-;12266:35;;12211:96;;;:::o;12313:122::-;12386:24;12404:5;12386:24;:::i;:::-;12379:5;12376:35;12366:63;;12425:1;12422;12415:12;12366:63;12313:122;:::o;12441:139::-;12487:5;12525:6;12512:20;12503:29;;12541:33;12568:5;12541:33;:::i;:::-;12441:139;;;;:::o;12586:329::-;12645:6;12694:2;12682:9;12673:7;12669:23;12665:32;12662:119;;;12700:79;;:::i;:::-;12662:119;12820:1;12845:53;12890:7;12881:6;12870:9;12866:22;12845:53;:::i;:::-;12835:63;;12791:117;12586:329;;;;:::o;12921:607::-;12992:6;13000;13008;13057:2;13045:9;13036:7;13032:23;13028:32;13025:119;;;13063:79;;:::i;:::-;13025:119;13183:1;13208:53;13253:7;13244:6;13233:9;13229:22;13208:53;:::i;:::-;13198:63;;13154:117;13310:2;13336:50;13378:7;13369:6;13358:9;13354:22;13336:50;:::i;:::-;13326:60;;13281:115;13435:2;13461:50;13503:7;13494:6;13483:9;13479:22;13461:50;:::i;:::-;13451:60;;13406:115;12921:607;;;;;:::o;13534:117::-;13643:1;13640;13633:12;13657:307;13718:4;13808:18;13800:6;13797:30;13794:56;;;13830:18;;:::i;:::-;13794:56;13868:29;13890:6;13868:29;:::i;:::-;13860:37;;13952:4;13946;13942:15;13934:23;;13657:307;;;:::o;13970:146::-;14067:6;14062:3;14057;14044:30;14108:1;14099:6;14094:3;14090:16;14083:27;13970:146;;;:::o;14122:423::-;14199:5;14224:65;14240:48;14281:6;14240:48;:::i;:::-;14224:65;:::i;:::-;14215:74;;14312:6;14305:5;14298:21;14350:4;14343:5;14339:16;14388:3;14379:6;14374:3;14370:16;14367:25;14364:112;;;14395:79;;:::i;:::-;14364:112;14485:54;14532:6;14527:3;14522;14485:54;:::i;:::-;14205:340;14122:423;;;;;:::o;14564:338::-;14619:5;14668:3;14661:4;14653:6;14649:17;14645:27;14635:122;;14676:79;;:::i;:::-;14635:122;14793:6;14780:20;14818:78;14892:3;14884:6;14877:4;14869:6;14865:17;14818:78;:::i;:::-;14809:87;;14625:277;14564:338;;;;:::o;14908:652::-;14985:6;14993;15042:2;15030:9;15021:7;15017:23;15013:32;15010:119;;;15048:79;;:::i;:::-;15010:119;15168:1;15193:53;15238:7;15229:6;15218:9;15214:22;15193:53;:::i;:::-;15183:63;;15139:117;15323:2;15312:9;15308:18;15295:32;15354:18;15346:6;15343:30;15340:117;;;15376:79;;:::i;:::-;15340:117;15481:62;15535:7;15526:6;15515:9;15511:22;15481:62;:::i;:::-;15471:72;;15266:287;14908:652;;;;;:::o;15566:77::-;15603:7;15632:5;15621:16;;15566:77;;;:::o;15649:118::-;15736:24;15754:5;15736:24;:::i;:::-;15731:3;15724:37;15649:118;;:::o;15773:222::-;15866:4;15904:2;15893:9;15889:18;15881:26;;15917:71;15985:1;15974:9;15970:17;15961:6;15917:71;:::i;:::-;15773:222;;;;:::o;16001:898::-;16129:6;16137;16145;16153;16202:3;16190:9;16181:7;16177:23;16173:33;16170:120;;;16209:79;;:::i;:::-;16170:120;16357:1;16346:9;16342:17;16329:31;16387:18;16379:6;16376:30;16373:117;;;16409:79;;:::i;:::-;16373:117;16522:79;16593:7;16584:6;16573:9;16569:22;16522:79;:::i;:::-;16504:97;;;;16300:311;16650:2;16676:53;16721:7;16712:6;16701:9;16697:22;16676:53;:::i;:::-;16666:63;;16621:118;16778:2;16804:78;16874:7;16865:6;16854:9;16850:22;16804:78;:::i;:::-;16794:88;;16749:143;16001:898;;;;;;;:::o;16905:109::-;16986:21;17001:5;16986:21;:::i;:::-;16981:3;16974:34;16905:109;;:::o;17020:308::-;17129:4;17167:2;17156:9;17152:18;17144:26;;17180:65;17242:1;17231:9;17227:17;17218:6;17180:65;:::i;:::-;17255:66;17317:2;17306:9;17302:18;17293:6;17255:66;:::i;:::-;17020:308;;;;;:::o;17334:118::-;17421:24;17439:5;17421:24;:::i;:::-;17416:3;17409:37;17334:118;;:::o;17458:222::-;17551:4;17589:2;17578:9;17574:18;17566:26;;17602:71;17670:1;17659:9;17655:17;17646:6;17602:71;:::i;:::-;17458:222;;;;:::o;17686:1043::-;17823:6;17831;17839;17847;17855;17904:3;17892:9;17883:7;17879:23;17875:33;17872:120;;;17911:79;;:::i;:::-;17872:120;18031:1;18056:53;18101:7;18092:6;18081:9;18077:22;18056:53;:::i;:::-;18046:63;;18002:117;18186:2;18175:9;18171:18;18158:32;18217:18;18209:6;18206:30;18203:117;;;18239:79;;:::i;:::-;18203:117;18352:79;18423:7;18414:6;18403:9;18399:22;18352:79;:::i;:::-;18334:97;;;;18129:312;18480:2;18506:53;18551:7;18542:6;18531:9;18527:22;18506:53;:::i;:::-;18496:63;;18451:118;18608:2;18634:78;18704:7;18695:6;18684:9;18680:22;18634:78;:::i;:::-;18624:88;;18579:143;17686:1043;;;;;;;;:::o;18735:898::-;18863:6;18871;18879;18887;18936:3;18924:9;18915:7;18911:23;18907:33;18904:120;;;18943:79;;:::i;:::-;18904:120;19063:1;19088:53;19133:7;19124:6;19113:9;19109:22;19088:53;:::i;:::-;19078:63;;19034:117;19218:2;19207:9;19203:18;19190:32;19249:18;19241:6;19238:30;19235:117;;;19271:79;;:::i;:::-;19235:117;19384:79;19455:7;19446:6;19435:9;19431:22;19384:79;:::i;:::-;19366:97;;;;19161:312;19512:2;19538:78;19608:7;19599:6;19588:9;19584:22;19538:78;:::i;:::-;19528:88;;19483:143;18735:898;;;;;;;:::o;19639:111::-;19691:7;19720:24;19738:5;19720:24;:::i;:::-;19709:35;;19639:111;;;:::o;19756:152::-;19844:39;19877:5;19844:39;:::i;:::-;19837:5;19834:50;19824:78;;19898:1;19895;19888:12;19824:78;19756:152;:::o;19914:169::-;19975:5;20013:6;20000:20;19991:29;;20029:48;20071:5;20029:48;:::i;:::-;19914:169;;;;:::o;20089:118::-;20148:7;20177:24;20195:5;20177:24;:::i;:::-;20166:35;;20089:118;;;:::o;20213:166::-;20308:46;20348:5;20308:46;:::i;:::-;20301:5;20298:57;20288:85;;20369:1;20366;20359:12;20288:85;20213:166;:::o;20385:183::-;20453:5;20491:6;20478:20;20469:29;;20507:55;20556:5;20507:55;:::i;:::-;20385:183;;;;:::o;20574:117::-;20632:7;20661:24;20679:5;20661:24;:::i;:::-;20650:35;;20574:117;;;:::o;20697:164::-;20791:45;20830:5;20791:45;:::i;:::-;20784:5;20781:56;20771:84;;20851:1;20848;20841:12;20771:84;20697:164;:::o;20867:181::-;20934:5;20972:6;20959:20;20950:29;;20988:54;21036:5;20988:54;:::i;:::-;20867:181;;;;:::o;21054:112::-;21107:7;21136:24;21154:5;21136:24;:::i;:::-;21125:35;;21054:112;;;:::o;21172:154::-;21261:40;21295:5;21261:40;:::i;:::-;21254:5;21251:51;21241:79;;21316:1;21313;21306:12;21241:79;21172:154;:::o;21332:171::-;21394:5;21432:6;21419:20;21410:29;;21448:49;21491:5;21448:49;:::i;:::-;21332:171;;;;:::o;21509:114::-;21564:7;21593:24;21611:5;21593:24;:::i;:::-;21582:35;;21509:114;;;:::o;21629:158::-;21720:42;21756:5;21720:42;:::i;:::-;21713:5;21710:53;21700:81;;21777:1;21774;21767:12;21700:81;21629:158;:::o;21793:175::-;21857:5;21895:6;21882:20;21873:29;;21911:51;21956:5;21911:51;:::i;:::-;21793:175;;;;:::o;21974:1963::-;22210:6;22218;22226;22234;22242;22250;22258;22266;22274;22282;22290:7;22340:3;22328:9;22319:7;22315:23;22311:33;22308:120;;;22347:79;;:::i;:::-;22308:120;22467:1;22492:68;22552:7;22543:6;22532:9;22528:22;22492:68;:::i;:::-;22482:78;;22438:132;22609:2;22635:75;22702:7;22693:6;22682:9;22678:22;22635:75;:::i;:::-;22625:85;;22580:140;22759:2;22785:74;22851:7;22842:6;22831:9;22827:22;22785:74;:::i;:::-;22775:84;;22730:139;22908:2;22934:69;22995:7;22986:6;22975:9;22971:22;22934:69;:::i;:::-;22924:79;;22879:134;23052:3;23079:71;23142:7;23133:6;23122:9;23118:22;23079:71;:::i;:::-;23069:81;;23023:137;23199:3;23226:52;23270:7;23261:6;23250:9;23246:22;23226:52;:::i;:::-;23216:62;;23170:118;23327:3;23354:53;23399:7;23390:6;23379:9;23375:22;23354:53;:::i;:::-;23344:63;;23298:119;23456:3;23483:52;23527:7;23518:6;23507:9;23503:22;23483:52;:::i;:::-;23473:62;;23427:118;23584:3;23611:52;23655:7;23646:6;23635:9;23631:22;23611:52;:::i;:::-;23601:62;;23555:118;23712:3;23739:52;23783:7;23774:6;23763:9;23759:22;23739:52;:::i;:::-;23729:62;;23683:118;23840:3;23868:52;23912:7;23903:6;23892:9;23888:22;23868:52;:::i;:::-;23857:63;;23811:119;21974:1963;;;;;;;;;;;;;;:::o;23943:472::-;24010:6;24018;24067:2;24055:9;24046:7;24042:23;24038:32;24035:119;;;24073:79;;:::i;:::-;24035:119;24193:1;24218:52;24262:7;24253:6;24242:9;24238:22;24218:52;:::i;:::-;24208:62;;24164:116;24319:2;24345:53;24390:7;24381:6;24370:9;24366:22;24345:53;:::i;:::-;24335:63;;24290:118;23943:472;;;;;:::o;24421:114::-;24509:1;24502:5;24499:12;24489:40;;24525:1;24522;24515:12;24489:40;24421:114;:::o;24541:169::-;24602:5;24640:6;24627:20;24618:29;;24656:48;24698:5;24656:48;:::i;:::-;24541:169;;;;:::o;24716:504::-;24799:6;24807;24856:2;24844:9;24835:7;24831:23;24827:32;24824:119;;;24862:79;;:::i;:::-;24824:119;24982:1;25007:68;25067:7;25058:6;25047:9;25043:22;25007:68;:::i;:::-;24997:78;;24953:132;25124:2;25150:53;25195:7;25186:6;25175:9;25171:22;25150:53;:::i;:::-;25140:63;;25095:118;24716:504;;;;;:::o;25226:672::-;25305:6;25313;25321;25370:2;25358:9;25349:7;25345:23;25341:32;25338:119;;;25376:79;;:::i;:::-;25338:119;25524:1;25513:9;25509:17;25496:31;25554:18;25546:6;25543:30;25540:117;;;25576:79;;:::i;:::-;25540:117;25689:64;25745:7;25736:6;25725:9;25721:22;25689:64;:::i;:::-;25671:82;;;;25467:296;25802:2;25828:53;25873:7;25864:6;25853:9;25849:22;25828:53;:::i;:::-;25818:63;;25773:118;25226:672;;;;;:::o;25904:115::-;25989:23;26006:5;25989:23;:::i;:::-;25984:3;25977:36;25904:115;;:::o;26025:218::-;26116:4;26154:2;26143:9;26139:18;26131:26;;26167:69;26233:1;26222:9;26218:17;26209:6;26167:69;:::i;:::-;26025:218;;;;:::o;26249:180::-;26297:77;26294:1;26287:88;26394:4;26391:1;26384:15;26418:4;26415:1;26408:15;26435:194;26475:4;26495:20;26513:1;26495:20;:::i;:::-;26490:25;;26529:20;26547:1;26529:20;:::i;:::-;26524:25;;26573:1;26570;26566:9;26558:17;;26597:1;26591:4;26588:11;26585:37;;;26602:18;;:::i;:::-;26585:37;26435:194;;;;:::o;26635:231::-;26775:34;26771:1;26763:6;26759:14;26752:58;26844:14;26839:2;26831:6;26827:15;26820:39;26635:231;:::o;26872:366::-;27014:3;27035:67;27099:2;27094:3;27035:67;:::i;:::-;27028:74;;27111:93;27200:3;27111:93;:::i;:::-;27229:2;27224:3;27220:12;27213:19;;26872:366;;;:::o;27244:419::-;27410:4;27448:2;27437:9;27433:18;27425:26;;27497:9;27491:4;27487:20;27483:1;27472:9;27468:17;27461:47;27525:131;27651:4;27525:131;:::i;:::-;27517:139;;27244:419;;;:::o;27669:231::-;27809:34;27805:1;27797:6;27793:14;27786:58;27878:14;27873:2;27865:6;27861:15;27854:39;27669:231;:::o;27906:366::-;28048:3;28069:67;28133:2;28128:3;28069:67;:::i;:::-;28062:74;;28145:93;28234:3;28145:93;:::i;:::-;28263:2;28258:3;28254:12;28247:19;;27906:366;;;:::o;28278:419::-;28444:4;28482:2;28471:9;28467:18;28459:26;;28531:9;28525:4;28521:20;28517:1;28506:9;28502:17;28495:47;28559:131;28685:4;28559:131;:::i;:::-;28551:139;;28278:419;;;:::o;28703:243::-;28843:34;28839:1;28831:6;28827:14;28820:58;28912:26;28907:2;28899:6;28895:15;28888:51;28703:243;:::o;28952:366::-;29094:3;29115:67;29179:2;29174:3;29115:67;:::i;:::-;29108:74;;29191:93;29280:3;29191:93;:::i;:::-;29309:2;29304:3;29300:12;29293:19;;28952:366;;;:::o;29324:419::-;29490:4;29528:2;29517:9;29513:18;29505:26;;29577:9;29571:4;29567:20;29563:1;29552:9;29548:17;29541:47;29605:131;29731:4;29605:131;:::i;:::-;29597:139;;29324:419;;;:::o;29749:228::-;29889:34;29885:1;29877:6;29873:14;29866:58;29958:11;29953:2;29945:6;29941:15;29934:36;29749:228;:::o;29983:366::-;30125:3;30146:67;30210:2;30205:3;30146:67;:::i;:::-;30139:74;;30222:93;30311:3;30222:93;:::i;:::-;30340:2;30335:3;30331:12;30324:19;;29983:366;;;:::o;30355:419::-;30521:4;30559:2;30548:9;30544:18;30536:26;;30608:9;30602:4;30598:20;30594:1;30583:9;30579:17;30572:47;30636:131;30762:4;30636:131;:::i;:::-;30628:139;;30355:419;;;:::o;30780:233::-;30920:34;30916:1;30908:6;30904:14;30897:58;30989:16;30984:2;30976:6;30972:15;30965:41;30780:233;:::o;31019:366::-;31161:3;31182:67;31246:2;31241:3;31182:67;:::i;:::-;31175:74;;31258:93;31347:3;31258:93;:::i;:::-;31376:2;31371:3;31367:12;31360:19;;31019:366;;;:::o;31391:419::-;31557:4;31595:2;31584:9;31580:18;31572:26;;31644:9;31638:4;31634:20;31630:1;31619:9;31615:17;31608:47;31672:131;31798:4;31672:131;:::i;:::-;31664:139;;31391:419;;;:::o;31816:85::-;31861:7;31890:5;31879:16;;31816:85;;;:::o;31907:86::-;31942:7;31982:4;31975:5;31971:16;31960:27;;31907:86;;;:::o;31999:60::-;32027:3;32048:5;32041:12;;31999:60;;;:::o;32065:154::-;32121:9;32154:59;32170:42;32179:32;32205:5;32179:32;:::i;:::-;32170:42;:::i;:::-;32154:59;:::i;:::-;32141:72;;32065:154;;;:::o;32225:143::-;32318:43;32355:5;32318:43;:::i;:::-;32313:3;32306:56;32225:143;;:::o;32374:234::-;32473:4;32511:2;32500:9;32496:18;32488:26;;32524:77;32598:1;32587:9;32583:17;32574:6;32524:77;:::i;:::-;32374:234;;;;:::o;32614:182::-;32754:34;32750:1;32742:6;32738:14;32731:58;32614:182;:::o;32802:366::-;32944:3;32965:67;33029:2;33024:3;32965:67;:::i;:::-;32958:74;;33041:93;33130:3;33041:93;:::i;:::-;33159:2;33154:3;33150:12;33143:19;;32802:366;;;:::o;33174:419::-;33340:4;33378:2;33367:9;33363:18;33355:26;;33427:9;33421:4;33417:20;33413:1;33402:9;33398:17;33391:47;33455:131;33581:4;33455:131;:::i;:::-;33447:139;;33174:419;;;:::o;33599:122::-;33672:24;33690:5;33672:24;:::i;:::-;33665:5;33662:35;33652:63;;33711:1;33708;33701:12;33652:63;33599:122;:::o;33727:143::-;33784:5;33815:6;33809:13;33800:22;;33831:33;33858:5;33831:33;:::i;:::-;33727:143;;;;:::o;33876:351::-;33946:6;33995:2;33983:9;33974:7;33970:23;33966:32;33963:119;;;34001:79;;:::i;:::-;33963:119;34121:1;34146:64;34202:7;34193:6;34182:9;34178:22;34146:64;:::i;:::-;34136:74;;34092:128;33876:351;;;;:::o;34233:233::-;34373:34;34369:1;34361:6;34357:14;34350:58;34442:16;34437:2;34429:6;34425:15;34418:41;34233:233;:::o;34472:366::-;34614:3;34635:67;34699:2;34694:3;34635:67;:::i;:::-;34628:74;;34711:93;34800:3;34711:93;:::i;:::-;34829:2;34824:3;34820:12;34813:19;;34472:366;;;:::o;34844:419::-;35010:4;35048:2;35037:9;35033:18;35025:26;;35097:9;35091:4;35087:20;35083:1;35072:9;35068:17;35061:47;35125:131;35251:4;35125:131;:::i;:::-;35117:139;;34844:419;;;:::o;35269:228::-;35409:34;35405:1;35397:6;35393:14;35386:58;35478:11;35473:2;35465:6;35461:15;35454:36;35269:228;:::o;35503:366::-;35645:3;35666:67;35730:2;35725:3;35666:67;:::i;:::-;35659:74;;35742:93;35831:3;35742:93;:::i;:::-;35860:2;35855:3;35851:12;35844:19;;35503:366;;;:::o;35875:419::-;36041:4;36079:2;36068:9;36064:18;36056:26;;36128:9;36122:4;36118:20;36114:1;36103:9;36099:17;36092:47;36156:131;36282:4;36156:131;:::i;:::-;36148:139;;35875:419;;;:::o;36300:230::-;36440:34;36436:1;36428:6;36424:14;36417:58;36509:13;36504:2;36496:6;36492:15;36485:38;36300:230;:::o;36536:366::-;36678:3;36699:67;36763:2;36758:3;36699:67;:::i;:::-;36692:74;;36775:93;36864:3;36775:93;:::i;:::-;36893:2;36888:3;36884:12;36877:19;;36536:366;;;:::o;36908:419::-;37074:4;37112:2;37101:9;37097:18;37089:26;;37161:9;37155:4;37151:20;37147:1;37136:9;37132:17;37125:47;37189:131;37315:4;37189:131;:::i;:::-;37181:139;;36908:419;;;:::o;37333:232::-;37473:34;37469:1;37461:6;37457:14;37450:58;37542:15;37537:2;37529:6;37525:15;37518:40;37333:232;:::o;37571:366::-;37713:3;37734:67;37798:2;37793:3;37734:67;:::i;:::-;37727:74;;37810:93;37899:3;37810:93;:::i;:::-;37928:2;37923:3;37919:12;37912:19;;37571:366;;;:::o;37943:419::-;38109:4;38147:2;38136:9;38132:18;38124:26;;38196:9;38190:4;38186:20;38182:1;38171:9;38167:17;38160:47;38224:131;38350:4;38224:131;:::i;:::-;38216:139;;37943:419;;;:::o;38368:410::-;38408:7;38431:20;38449:1;38431:20;:::i;:::-;38426:25;;38465:20;38483:1;38465:20;:::i;:::-;38460:25;;38520:1;38517;38513:9;38542:30;38560:11;38542:30;:::i;:::-;38531:41;;38721:1;38712:7;38708:15;38705:1;38702:22;38682:1;38675:9;38655:83;38632:139;;38751:18;;:::i;:::-;38632:139;38416:362;38368:410;;;;:::o;38784:168::-;38924:20;38920:1;38912:6;38908:14;38901:44;38784:168;:::o;38958:366::-;39100:3;39121:67;39185:2;39180:3;39121:67;:::i;:::-;39114:74;;39197:93;39286:3;39197:93;:::i;:::-;39315:2;39310:3;39306:12;39299:19;;38958:366;;;:::o;39330:419::-;39496:4;39534:2;39523:9;39519:18;39511:26;;39583:9;39577:4;39573:20;39569:1;39558:9;39554:17;39547:47;39611:131;39737:4;39611:131;:::i;:::-;39603:139;;39330:419;;;:::o;39755:180::-;39803:77;39800:1;39793:88;39900:4;39897:1;39890:15;39924:4;39921:1;39914:15;39941:185;39981:1;39998:20;40016:1;39998:20;:::i;:::-;39993:25;;40032:20;40050:1;40032:20;:::i;:::-;40027:25;;40071:1;40061:35;;40076:18;;:::i;:::-;40061:35;40118:1;40115;40111:9;40106:14;;39941:185;;;;:::o;40132:176::-;40164:1;40181:20;40199:1;40181:20;:::i;:::-;40176:25;;40215:20;40233:1;40215:20;:::i;:::-;40210:25;;40254:1;40244:35;;40259:18;;:::i;:::-;40244:35;40300:1;40297;40293:9;40288:14;;40132:176;;;;:::o;40314:172::-;40454:24;40450:1;40442:6;40438:14;40431:48;40314:172;:::o;40492:366::-;40634:3;40655:67;40719:2;40714:3;40655:67;:::i;:::-;40648:74;;40731:93;40820:3;40731:93;:::i;:::-;40849:2;40844:3;40840:12;40833:19;;40492:366;;;:::o;40864:419::-;41030:4;41068:2;41057:9;41053:18;41045:26;;41117:9;41111:4;41107:20;41103:1;41092:9;41088:17;41081:47;41145:131;41271:4;41145:131;:::i;:::-;41137:139;;40864:419;;;:::o;41289:98::-;41340:6;41374:5;41368:12;41358:22;;41289:98;;;:::o;41393:147::-;41494:11;41531:3;41516:18;;41393:147;;;;:::o;41546:386::-;41650:3;41678:38;41710:5;41678:38;:::i;:::-;41732:88;41813:6;41808:3;41732:88;:::i;:::-;41725:95;;41829:65;41887:6;41882:3;41875:4;41868:5;41864:16;41829:65;:::i;:::-;41919:6;41914:3;41910:16;41903:23;;41654:278;41546:386;;;;:::o;41938:271::-;42068:3;42090:93;42179:3;42170:6;42090:93;:::i;:::-;42083:100;;42200:3;42193:10;;41938:271;;;;:::o;42215:179::-;42355:31;42351:1;42343:6;42339:14;42332:55;42215:179;:::o;42400:366::-;42542:3;42563:67;42627:2;42622:3;42563:67;:::i;:::-;42556:74;;42639:93;42728:3;42639:93;:::i;:::-;42757:2;42752:3;42748:12;42741:19;;42400:366;;;:::o;42772:419::-;42938:4;42976:2;42965:9;42961:18;42953:26;;43025:9;43019:4;43015:20;43011:1;43000:9;42996:17;42989:47;43053:131;43179:4;43053:131;:::i;:::-;43045:139;;42772:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getRegisterAuth\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"contractISSVOperators\",\"name\":\"ssvOperators_\",\"type\":\"address\"},{\"internalType\":\"contractISSVClusters\",\"name\":\"ssvClusters_\",\"type\":\"address\"},{\"internalType\":\"contractISSVDAO\",\"name\":\"ssvDAO_\",\"type\":\"address\"},{\"internalType\":\"contractISSVViews\",\"name\":\"ssvViews_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minimumBlocksBeforeLiquidation_\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"minimumLiquidationCollateral_\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorsPerOperatorLimit_\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease_\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"setFeeRecipientAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authOperator\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidator\",\"type\":\"bool\"}],\"name\":\"setRegisterAuth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"updateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b62000205565b600060019054906101000a900460ff1615620000ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a590620001a8565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff16146200011f5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001169190620001e8565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200019060278362000121565b91506200019d8262000132565b604082019050919050565b60006020820190508181036000830152620001c38162000181565b9050919050565b600060ff82169050919050565b620001e281620001ca565b82525050565b6000602082019050620001ff6000830184620001d7565b92915050565b6080516142466200024b60003960008181610d0601528181610d9401528181610fab01528181611039015281816110e9015281816117e2015261187001526142466000f3fe60806040526004361061021e5760003560e01c80637398ca6c11610123578063c626c3c6116100ab578063e39c67441161006f578063e39c6744146107a3578063e3e324b0146107cc578063eb608022146107f5578063f2fde38b1461081e578063ff212c5c146108475761021f565b8063c626c3c6146106d4578063c90a7eab146106fd578063d223174114610726578063dbcdc2cc1461074f578063e30c3978146107785761021f565b80638da5cb5b116100f25780638da5cb5b14610605578063b317c35f14610630578063b4c9c40814610659578063bc26e7e514610682578063bf0f2fb2146106ab5761021f565b80637398ca6c1461055e57806379ba50971461059c57806379e3e4e4146105b35780638932cee0146105dc5761021f565b80633659cfe6116101a657806352d1902d1161017557806352d1902d146104a15780635fec6dd0146104cc5780636512447d146104f5578063686e682c1461051e578063715018a6146105475761021f565b80633659cfe61461040a5780633ed00469146104335780634bc93b641461045c5780634f1ef286146104855761021f565b80631f1f9fd5116101ed5780631f1f9fd51461033d57806323d68a6d146103665780632e168e0e1461038f57806335f63767146103b85780633631983f146103e15761021f565b806306e8fb9c146102975780630d8e6e2c146102c057806312b3fc19146102eb578063190d82e4146103145761021f565b5b34801561022b57600080fd5b50610295610237610884565b600301600060038081111561024f5761024e612afd565b5b600381111561026157610260612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b005b3480156102a357600080fd5b506102be60048036038101906102b99190612e6f565b6108e6565b005b3480156102cc57600080fd5b506102d56109e8565b6040516102e29190612fc7565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061303f565b6109f7565b005b34801561032057600080fd5b5061033b600480360381019061033691906130d4565b610a68565b005b34801561034957600080fd5b50610364600480360381019061035f9190613114565b610ad5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613141565b610b4a565b005b34801561039b57600080fd5b506103b660048036038101906103b19190613141565b610bb6565b005b3480156103c457600080fd5b506103df60048036038101906103da91906130d4565b610c22565b005b3480156103ed57600080fd5b5061040860048036038101906104039190613141565b610c8f565b005b34801561041657600080fd5b50610431600480360381019061042c91906131cc565b610d04565b005b34801561043f57600080fd5b5061045a600480360381019061045591906131f9565b610e8c565b005b34801561046857600080fd5b50610483600480360381019061047e9190613141565b610f3d565b005b61049f600480360381019061049a9190613301565b610fa9565b005b3480156104ad57600080fd5b506104b66110e5565b6040516104c39190613376565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613391565b61119e565b005b34801561050157600080fd5b5061051c60048036038101906105179190613141565b61120e565b005b34801561052a57600080fd5b5061054560048036038101906105409190613391565b611283565b005b34801561055357600080fd5b5061055c6112f3565b005b34801561056a57600080fd5b50610585600480360381019061058091906131cc565b611307565b604051610593929190613414565b60405180910390f35b3480156105a857600080fd5b506105b16113ab565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613141565b611438565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190613141565b6114ad565b005b34801561061157600080fd5b5061061a611519565b604051610627919061344c565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906130d4565b611543565b005b34801561066557600080fd5b50610680600480360381019061067b9190613114565b6115b0565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613467565b611625565b005b3480156106b757600080fd5b506106d260048036038101906106cd91906134f0565b611696565b005b3480156106e057600080fd5b506106fb60048036038101906106f6919061369a565b611706565b005b34801561070957600080fd5b50610724600480360381019061071f919061378e565b61198d565b005b34801561073257600080fd5b5061074d60048036038101906107489190613114565b6119fa565b005b34801561075b57600080fd5b50610776600480360381019061077191906131cc565b611a6f565b005b34801561078457600080fd5b5061078d611ac0565b60405161079a919061344c565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613141565b611aea565b005b3480156107d857600080fd5b506107f360048036038101906107ee91906137f3565b611b5f565b005b34801561080157600080fd5b5061081c60048036038101906108179190613141565b611b75565b005b34801561082a57600080fd5b50610845600480360381019061084091906131cc565b611bea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613833565b611c97565b60405161087b91906138a2565b60405180910390f35b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6108b791906138ec565b90508091505090565b3660008037600080366000845af43d6000803e80600081146108e1573d6000f35b3d6000fd5b6108ee611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16610975576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109df610980610884565b60030160006001600381111561099957610998612afd565b5b60038111156109ab576109aa612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050505050565b60606109f2611dd4565b905090565b610a61610a02610884565b600301600060016003811115610a1b57610a1a612afd565b5b6003811115610a2d57610a2c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b610ad1610a73610884565b6003016000806003811115610a8b57610a8a612afd565b5b6003811115610a9d57610a9c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610add611e11565b610b47610ae8610884565b600301600060026003811115610b0157610b00612afd565b5b6003811115610b1357610b12612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610bb3610b55610884565b6003016000806003811115610b6d57610b6c612afd565b5b6003811115610b7f57610b7e612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c1f610bc1610884565b6003016000806003811115610bd957610bd8612afd565b5b6003811115610beb57610bea612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c8b610c2d610884565b6003016000806003811115610c4557610c44612afd565b5b6003811115610c5757610c56612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610c97611e11565b610d01610ca2610884565b600301600060026003811115610cbb57610cba612afd565b5b6003811115610ccd57610ccc612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dd1611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90613a24565b60405180910390fd5b610e3081611ee6565b610e8981600067ffffffffffffffff811115610e4f57610e4e612bb6565b5b6040519080825280601f01601f191660200182016040528015610e815781602001600182028036833780820191505090505b506000611ef1565b50565b610e94611e11565b60405180604001604052808315158152602001821515815250610eb5611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050505050565b610fa6610f48610884565b6003016000806003811115610f6057610f5f612afd565b5b6003811115610f7257610f71612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611076611e8f565b73ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390613a24565b60405180910390fd5b6110d582611ee6565b6110e182826001611ef1565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613ab6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6112086111a9610884565b6003016000600160038111156111c2576111c1612afd565b5b60038111156111d4576111d3612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b611216611e11565b611280611221610884565b60030160006002600381111561123a57611239612afd565b5b600381111561124c5761124b612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6112ed61128e610884565b6003016000600160038111156112a7576112a6612afd565b5b60038111156112b9576112b8612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b6112fb611e11565b611305600061205f565b565b6000806000611314611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60006113b5612090565b90508073ffffffffffffffffffffffffffffffffffffffff166113d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613b48565b60405180910390fd5b6114358161205f565b50565b611440611e11565b6114aa61144b610884565b60030160006002600381111561146457611463612afd565b5b600381111561147657611475612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6115166114b8610884565b60030160008060038111156114d0576114cf612afd565b5b60038111156114e2576114e1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115ac61154e610884565b600301600080600381111561156657611565612afd565b5b600381111561157857611577612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b6115b8611e11565b6116226115c3610884565b6003016000600260038111156115dc576115db612afd565b5b60038111156115ee576115ed612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b61168f611630610884565b60030160006001600381111561164957611648612afd565b5b600381111561165b5761165a612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b6117006116a1610884565b6003016000600160038111156116ba576116b9612afd565b5b60038111156116cc576116cb612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b60008060019054906101000a900460ff161590508080156117375750600160008054906101000a900460ff1660ff16105b80611764575061174630612098565b1580156117635750600160008054906101000a900460ff1660ff16145b5b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613bda565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117e0576001600060016101000a81548160ff0219169083151502179055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff160361186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118ad611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613a24565b60405180910390fd5b61190b6120bb565b61191361210c565b6119268c8c8c8c8c8c8c8c8c8c8c61216d565b801561197f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119769190613c4c565b60405180910390a15b505050505050505050505050565b6119f6611998610884565b60030160008060038111156119b0576119af612afd565b5b60038111156119c2576119c1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b611a02611e11565b611a6c611a0d610884565b600301600060026003811115611a2657611a25612afd565b5b6003811115611a3857611a37612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b3373ffffffffffffffffffffffffffffffffffffffff167f259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec354882604051611ab5919061344c565b60405180910390a250565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611af2611e11565b611b5c611afd610884565b600301600060026003811115611b1657611b15612afd565b5b6003811115611b2857611b27612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611b67611e11565b611b71828261250a565b5050565b611b7d611e11565b611be7611b88610884565b600301600060026003811115611ba157611ba0612afd565b5b6003811115611bb357611bb2612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611bf2611e11565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611c52611519565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ca1611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611d28576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d91611d33610884565b6003016000806003811115611d4b57611d4a612afd565b5b6003811115611d5d57611d5c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b9392505050565b60008060017f196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb23960001c611dcb91906138ec565b90508091505090565b60606040518060400160405280600a81526020017f76312e302e302e72633300000000000000000000000000000000000000000000815250905090565b611e19612090565b73ffffffffffffffffffffffffffffffffffffffff16611e37611519565b73ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613cb3565b60405180910390fd5b565b6000611ebd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eee611e11565b50565b611f1d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612620565b60000160009054906101000a900460ff1615611f4157611f3c8361262a565b61205a565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa957506040513d601f19601f82011682018060405250810190611fa69190613cff565b60015b611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613d9e565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461204d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204490613e30565b60405180910390fd5b506120598383836126e3565b5b505050565b60c960006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561208d8161270f565b50565b600033905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190613ec2565b60405180910390fd5b565b600060019054906101000a900460ff1661215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ec2565b60405180910390fd5b61216b612166612090565b61205f565b565b600060019054906101000a900460ff166121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b390613ec2565b60405180910390fd5b60006121c6610884565b905060006121d26127d5565b90508c8260070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b82600301600080600381111561223157612230612afd565b5b600381111561224357612242612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a826003016000600160038111156122aa576122a9612afd565b5b60038111156122bc576122bb612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898260030160006002600381111561232357612322612afd565b5b600381111561233557612334612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508882600301600060038081111561239b5761239a612afd565b5b60038111156123ad576123ac612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061242d87612811565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508581600001600c6101000a81548163ffffffff021916908363ffffffff160217905550848160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050505050505050505050565b6125138161288b565b612549576040517f8f9195fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80612552610884565b600301600084600381111561256a57612569612afd565b5b600381111561257c5761257b612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038111156125db576125da612afd565b5b7ffdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d78260405161260a919061344c565b60405180910390a25050565b6000819050919050565b6000819050919050565b61263381612098565b612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613f54565b60405180910390fd5b8061269f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126ec836128dc565b6000825111806126f95750805b1561270a57612708838361292b565b505b505050565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61280891906138ec565b90508091505090565b6000629896806801000000000000000061282b9190613f74565b82111561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614002565b60405180910390fd5b6298968061287a83612958565b6128849190614051565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c957600090506128d7565b6000823b9050600081119150505b919050565b6128e58161262a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061295083836040518060600160405280602781526020016141ea602791396129b2565b905092915050565b600080629896808361296a9190614082565b146129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a1906140ff565b60405180910390fd5b819050919050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129dc9190614166565b600060405180830381855af49150503d8060008114612a17576040519150601f19603f3d011682016040523d82523d6000602084013e612a1c565b606091505b5091509150612a2d86838387612a38565b925050509392505050565b60608315612a9a576000835103612a9257612a5285612098565b612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906141c9565b60405180910390fd5b5b829050612aa5565b612aa48383612aad565b5b949350505050565b600082511115612ac05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af49190612fc7565b60405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b6557612b64612b40565b5b8235905067ffffffffffffffff811115612b8257612b81612b45565b5b602083019150836001820283011115612b9e57612b9d612b4a565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bee82612ba5565b810181811067ffffffffffffffff82111715612c0d57612c0c612bb6565b5b80604052505050565b6000612c20612b2c565b9050612c2c8282612be5565b919050565b600067ffffffffffffffff821115612c4c57612c4b612bb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612c7a81612c5d565b8114612c8557600080fd5b50565b600081359050612c9781612c71565b92915050565b6000612cb0612cab84612c31565b612c16565b90508083825260208201905060208402830185811115612cd357612cd2612b4a565b5b835b81811015612cfc5780612ce88882612c88565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612b40565b5b8135612d2b848260208601612c9d565b91505092915050565b6000819050919050565b612d4781612d34565b8114612d5257600080fd5b50565b600081359050612d6481612d3e565b92915050565b600080fd5b600063ffffffff82169050919050565b612d8881612d6f565b8114612d9357600080fd5b50565b600081359050612da581612d7f565b92915050565b60008115159050919050565b612dc081612dab565b8114612dcb57600080fd5b50565b600081359050612ddd81612db7565b92915050565b600060a08284031215612df957612df8612d6a565b5b612e0360a0612c16565b90506000612e1384828501612d96565b6000830152506020612e2784828501612c88565b6020830152506040612e3b84828501612c88565b6040830152506060612e4f84828501612dce565b6060830152506080612e6384828501612d55565b60808301525092915050565b6000806000806000806000610120888a031215612e8f57612e8e612b36565b5b600088013567ffffffffffffffff811115612ead57612eac612b3b565b5b612eb98a828b01612b4f565b9750975050602088013567ffffffffffffffff811115612edc57612edb612b3b565b5b612ee88a828b01612d06565b955050604088013567ffffffffffffffff811115612f0957612f08612b3b565b5b612f158a828b01612b4f565b94509450506060612f288a828b01612d55565b9250506080612f398a828b01612de3565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f82578082015181840152602081019050612f67565b60008484015250505050565b6000612f9982612f48565b612fa38185612f53565b9350612fb3818560208601612f64565b612fbc81612ba5565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b60008083601f840112612fff57612ffe612b40565b5b8235905067ffffffffffffffff81111561301c5761301b612b45565b5b60208301915083602082028301111561303857613037612b4a565b5b9250929050565b600080600080600060e0868803121561305b5761305a612b36565b5b600086013567ffffffffffffffff81111561307957613078612b3b565b5b61308588828901612b4f565b9550955050602086013567ffffffffffffffff8111156130a8576130a7612b3b565b5b6130b488828901612fe9565b935093505060406130c788828901612de3565b9150509295509295909350565b600080604083850312156130eb576130ea612b36565b5b60006130f985828601612c88565b925050602061310a85828601612d55565b9150509250929050565b60006020828403121561312a57613129612b36565b5b600061313884828501612d55565b91505092915050565b60006020828403121561315757613156612b36565b5b600061316584828501612c88565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131998261316e565b9050919050565b6131a98161318e565b81146131b457600080fd5b50565b6000813590506131c6816131a0565b92915050565b6000602082840312156131e2576131e1612b36565b5b60006131f0848285016131b7565b91505092915050565b60008060006060848603121561321257613211612b36565b5b6000613220868287016131b7565b935050602061323186828701612dce565b925050604061324286828701612dce565b9150509250925092565b600080fd5b600067ffffffffffffffff82111561326c5761326b612bb6565b5b61327582612ba5565b9050602081019050919050565b82818337600083830152505050565b60006132a461329f84613251565b612c16565b9050828152602081018484840111156132c0576132bf61324c565b5b6132cb848285613282565b509392505050565b600082601f8301126132e8576132e7612b40565b5b81356132f8848260208601613291565b91505092915050565b6000806040838503121561331857613317612b36565b5b6000613326858286016131b7565b925050602083013567ffffffffffffffff81111561334757613346612b3b565b5b613353858286016132d3565b9150509250929050565b6000819050919050565b6133708161335d565b82525050565b600060208201905061338b6000830184613367565b92915050565b60008060008060e085870312156133ab576133aa612b36565b5b600085013567ffffffffffffffff8111156133c9576133c8612b3b565b5b6133d587828801612fe9565b945094505060206133e887828801612d55565b92505060406133f987828801612de3565b91505092959194509250565b61340e81612dab565b82525050565b60006040820190506134296000830185613405565b6134366020830184613405565b9392505050565b6134468161318e565b82525050565b6000602082019050613461600083018461343d565b92915050565b6000806000806000610100868803121561348457613483612b36565b5b6000613492888289016131b7565b955050602086013567ffffffffffffffff8111156134b3576134b2612b3b565b5b6134bf88828901612fe9565b945094505060406134d288828901612d55565b92505060606134e388828901612de3565b9150509295509295909350565b60008060008060e0858703121561350a57613509612b36565b5b6000613518878288016131b7565b945050602085013567ffffffffffffffff81111561353957613538612b3b565b5b61354587828801612fe9565b9350935050604061355887828801612de3565b91505092959194509250565b600061356f8261318e565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b60006135ad8261318e565b9050919050565b6135bd816135a2565b81146135c857600080fd5b50565b6000813590506135da816135b4565b92915050565b60006135eb8261318e565b9050919050565b6135fb816135e0565b811461360657600080fd5b50565b600081359050613618816135f2565b92915050565b60006136298261318e565b9050919050565b6136398161361e565b811461364457600080fd5b50565b60008135905061365681613630565b92915050565b60006136678261318e565b9050919050565b6136778161365c565b811461368257600080fd5b50565b6000813590506136948161366e565b92915050565b60008060008060008060008060008060006101608c8e0312156136c0576136bf612b36565b5b60006136ce8e828f0161358d565b9b505060206136df8e828f016135cb565b9a505060406136f08e828f01613609565b99505060606137018e828f01613647565b98505060806137128e828f01613685565b97505060a06137238e828f01612c88565b96505060c06137348e828f01612d55565b95505060e06137458e828f01612d96565b9450506101006137578e828f01612c88565b9350506101206137698e828f01612c88565b92505061014061377b8e828f01612c88565b9150509295989b509295989b9093969950565b600080604083850312156137a5576137a4612b36565b5b60006137b385828601612c88565b92505060206137c4858286016131b7565b9150509250929050565b600481106137db57600080fd5b50565b6000813590506137ed816137ce565b92915050565b6000806040838503121561380a57613809612b36565b5b6000613818858286016137de565b9250506020613829858286016131b7565b9150509250929050565b60008060006040848603121561384c5761384b612b36565b5b600084013567ffffffffffffffff81111561386a57613869612b3b565b5b61387686828701612b4f565b9350935050602061388986828701612d55565b9150509250925092565b61389c81612c5d565b82525050565b60006020820190506138b76000830184613893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138f782612d34565b915061390283612d34565b925082820390508181111561391a576139196138bd565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061397c602c83612f53565b915061398782613920565b604082019050919050565b600060208201905081810360008301526139ab8161396f565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000613a0e602c83612f53565b9150613a19826139b2565b604082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000613aa0603883612f53565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613b32602983612f53565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613bc4602e83612f53565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613c36613c31613c2c84613bfa565b613c11565b613c04565b9050919050565b613c4681613c1b565b82525050565b6000602082019050613c616000830184613c3d565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c9d602083612f53565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b613cdc8161335d565b8114613ce757600080fd5b50565b600081519050613cf981613cd3565b92915050565b600060208284031215613d1557613d14612b36565b5b6000613d2384828501613cea565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000613d88602e83612f53565b9150613d9382613d2c565b604082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000613e1a602983612f53565b9150613e2582613dbe565b604082019050919050565b60006020820190508181036000830152613e4981613e0d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613eac602b83612f53565b9150613eb782613e50565b604082019050919050565b60006020820190508181036000830152613edb81613e9f565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000613f3e602d83612f53565b9150613f4982613ee2565b604082019050919050565b60006020820190508181036000830152613f6d81613f31565b9050919050565b6000613f7f82612d34565b9150613f8a83612d34565b9250828202613f9881612d34565b91508282048414831517613faf57613fae6138bd565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613fec601283612f53565b9150613ff782613fb6565b602082019050919050565b6000602082019050818103600083015261401b81613fdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061405c82612d34565b915061406783612d34565b92508261407757614076614022565b5b828204905092915050565b600061408d82612d34565b915061409883612d34565b9250826140a8576140a7614022565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006140e9601683612f53565b91506140f4826140b3565b602082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b600081519050919050565b600081905092915050565b60006141408261411f565b61414a818561412a565b935061415a818560208601612f64565b80840191505092915050565b60006141728284614135565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141b3601d83612f53565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7e14f45da3802ec1a83d88da4602032051b9292ec9784a5e68b358b4e3754a564736f6c63430008120033", "bin-runtime": "60806040526004361061021e5760003560e01c80637398ca6c11610123578063c626c3c6116100ab578063e39c67441161006f578063e39c6744146107a3578063e3e324b0146107cc578063eb608022146107f5578063f2fde38b1461081e578063ff212c5c146108475761021f565b8063c626c3c6146106d4578063c90a7eab146106fd578063d223174114610726578063dbcdc2cc1461074f578063e30c3978146107785761021f565b80638da5cb5b116100f25780638da5cb5b14610605578063b317c35f14610630578063b4c9c40814610659578063bc26e7e514610682578063bf0f2fb2146106ab5761021f565b80637398ca6c1461055e57806379ba50971461059c57806379e3e4e4146105b35780638932cee0146105dc5761021f565b80633659cfe6116101a657806352d1902d1161017557806352d1902d146104a15780635fec6dd0146104cc5780636512447d146104f5578063686e682c1461051e578063715018a6146105475761021f565b80633659cfe61461040a5780633ed00469146104335780634bc93b641461045c5780634f1ef286146104855761021f565b80631f1f9fd5116101ed5780631f1f9fd51461033d57806323d68a6d146103665780632e168e0e1461038f57806335f63767146103b85780633631983f146103e15761021f565b806306e8fb9c146102975780630d8e6e2c146102c057806312b3fc19146102eb578063190d82e4146103145761021f565b5b34801561022b57600080fd5b50610295610237610884565b600301600060038081111561024f5761024e612afd565b5b600381111561026157610260612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b005b3480156102a357600080fd5b506102be60048036038101906102b99190612e6f565b6108e6565b005b3480156102cc57600080fd5b506102d56109e8565b6040516102e29190612fc7565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061303f565b6109f7565b005b34801561032057600080fd5b5061033b600480360381019061033691906130d4565b610a68565b005b34801561034957600080fd5b50610364600480360381019061035f9190613114565b610ad5565b005b34801561037257600080fd5b5061038d60048036038101906103889190613141565b610b4a565b005b34801561039b57600080fd5b506103b660048036038101906103b19190613141565b610bb6565b005b3480156103c457600080fd5b506103df60048036038101906103da91906130d4565b610c22565b005b3480156103ed57600080fd5b5061040860048036038101906104039190613141565b610c8f565b005b34801561041657600080fd5b50610431600480360381019061042c91906131cc565b610d04565b005b34801561043f57600080fd5b5061045a600480360381019061045591906131f9565b610e8c565b005b34801561046857600080fd5b50610483600480360381019061047e9190613141565b610f3d565b005b61049f600480360381019061049a9190613301565b610fa9565b005b3480156104ad57600080fd5b506104b66110e5565b6040516104c39190613376565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190613391565b61119e565b005b34801561050157600080fd5b5061051c60048036038101906105179190613141565b61120e565b005b34801561052a57600080fd5b5061054560048036038101906105409190613391565b611283565b005b34801561055357600080fd5b5061055c6112f3565b005b34801561056a57600080fd5b50610585600480360381019061058091906131cc565b611307565b604051610593929190613414565b60405180910390f35b3480156105a857600080fd5b506105b16113ab565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613141565b611438565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190613141565b6114ad565b005b34801561061157600080fd5b5061061a611519565b604051610627919061344c565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906130d4565b611543565b005b34801561066557600080fd5b50610680600480360381019061067b9190613114565b6115b0565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613467565b611625565b005b3480156106b757600080fd5b506106d260048036038101906106cd91906134f0565b611696565b005b3480156106e057600080fd5b506106fb60048036038101906106f6919061369a565b611706565b005b34801561070957600080fd5b50610724600480360381019061071f919061378e565b61198d565b005b34801561073257600080fd5b5061074d60048036038101906107489190613114565b6119fa565b005b34801561075b57600080fd5b50610776600480360381019061077191906131cc565b611a6f565b005b34801561078457600080fd5b5061078d611ac0565b60405161079a919061344c565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190613141565b611aea565b005b3480156107d857600080fd5b506107f360048036038101906107ee91906137f3565b611b5f565b005b34801561080157600080fd5b5061081c60048036038101906108179190613141565b611b75565b005b34801561082a57600080fd5b50610845600480360381019061084091906131cc565b611bea565b005b34801561085357600080fd5b5061086e60048036038101906108699190613833565b611c97565b60405161087b91906138a2565b60405180910390f35b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6108b791906138ec565b90508091505090565b3660008037600080366000845af43d6000803e80600081146108e1573d6000f35b3d6000fd5b6108ee611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16610975576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109df610980610884565b60030160006001600381111561099957610998612afd565b5b60038111156109ab576109aa612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050505050565b60606109f2611dd4565b905090565b610a61610a02610884565b600301600060016003811115610a1b57610a1a612afd565b5b6003811115610a2d57610a2c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b610ad1610a73610884565b6003016000806003811115610a8b57610a8a612afd565b5b6003811115610a9d57610a9c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610add611e11565b610b47610ae8610884565b600301600060026003811115610b0157610b00612afd565b5b6003811115610b1357610b12612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610bb3610b55610884565b6003016000806003811115610b6d57610b6c612afd565b5b6003811115610b7f57610b7e612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c1f610bc1610884565b6003016000806003811115610bd957610bd8612afd565b5b6003811115610beb57610bea612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b610c8b610c2d610884565b6003016000806003811115610c4557610c44612afd565b5b6003811115610c5757610c56612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b610c97611e11565b610d01610ca2610884565b600301600060026003811115610cbb57610cba612afd565b5b6003811115610ccd57610ccc612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dd1611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90613a24565b60405180910390fd5b610e3081611ee6565b610e8981600067ffffffffffffffff811115610e4f57610e4e612bb6565b5b6040519080825280601f01601f191660200182016040528015610e815781602001600182028036833780820191505090505b506000611ef1565b50565b610e94611e11565b60405180604001604052808315158152602001821515815250610eb5611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050505050565b610fa6610f48610884565b6003016000806003811115610f6057610f5f612afd565b5b6003811115610f7257610f71612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611076611e8f565b73ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390613a24565b60405180910390fd5b6110d582611ee6565b6110e182826001611ef1565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613ab6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6112086111a9610884565b6003016000600160038111156111c2576111c1612afd565b5b60038111156111d4576111d3612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b611216611e11565b611280611221610884565b60030160006002600381111561123a57611239612afd565b5b600381111561124c5761124b612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6112ed61128e610884565b6003016000600160038111156112a7576112a6612afd565b5b60038111156112b9576112b8612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b6112fb611e11565b611305600061205f565b565b6000806000611314611d98565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60006113b5612090565b90508073ffffffffffffffffffffffffffffffffffffffff166113d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613b48565b60405180910390fd5b6114358161205f565b50565b611440611e11565b6114aa61144b610884565b60030160006002600381111561146457611463612afd565b5b600381111561147657611475612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6115166114b8610884565b60030160008060038111156114d0576114cf612afd565b5b60038111156114e2576114e1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115ac61154e610884565b600301600080600381111561156657611565612afd565b5b600381111561157857611577612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b6115b8611e11565b6116226115c3610884565b6003016000600260038111156115dc576115db612afd565b5b60038111156115ee576115ed612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b61168f611630610884565b60030160006001600381111561164957611648612afd565b5b600381111561165b5761165a612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050505050565b6117006116a1610884565b6003016000600160038111156116ba576116b9612afd565b5b60038111156116cc576116cb612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50505050565b60008060019054906101000a900460ff161590508080156117375750600160008054906101000a900460ff1660ff16105b80611764575061174630612098565b1580156117635750600160008054906101000a900460ff1660ff16145b5b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613bda565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117e0576001600060016101000a81548160ff0219169083151502179055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff160361186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613992565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118ad611e8f565b73ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613a24565b60405180910390fd5b61190b6120bb565b61191361210c565b6119268c8c8c8c8c8c8c8c8c8c8c61216d565b801561197f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119769190613c4c565b60405180910390a15b505050505050505050505050565b6119f6611998610884565b60030160008060038111156119b0576119af612afd565b5b60038111156119c2576119c1612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b5050565b611a02611e11565b611a6c611a0d610884565b600301600060026003811115611a2657611a25612afd565b5b6003811115611a3857611a37612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b3373ffffffffffffffffffffffffffffffffffffffff167f259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec354882604051611ab5919061344c565b60405180910390a250565b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611af2611e11565b611b5c611afd610884565b600301600060026003811115611b1657611b15612afd565b5b6003811115611b2857611b27612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611b67611e11565b611b71828261250a565b5050565b611b7d611e11565b611be7611b88610884565b600301600060026003811115611ba157611ba0612afd565b5b6003811115611bb357611bb2612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b50565b611bf2611e11565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611c52611519565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ca1611d98565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611d28576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d91611d33610884565b6003016000806003811115611d4b57611d4a612afd565b5b6003811115611d5d57611d5c612afd565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108c0565b9392505050565b60008060017f196806efe090e1bda0d29c02ba14a5bb8bb3b27efb6435fb21c1deec930cb23960001c611dcb91906138ec565b90508091505090565b60606040518060400160405280600a81526020017f76312e302e302e72633300000000000000000000000000000000000000000000815250905090565b611e19612090565b73ffffffffffffffffffffffffffffffffffffffff16611e37611519565b73ffffffffffffffffffffffffffffffffffffffff1614611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613cb3565b60405180910390fd5b565b6000611ebd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eee611e11565b50565b611f1d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612620565b60000160009054906101000a900460ff1615611f4157611f3c8361262a565b61205a565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa957506040513d601f19601f82011682018060405250810190611fa69190613cff565b60015b611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613d9e565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461204d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204490613e30565b60405180910390fd5b506120598383836126e3565b5b505050565b60c960006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561208d8161270f565b50565b600033905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190613ec2565b60405180910390fd5b565b600060019054906101000a900460ff1661215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613ec2565b60405180910390fd5b61216b612166612090565b61205f565b565b600060019054906101000a900460ff166121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b390613ec2565b60405180910390fd5b60006121c6610884565b905060006121d26127d5565b90508c8260070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b82600301600080600381111561223157612230612afd565b5b600381111561224357612242612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a826003016000600160038111156122aa576122a9612afd565b5b60038111156122bc576122bb612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898260030160006002600381111561232357612322612afd565b5b600381111561233557612334612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508882600301600060038081111561239b5761239a612afd565b5b60038111156123ad576123ac612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061242d87612811565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508581600001600c6101000a81548163ffffffff021916908363ffffffff160217905550848160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050505050505050505050565b6125138161288b565b612549576040517f8f9195fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80612552610884565b600301600084600381111561256a57612569612afd565b5b600381111561257c5761257b612afd565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038111156125db576125da612afd565b5b7ffdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d78260405161260a919061344c565b60405180910390a25050565b6000819050919050565b6000819050919050565b61263381612098565b612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613f54565b60405180910390fd5b8061269f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612616565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126ec836128dc565b6000825111806126f95750805b1561270a57612708838361292b565b505b505050565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61280891906138ec565b90508091505090565b6000629896806801000000000000000061282b9190613f74565b82111561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614002565b60405180910390fd5b6298968061287a83612958565b6128849190614051565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c957600090506128d7565b6000823b9050600081119150505b919050565b6128e58161262a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061295083836040518060600160405280602781526020016141ea602791396129b2565b905092915050565b600080629896808361296a9190614082565b146129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a1906140ff565b60405180910390fd5b819050919050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129dc9190614166565b600060405180830381855af49150503d8060008114612a17576040519150601f19603f3d011682016040523d82523d6000602084013e612a1c565b606091505b5091509150612a2d86838387612a38565b925050509392505050565b60608315612a9a576000835103612a9257612a5285612098565b612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906141c9565b60405180910390fd5b5b829050612aa5565b612aa48383612aad565b5b949350505050565b600082511115612ac05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af49190612fc7565b60405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612b6557612b64612b40565b5b8235905067ffffffffffffffff811115612b8257612b81612b45565b5b602083019150836001820283011115612b9e57612b9d612b4a565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bee82612ba5565b810181811067ffffffffffffffff82111715612c0d57612c0c612bb6565b5b80604052505050565b6000612c20612b2c565b9050612c2c8282612be5565b919050565b600067ffffffffffffffff821115612c4c57612c4b612bb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612c7a81612c5d565b8114612c8557600080fd5b50565b600081359050612c9781612c71565b92915050565b6000612cb0612cab84612c31565b612c16565b90508083825260208201905060208402830185811115612cd357612cd2612b4a565b5b835b81811015612cfc5780612ce88882612c88565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612b40565b5b8135612d2b848260208601612c9d565b91505092915050565b6000819050919050565b612d4781612d34565b8114612d5257600080fd5b50565b600081359050612d6481612d3e565b92915050565b600080fd5b600063ffffffff82169050919050565b612d8881612d6f565b8114612d9357600080fd5b50565b600081359050612da581612d7f565b92915050565b60008115159050919050565b612dc081612dab565b8114612dcb57600080fd5b50565b600081359050612ddd81612db7565b92915050565b600060a08284031215612df957612df8612d6a565b5b612e0360a0612c16565b90506000612e1384828501612d96565b6000830152506020612e2784828501612c88565b6020830152506040612e3b84828501612c88565b6040830152506060612e4f84828501612dce565b6060830152506080612e6384828501612d55565b60808301525092915050565b6000806000806000806000610120888a031215612e8f57612e8e612b36565b5b600088013567ffffffffffffffff811115612ead57612eac612b3b565b5b612eb98a828b01612b4f565b9750975050602088013567ffffffffffffffff811115612edc57612edb612b3b565b5b612ee88a828b01612d06565b955050604088013567ffffffffffffffff811115612f0957612f08612b3b565b5b612f158a828b01612b4f565b94509450506060612f288a828b01612d55565b9250506080612f398a828b01612de3565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f82578082015181840152602081019050612f67565b60008484015250505050565b6000612f9982612f48565b612fa38185612f53565b9350612fb3818560208601612f64565b612fbc81612ba5565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b60008083601f840112612fff57612ffe612b40565b5b8235905067ffffffffffffffff81111561301c5761301b612b45565b5b60208301915083602082028301111561303857613037612b4a565b5b9250929050565b600080600080600060e0868803121561305b5761305a612b36565b5b600086013567ffffffffffffffff81111561307957613078612b3b565b5b61308588828901612b4f565b9550955050602086013567ffffffffffffffff8111156130a8576130a7612b3b565b5b6130b488828901612fe9565b935093505060406130c788828901612de3565b9150509295509295909350565b600080604083850312156130eb576130ea612b36565b5b60006130f985828601612c88565b925050602061310a85828601612d55565b9150509250929050565b60006020828403121561312a57613129612b36565b5b600061313884828501612d55565b91505092915050565b60006020828403121561315757613156612b36565b5b600061316584828501612c88565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131998261316e565b9050919050565b6131a98161318e565b81146131b457600080fd5b50565b6000813590506131c6816131a0565b92915050565b6000602082840312156131e2576131e1612b36565b5b60006131f0848285016131b7565b91505092915050565b60008060006060848603121561321257613211612b36565b5b6000613220868287016131b7565b935050602061323186828701612dce565b925050604061324286828701612dce565b9150509250925092565b600080fd5b600067ffffffffffffffff82111561326c5761326b612bb6565b5b61327582612ba5565b9050602081019050919050565b82818337600083830152505050565b60006132a461329f84613251565b612c16565b9050828152602081018484840111156132c0576132bf61324c565b5b6132cb848285613282565b509392505050565b600082601f8301126132e8576132e7612b40565b5b81356132f8848260208601613291565b91505092915050565b6000806040838503121561331857613317612b36565b5b6000613326858286016131b7565b925050602083013567ffffffffffffffff81111561334757613346612b3b565b5b613353858286016132d3565b9150509250929050565b6000819050919050565b6133708161335d565b82525050565b600060208201905061338b6000830184613367565b92915050565b60008060008060e085870312156133ab576133aa612b36565b5b600085013567ffffffffffffffff8111156133c9576133c8612b3b565b5b6133d587828801612fe9565b945094505060206133e887828801612d55565b92505060406133f987828801612de3565b91505092959194509250565b61340e81612dab565b82525050565b60006040820190506134296000830185613405565b6134366020830184613405565b9392505050565b6134468161318e565b82525050565b6000602082019050613461600083018461343d565b92915050565b6000806000806000610100868803121561348457613483612b36565b5b6000613492888289016131b7565b955050602086013567ffffffffffffffff8111156134b3576134b2612b3b565b5b6134bf88828901612fe9565b945094505060406134d288828901612d55565b92505060606134e388828901612de3565b9150509295509295909350565b60008060008060e0858703121561350a57613509612b36565b5b6000613518878288016131b7565b945050602085013567ffffffffffffffff81111561353957613538612b3b565b5b61354587828801612fe9565b9350935050604061355887828801612de3565b91505092959194509250565b600061356f8261318e565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b60006135ad8261318e565b9050919050565b6135bd816135a2565b81146135c857600080fd5b50565b6000813590506135da816135b4565b92915050565b60006135eb8261318e565b9050919050565b6135fb816135e0565b811461360657600080fd5b50565b600081359050613618816135f2565b92915050565b60006136298261318e565b9050919050565b6136398161361e565b811461364457600080fd5b50565b60008135905061365681613630565b92915050565b60006136678261318e565b9050919050565b6136778161365c565b811461368257600080fd5b50565b6000813590506136948161366e565b92915050565b60008060008060008060008060008060006101608c8e0312156136c0576136bf612b36565b5b60006136ce8e828f0161358d565b9b505060206136df8e828f016135cb565b9a505060406136f08e828f01613609565b99505060606137018e828f01613647565b98505060806137128e828f01613685565b97505060a06137238e828f01612c88565b96505060c06137348e828f01612d55565b95505060e06137458e828f01612d96565b9450506101006137578e828f01612c88565b9350506101206137698e828f01612c88565b92505061014061377b8e828f01612c88565b9150509295989b509295989b9093969950565b600080604083850312156137a5576137a4612b36565b5b60006137b385828601612c88565b92505060206137c4858286016131b7565b9150509250929050565b600481106137db57600080fd5b50565b6000813590506137ed816137ce565b92915050565b6000806040838503121561380a57613809612b36565b5b6000613818858286016137de565b9250506020613829858286016131b7565b9150509250929050565b60008060006040848603121561384c5761384b612b36565b5b600084013567ffffffffffffffff81111561386a57613869612b3b565b5b61387686828701612b4f565b9350935050602061388986828701612d55565b9150509250925092565b61389c81612c5d565b82525050565b60006020820190506138b76000830184613893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138f782612d34565b915061390283612d34565b925082820390508181111561391a576139196138bd565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061397c602c83612f53565b915061398782613920565b604082019050919050565b600060208201905081810360008301526139ab8161396f565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000613a0e602c83612f53565b9150613a19826139b2565b604082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000613aa0603883612f53565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613b32602983612f53565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613bc4602e83612f53565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613c36613c31613c2c84613bfa565b613c11565b613c04565b9050919050565b613c4681613c1b565b82525050565b6000602082019050613c616000830184613c3d565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c9d602083612f53565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b613cdc8161335d565b8114613ce757600080fd5b50565b600081519050613cf981613cd3565b92915050565b600060208284031215613d1557613d14612b36565b5b6000613d2384828501613cea565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000613d88602e83612f53565b9150613d9382613d2c565b604082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000613e1a602983612f53565b9150613e2582613dbe565b604082019050919050565b60006020820190508181036000830152613e4981613e0d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613eac602b83612f53565b9150613eb782613e50565b604082019050919050565b60006020820190508181036000830152613edb81613e9f565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000613f3e602d83612f53565b9150613f4982613ee2565b604082019050919050565b60006020820190508181036000830152613f6d81613f31565b9050919050565b6000613f7f82612d34565b9150613f8a83612d34565b9250828202613f9881612d34565b91508282048414831517613faf57613fae6138bd565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613fec601283612f53565b9150613ff782613fb6565b602082019050919050565b6000602082019050818103600083015261401b81613fdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061405c82612d34565b915061406783612d34565b92508261407757614076614022565b5b828204905092915050565b600061408d82612d34565b915061409883612d34565b9250826140a8576140a7614022565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006140e9601683612f53565b91506140f4826140b3565b602082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b600081519050919050565b600081905092915050565b60006141408261411f565b61414a818561412a565b935061415a818560208601612f64565b80840191505092915050565b60006141728284614135565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141b3601d83612f53565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7e14f45da3802ec1a83d88da4602032051b9292ec9784a5e68b358b4e3754a564736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"acceptOwnership()": {"author": null, "details": "The new owner accepts the ownership transfer.", "params": {}, "return": null}, "cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "constructor": {"author": null, "details": null, "params": {}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "pendingOwner()": {"author": null, "details": "Returns the address of the pending owner.", "params": {}, "return": null}, "proxiableUUID()": {"author": null, "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.", "params": {}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.", "params": {}, "return": null}, "updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "upgradeTo(address)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "upgradeToAndCall(address,bytes)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/SSVProxy.sol:SSVProxy": {"srcmap": "", "srcmap-runtime": "", "abi": "[]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol:ISSVClusters": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Deposits tokens into a cluster"}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Liquidates a cluster"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Withdraws tokens from a cluster"}}, "notice": null}, "devdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster where the deposit will be made", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster to be liquidated", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster where the withdrawal will be made", "operatorIds": "Array of IDs of operators managing the cluster", "tokenAmount": "Amount of SSV tokens to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetwork.sol:ISSVNetwork": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getRegisterAuth\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"contractISSVOperators\",\"name\":\"ssvOperators_\",\"type\":\"address\"},{\"internalType\":\"contractISSVClusters\",\"name\":\"ssvClusters_\",\"type\":\"address\"},{\"internalType\":\"contractISSVDAO\",\"name\":\"ssvDAO_\",\"type\":\"address\"},{\"internalType\":\"contractISSVViews\",\"name\":\"ssvViews_\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minimumBlocksBeforeLiquidation_\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"minimumLiquidationCollateral_\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorsPerOperatorLimit_\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease_\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipientAddress\",\"type\":\"address\"}],\"name\":\"setFeeRecipientAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authOperators\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"authValidators\",\"type\":\"bool\"}],\"name\":\"setRegisterAuth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"updateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVViews.sol:ISSVViews": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"getBurnRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"burnRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationThresholdPeriod\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumOperatorFee\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorMaxFee\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLiquidationCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkEarnings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"networkEarnings\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"networkFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPrivate\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorDeclaredFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isFeeDeclared\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"approvalEndTime\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorEarnings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"earnings\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorFeeIncreaseLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorMaxFeeIncrease\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorFeePeriods\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"declareOperatorFeePeriod\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeOperatorFeePeriod\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"}],\"name\":\"getValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorsPerOperatorLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"validators\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"isLiquidatable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isLiquidatable\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"isLiquidated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isLiquidated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"getBalance(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Gets the balance of the cluster"}, "getBurnRate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Gets the burn rate of the cluster"}, "getLiquidationThresholdPeriod()": {"notice": "Gets the liquidation threshold period"}, "getMaximumOperatorFee()": {"notice": "Gets the operator maximum fee for operators that use SSV token"}, "getMinimumLiquidationCollateral()": {"notice": "Gets the minimum liquidation collateral"}, "getNetworkEarnings()": {"notice": "Gets the network earnings"}, "getNetworkFee()": {"notice": "Gets the network fee"}, "getOperatorById(uint64)": {"notice": "Gets operator details by ID"}, "getOperatorDeclaredFee(uint64)": {"notice": "Gets the declared operator fee"}, "getOperatorEarnings(uint64)": {"notice": "Gets operator earnings"}, "getOperatorFee(uint64)": {"notice": "Gets the operator fee"}, "getOperatorFeeIncreaseLimit()": {"notice": "Gets the operator fee increase limit"}, "getOperatorFeePeriods()": {"notice": "Gets the periods of operator fee declaration and execution"}, "getValidator(address,bytes)": {"notice": "Gets the validator status"}, "getValidatorsPerOperatorLimit()": {"notice": "Gets the maximum limit of validators per operator"}, "getVersion()": {"notice": "Gets the version of the contract"}, "isLiquidatable(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Checks if the cluster can be liquidated"}, "isLiquidated(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Checks if the cluster is liquidated"}}, "notice": null}, "devdoc": {"methods": {"getBalance(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "getBurnRate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "getLiquidationThresholdPeriod()": {"author": null, "details": null, "params": {}, "return": null}, "getMaximumOperatorFee()": {"author": null, "details": null, "params": {}, "return": null}, "getMinimumLiquidationCollateral()": {"author": null, "details": null, "params": {}, "return": null}, "getNetworkEarnings()": {"author": null, "details": null, "params": {}, "return": null}, "getNetworkFee()": {"author": null, "details": null, "params": {}, "return": null}, "getOperatorById(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorDeclaredFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "getOperatorFeeIncreaseLimit()": {"author": null, "details": null, "params": {}, "return": null}, "getOperatorFeePeriods()": {"author": null, "details": null, "params": {}, "return": null}, "getValidator(address,bytes)": {"author": null, "details": null, "params": {"owner": "The address of the validator's owner", "publicKey": "The public key of the validator"}, "return": null}, "getValidatorsPerOperatorLimit()": {"author": null, "details": null, "params": {}, "return": null}, "getVersion()": {"author": null, "details": null, "params": {}, "return": null}, "isLiquidatable(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}, "isLiquidated(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"operatorIds": "The IDs of the operators in the cluster", "owner": "The owner address of the cluster"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:8:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/RegisterAuth.sol:RegisterAuth": {"srcmap": "151:397:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "151:397:9:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220163b68b6a0567de8ca032e27a22fa4d199f8607f093f4b9ca024624199fe055364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220163b68b6a0567de8ca032e27a22fa4d199f8607f093f4b9ca024624199fe055364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"acceptOwnership()": {"author": null, "details": "The new owner accepts the ownership transfer.", "params": {}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "pendingOwner()": {"author": null, "details": "Returns the address of the pending owner.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.", "params": {}, "return": null}}, "author": null, "details": "Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.", "params": {}, "return": null}}, "author": null, "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol:IERC1967Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol:IERC1822ProxiableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"proxiableUUID()": {"author": null, "details": "Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.", "params": {}, "return": null}}, "author": null, "details": "ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol:IBeaconUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"implementation()": {"author": null, "details": "Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.", "params": {}, "return": null}}, "author": null, "details": "This is the interface that {BeaconProxy} expects of its beacon.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"proxiableUUID()": {"author": null, "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.", "params": {}, "return": null}, "upgradeTo(address)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}, "upgradeToAndCall(address,bytes)": {"author": null, "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.", "params": {}, "return": null}}, "author": null, "details": "An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol:AddressUpgradeable": {"srcmap": "194:9180:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:9180:21:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8b42a4b730f7b2a15c55cc3059d1d7f53e8ac61e22ee0d652e9e91ea1e4a20464736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8b42a4b730f7b2a15c55cc3059d1d7f53e8ac61e22ee0d652e9e91ea1e4a20464736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Collection of functions related to the address type", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol:StorageSlotUpgradeable": {"srcmap": "1420:2696:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1420:2696:23:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220219441bb7066bf6c39aa136f012fac0c6b19285a7b858b3264a07c6ad2ead00364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220219441bb7066bf6c39aa136f012fac0c6b19285a7b858b3264a07c6ad2ead00364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:25:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [367], "ISSVNetworkCore": [849]}, "id": 368, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 277, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 278, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 368, "sourceUnit": 850, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 279, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 849, "src": "124:15:0"}, "id": 280, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 367, "linearizedBaseContracts": [367, 849], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 281, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 286, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 283, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 285, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 367, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 287, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 292, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 289, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 292, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 288, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 291, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 367, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 293, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 298, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 296, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 295, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 298, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 294, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 297, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 367, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 299, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 304, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 302, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 301, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 304, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 300, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 303, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 367, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 305, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 310, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 308, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 307, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 310, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 306, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 309, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 367, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 311, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 316, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 313, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 316, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 312, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 315, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 367, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 317, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 322, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 320, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 319, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 322, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 318, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 321, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 367, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 323, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 328, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 326, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 325, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 328, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 324, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 327, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 367, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 332, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 330, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 336, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 334, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 336, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 333, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 340, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 338, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 337, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 344, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 342, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 344, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 341, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 348, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 347, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 346, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 348, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 345, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 349, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 355, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 356, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 362, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 358, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 359, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 366, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 365, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 364, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 363, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 368, "src": "103:2329:0", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [849]}, "id": 850, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 735, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 849, "linearizedBaseContracts": [849], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 745, "members": [{"constant": false, "id": 738, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 737, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 741, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 740, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 744, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 743, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 849, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 762, "members": [{"constant": false, "id": 748, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 751, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 750, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 754, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 753, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 757, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 756, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 761, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$745_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 760, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 759, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 745, "src": "1129:8:1"}, "referencedDeclaration": 745, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$745_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 849, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 772, "members": [{"constant": false, "id": 765, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 764, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 768, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 767, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 771, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 770, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 849, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 788, "members": [{"constant": false, "id": 775, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 774, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 778, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 781, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 784, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 783, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 787, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 786, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 849, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 790, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 789, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 792, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 794, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 796, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 798, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 800, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 802, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 801, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 804, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 803, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 806, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 805, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 808, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 807, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 810, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 812, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 814, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 816, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 818, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 820, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 822, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 824, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 826, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 828, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 830, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 832, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 834, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 836, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 838, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 840, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 842, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 844, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 846, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 848, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 850, "src": "70:3477:1", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "IERC20": [1072], "ISSVNetworkCore": [849], "SSVModules": [859], "SSVStorage": [929], "StorageData": [906]}, "id": 499, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 369, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 370, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 499, "sourceUnit": 930, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 498, "linearizedBaseContracts": [498], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 377, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 377, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, "typeName": {"id": 372, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 371, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "141:10:2"}, "referencedDeclaration": 859, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 377, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 384, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 381, "id": 383, "nodeType": "Return", "src": "269:19:2"}]}, "id": 385, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 378, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 381, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 380, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 385, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 379, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 498, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 408, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 397, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 387, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 398, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 392, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 901, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1039, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 407, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 406, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 401, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 832, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 405, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 409, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 387, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 409, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 386, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 389, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 409, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 388, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 391, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 498, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 435, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 419, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 423, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$498", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$498", "typeString": "library CoreLib"}], "id": 422, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 425, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 414, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 901, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1071, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 434, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 433, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 428, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 832, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 432, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 436, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 411, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 436, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 413, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 498, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 462, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 444, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 439, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 445, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 453, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 452, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 443, "id": 451, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [455], "declarations": [{"constant": false, "id": 455, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 462, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 454, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 456, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 439, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 455, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 457, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 458, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 455, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 443, "id": 461, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 437, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 463, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 440, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 439, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 463, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 438, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 443, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 442, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 463, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 441, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 498, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 496, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 472, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 471, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 463, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 480, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 475, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 844, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 479, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 481, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 880, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 487, "indexExpression": {"id": 486, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 488, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 490, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 492, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, {"id": 493, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 491, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$859_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 495, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 497, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 466, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 497, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, "typeName": {"id": 465, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 464, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "1826:10:2"}, "referencedDeclaration": 859, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 468, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 497, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 470, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 498, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 499, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [671], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVStorageProtocol": [994], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 667, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 500, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 501, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 850, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 502, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 734, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 503, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 995, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 666, "linearizedBaseContracts": [666], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 506, "libraryName": {"id": 504, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 733, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 505, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 529, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 514, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 515, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 518, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 520, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 934, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 517, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 516, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 523, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 524, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 513, "id": 528, "nodeType": "Return", "src": "443:96:3"}]}, "id": 530, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 510, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 509, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 530, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 508, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 507, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "374:15:3"}, "referencedDeclaration": 971, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 512, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 530, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 511, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 666, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 568, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 539, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 538, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 541, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 542, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 544, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 546, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 545, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 549, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 550, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 934, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 555, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 553, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 559, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 560, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 563, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 567, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 569, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 533, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 569, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 532, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 531, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "578:15:3"}, "referencedDeclaration": 971, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 535, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 569, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 534, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 537, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 666, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 593, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 575, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 579, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 578, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 583, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 940, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 588, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 587, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 586, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 592, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 594, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 572, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 594, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 571, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 570, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "956:15:3"}, "referencedDeclaration": 971, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 574, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 666, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 621, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 602, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 606, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 609, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 610, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 940, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 612, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 613, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 614, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 616, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 601, "id": 620, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 622, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 597, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 622, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 596, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 595, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1141:15:3"}, "referencedDeclaration": 971, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 601, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 600, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 622, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 599, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 666, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 664, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 633, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 632, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 635, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 636, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 645, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 647, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 649, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 652, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 651, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 650, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 653, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 662, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 661, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 656, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 846, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 660, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 663, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 644, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 640, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 641, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 665, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 630, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 625, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 624, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 623, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1351:15:3"}, "referencedDeclaration": 971, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 627, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 626, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 629, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 628, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 631, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 666, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 667, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1146], "IERC20": [1072], "ISSVNetworkCore": [849], "SSVModules": [859], "SSVStorage": [929], "StorageData": [906]}, "id": 930, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 851, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 852, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 850, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 853, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 1147, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 854, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 1073, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 859, "members": [{"id": 855, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 856, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 857, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 858, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 906, "members": [{"constant": false, "id": 864, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 863, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 861, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 862, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 869, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 868, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 866, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 872, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 880, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 879, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 877, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 876, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "1006:10:4"}, "referencedDeclaration": 859, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 878, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 885, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 884, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 882, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 891, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$772_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 890, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$772_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 889, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 888, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 772, "src": "1322:40:4"}, "referencedDeclaration": 772, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$772_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 897, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$762_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 896, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 893, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$762_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 895, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 894, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 762, "src": "1488:24:4"}, "referencedDeclaration": 762, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$762_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 901, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}, "typeName": {"id": 900, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 899, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1072, "src": "1599:6:4"}, "referencedDeclaration": 1072, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 905, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 904, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 903, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1686:16:4"}, "referencedDeclaration": 1078, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 930, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 929, "linearizedBaseContracts": [929], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 916, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 929, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 915, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 910, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 909, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 908, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 927, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [923], "declarations": [{"constant": false, "id": 923, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 927, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 925, "initialValue": {"id": 924, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 916, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 923, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 920, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 926, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 928, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 917, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 920, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 919, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 918, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 906, "src": "1891:11:4"}, "referencedDeclaration": 906, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 929, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 930, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [994], "StorageProtocol": [971]}, "id": 995, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 931, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 971, "members": [{"constant": false, "id": 934, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 933, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 937, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 936, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 940, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 939, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 943, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 942, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 946, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 945, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 949, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 948, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 952, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 951, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 955, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 954, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 958, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 957, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 961, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 964, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 967, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 970, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 995, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 994, "linearizedBaseContracts": [994], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 981, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 994, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 972, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 975, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 974, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 992, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [988], "declarations": [{"constant": false, "id": 988, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 992, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 990, "initialValue": {"id": 989, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 988, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 985, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 991, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 993, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 982, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 985, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 984, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 983, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1711:15:5"}, "referencedDeclaration": 971, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 994, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 995, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [671], "Types256": [733], "Types64": [684]}, "id": 734, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 668, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 671, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 734, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 669, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 684, "linearizedBaseContracts": [684], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 682, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 678, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 679, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 677, "id": 681, "nodeType": "Return", "src": "212:30:6"}]}, "id": 683, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 674, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 673, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 683, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 672, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 677, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 676, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 683, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 684, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 734, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 733, "linearizedBaseContracts": [733], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 712, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 692, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 695, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 696, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 698, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 691, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 702, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 706, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 705, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 708, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 704, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 690, "id": 711, "nodeType": "Return", "src": "425:50:6"}]}, "id": 713, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 687, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 686, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 713, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 690, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 689, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 713, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 688, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 733, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 731, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 721, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 722, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 720, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 728, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 729, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 719, "id": 730, "nodeType": "Return", "src": "638:12:6"}]}, "id": 732, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 716, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 715, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 732, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 718, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 732, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 717, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 733, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 734, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "DAO": [41], "DEDUCTED_DIGITS": [671], "IERC20": [1072], "ISSVDAO": [367], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVDAO": [275], "SSVModules": [859], "SSVStorage": [929], "SSVStorageProtocol": [994], "StorageData": [906], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 42, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 42, "sourceUnit": 276, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 275, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 41, "linearizedBaseContracts": [41, 275, 367, 849], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "147:29:7", "nodeType": "VariableDeclaration", "scope": 41, "src": "123:63:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 5, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "123:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "179:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"body": {"id": 25, "nodeType": "Block", "src": "207:111:7", "statements": [{"assignments": [12], "declarations": [{"constant": false, "id": 12, "mutability": "mutable", "name": "sp", "nameLocation": "241:2:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "217:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 11, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 10, "name": "StorageProtocol", "nameLocations": ["217:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "217:15:7"}, "referencedDeclaration": 971, "src": "217:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 16, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 13, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "246:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 14, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "265:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "246:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 15, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "246:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "217:54:7"}, {"expression": {"id": 23, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 17, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12, "src": "281:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 19, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "284:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "281:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "297:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 21, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "309:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "297:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "281:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 24, "nodeType": "ExpressionStatement", "src": "281:30:7"}]}, "id": 26, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 8, "nodeType": "ParameterList", "parameters": [], "src": "204:2:7"}, "returnParameters": {"id": 9, "nodeType": "ParameterList", "parameters": [], "src": "207:0:7"}, "scope": 41, "src": "193:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 39, "nodeType": "Block", "src": "395:46:7", "statements": [{"expression": {"arguments": [{"id": 36, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "427:6:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 33, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "405:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$41", "typeString": "contract DAO"}}, "id": 35, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "410:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 94, "src": "405:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "405:29:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 38, "nodeType": "ExpressionStatement", "src": "405:29:7"}]}, "functionSelector": "57877d3f", "id": 40, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_updateNetworkFee", "nameLocation": "333:23:7", "nodeType": "FunctionDefinition", "parameters": {"id": 29, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 28, "mutability": "mutable", "name": "amount", "nameLocation": "365:6:7", "nodeType": "VariableDeclaration", "scope": 40, "src": "357:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 27, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "357:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "356:16:7"}, "returnParameters": {"id": 32, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 31, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 40, "src": "389:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 30, "name": "bool", "nodeType": "ElementaryTypeName", "src": "389:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "388:6:7"}, "scope": 41, "src": "324:117:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 42, "src": "94:349:7", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:399:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "DEDUCTED_DIGITS": [671], "IERC20": [1072], "ISSVDAO": [367], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVDAO": [275], "SSVModules": [859], "SSVStorage": [929], "SSVStorageProtocol": [994], "StorageData": [906], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 276, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 43, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 44, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 368, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 45, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 734, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 46, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 667, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 47, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 499, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 48, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 367, "src": "233:7:8"}, "id": 49, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 275, "linearizedBaseContracts": [275, 367, 849], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 52, "libraryName": {"id": 50, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 684, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 51, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 55, "libraryName": {"id": 53, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 733, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 59, "libraryName": {"id": 56, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 666, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 58, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 57, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "332:15:8"}, "referencedDeclaration": 971, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 62, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 275, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 60, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 61, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [286], "body": {"id": 93, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [70], "declarations": [{"constant": false, "id": 70, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 93, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 69, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 68, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "491:15:8"}, "referencedDeclaration": 971, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 74, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 71, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [76], "declarations": [{"constant": false, "id": 76, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 93, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 79, "initialValue": {"expression": {"id": 77, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 70, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 78, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 83, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 80, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 70, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 82, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 569, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 84, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 87, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 76, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 683, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 90, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 86, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 91, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 92, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 94, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 66, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 65, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 64, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 94, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 63, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 67, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 275, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [292], "body": {"id": 149, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [102], "declarations": [{"constant": false, "id": 102, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 101, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 100, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "773:15:8"}, "referencedDeclaration": 971, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 106, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 103, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [108], "declarations": [{"constant": false, "id": 108, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 107, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 112, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 109, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [114], "declarations": [{"constant": false, "id": 114, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 113, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 118, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 115, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 622, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 119, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 120, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 126, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 125, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 122, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 804, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 124, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 127, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 130, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 131, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 134, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 138, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 140, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 135, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 498, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$498_$", "typeString": "type(library CoreLib)"}}, "id": 137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 409, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 142, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 144, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 145, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 143, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 148, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 150, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 98, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 97, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 96, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 150, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 95, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 99, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 275, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [298], "body": {"id": 168, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 156, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 161, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 163, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 165, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 164, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 332, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 167, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 169, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 154, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 153, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 152, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 169, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 155, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 275, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [304], "body": {"id": 187, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 175, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 180, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 182, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 184, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 183, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 336, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 186, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 188, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 173, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 172, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 171, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 188, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 174, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 275, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [310], "body": {"id": 206, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 194, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 199, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 201, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 203, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 202, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 340, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 205, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 207, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 192, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 191, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 190, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 207, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 189, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 193, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 275, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [316], "body": {"id": 233, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 213, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 214, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 220, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 219, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 216, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 218, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 221, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 225, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 226, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 228, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 230, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 229, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 344, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 232, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 234, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 211, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 210, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 209, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 234, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 208, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 212, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 275, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [322], "body": {"id": 254, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 240, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 958, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 245, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 249, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 251, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 250, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 348, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 253, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 255, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 238, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 237, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 236, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 255, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 239, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 275, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [328], "body": {"id": 273, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 261, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 970, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 266, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 257, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 268, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 270, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 257, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 269, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 272, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 274, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 259, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 258, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 257, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 274, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 256, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 260, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 275, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 276, "src": "214:2430:8", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1072]}, "id": 1073, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 996, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 997, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1072, "linearizedBaseContracts": [1072], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 998, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1006, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1005, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1000, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 999, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1002, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1001, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1003, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1007, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1015, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1009, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1008, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1011, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1010, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1013, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1012, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1016, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1021, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1017, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1020, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1019, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1021, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1072, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1029, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1025, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1029, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1029, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1072, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1030, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1039, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1035, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1034, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1038, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1037, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1036, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1072, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1040, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1049, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1045, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1041, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1044, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1048, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1046, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1072, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1050, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1059, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1051, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1054, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1053, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1056, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1072, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1060, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1071, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1061, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1064, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1065, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1068, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1072, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1073, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1146]}, "id": 1147, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1074, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1075, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1146, "linearizedBaseContracts": [1146], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1078, "members": [{"constant": false, "id": 1077, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1078, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1076, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1146, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1089, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1086, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1081, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1087, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1085, "id": 1088, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1090, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1081, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1090, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1080, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1079, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "844:7:10"}, "referencedDeclaration": 1078, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1090, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1083, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1146, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1103, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1102, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1096, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1098, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1101, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1104, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1093, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1104, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1092, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1091, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "964:7:10"}, "referencedDeclaration": 1078, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1146, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1131, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1111], "declarations": [{"constant": false, "id": 1111, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1131, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1114, "initialValue": {"expression": {"id": 1112, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1107, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1116, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1111, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1115, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1121, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1130, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1122, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1107, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1125, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1111, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1129, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1132, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1108, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1107, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1132, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1106, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1105, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1093:7:10"}, "referencedDeclaration": 1078, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1109, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1146, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1144, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1138, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1135, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1143, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1145, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1136, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1135, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1145, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1134, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1133, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1324:7:10"}, "referencedDeclaration": 1078, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1137, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1146, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1147, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:349:7:-:0;;;193:125;;;;;;;;;;217:26;246:25;:23;;;;;:25;;:::i;:::-;217:54;;297:14;281:2;:13;;;:30;;;;;;;;;;;;;;;;;;207:111;94:349;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:349:7:-;;;;;;;", "srcmap-runtime": "94:349:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;324:117:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:329:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;324:117:7:-;389:4;405;:21;;;427:6;405:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:117;;;:::o;1895:329:8:-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:90::-;1768:7;1811:5;1804:13;1797:21;1786:32;;1734:90;;;:::o;1830:109::-;1911:21;1926:5;1911:21;:::i;:::-;1906:3;1899:34;1830:109;;:::o;1945:210::-;2032:4;2070:2;2059:9;2055:18;2047:26;;2083:65;2145:1;2134:9;2130:17;2121:6;2083:65;:::i;:::-;1945:210;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:115::-;2708:23;2725:5;2708:23;:::i;:::-;2703:3;2696:36;2623:115;;:::o;2744:218::-;2835:4;2873:2;2862:9;2858:18;2850:26;;2886:69;2952:1;2941:9;2937:17;2928:6;2886:69;:::i;:::-;2744:218;;;;:::o;2968:222::-;3061:4;3099:2;3088:9;3084:18;3076:26;;3112:71;3180:1;3169:9;3165:17;3156:6;3112:71;:::i;:::-;2968:222;;;;:::o;3196:180::-;3244:77;3241:1;3234:88;3341:4;3338:1;3331:15;3365:4;3362:1;3355:15;3382:208;3421:4;3441:19;3458:1;3441:19;:::i;:::-;3436:24;;3474:19;3491:1;3474:19;:::i;:::-;3469:24;;3517:1;3514;3510:9;3502:17;;3541:18;3535:4;3532:28;3529:54;;;3563:18;;:::i;:::-;3529:54;3382:208;;;;:::o;3596:126::-;3633:7;3673:42;3666:5;3662:54;3651:65;;3596:126;;;:::o;3728:96::-;3765:7;3794:24;3812:5;3794:24;:::i;:::-;3783:35;;3728:96;;;:::o;3830:118::-;3917:24;3935:5;3917:24;:::i;:::-;3912:3;3905:37;3830:118;;:::o;3954:332::-;4075:4;4113:2;4102:9;4098:18;4090:26;;4126:71;4194:1;4183:9;4179:17;4170:6;4126:71;:::i;:::-;4207:72;4275:2;4264:9;4260:18;4251:6;4207:72;:::i;:::-;3954:332;;;;;:::o;4292:194::-;4332:4;4352:20;4370:1;4352:20;:::i;:::-;4347:25;;4386:20;4404:1;4386:20;:::i;:::-;4381:25;;4430:1;4427;4423:9;4415:17;;4454:1;4448:4;4445:11;4442:37;;;4459:18;;:::i;:::-;4442:37;4292:194;;;;:::o;4492:410::-;4532:7;4555:20;4573:1;4555:20;:::i;:::-;4550:25;;4589:20;4607:1;4589:20;:::i;:::-;4584:25;;4644:1;4641;4637:9;4666:30;4684:11;4666:30;:::i;:::-;4655:41;;4845:1;4836:7;4832:15;4829:1;4826:22;4806:1;4799:9;4779:83;4756:139;;4875:18;;:::i;:::-;4756:139;4540:362;4492:410;;;;:::o;4908:169::-;4992:11;5026:6;5021:3;5014:19;5066:4;5061:3;5057:14;5042:29;;4908:169;;;;:::o;5083:168::-;5223:20;5219:1;5211:6;5207:14;5200:44;5083:168;:::o;5257:366::-;5399:3;5420:67;5484:2;5479:3;5420:67;:::i;:::-;5413:74;;5496:93;5585:3;5496:93;:::i;:::-;5614:2;5609:3;5605:12;5598:19;;5257:366;;;:::o;5629:419::-;5795:4;5833:2;5822:9;5818:18;5810:26;;5882:9;5876:4;5872:20;5868:1;5857:9;5853:17;5846:47;5910:131;6036:4;5910:131;:::i;:::-;5902:139;;5629:419;;;:::o;6054:180::-;6102:77;6099:1;6092:88;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6240:185;6280:1;6297:20;6315:1;6297:20;:::i;:::-;6292:25;;6331:20;6349:1;6331:20;:::i;:::-;6326:25;;6370:1;6360:35;;6375:18;;:::i;:::-;6360:35;6417:1;6414;6410:9;6405:14;;6240:185;;;;:::o;6431:275::-;6470:7;6493:19;6510:1;6493:19;:::i;:::-;6488:24;;6526:19;6543:1;6526:19;:::i;:::-;6521:24;;6580:1;6577;6573:9;6602:29;6619:11;6602:29;:::i;:::-;6591:40;;6663:11;6654:7;6651:24;6641:58;;6679:18;;:::i;:::-;6641:58;6478:228;6431:275;;;;:::o;6712:205::-;6751:3;6770:19;6787:1;6770:19;:::i;:::-;6765:24;;6803:19;6820:1;6803:19;:::i;:::-;6798:24;;6845:1;6842;6838:9;6831:16;;6868:18;6863:3;6860:27;6857:53;;;6890:18;;:::i;:::-;6857:53;6712:205;;;;:::o;6923:332::-;7044:4;7082:2;7071:9;7067:18;7059:26;;7095:71;7163:1;7152:9;7148:17;7139:6;7095:71;:::i;:::-;7176:72;7244:2;7233:9;7229:18;7220:6;7176:72;:::i;:::-;6923:332;;;;;:::o;7261:116::-;7331:21;7346:5;7331:21;:::i;:::-;7324:5;7321:32;7311:60;;7367:1;7364;7357:12;7311:60;7261:116;:::o;7383:137::-;7437:5;7468:6;7462:13;7453:22;;7484:30;7508:5;7484:30;:::i;:::-;7383:137;;;;:::o;7526:345::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:61;7846:7;7837:6;7826:9;7822:22;7793:61;:::i;:::-;7783:71;;7739:125;7526:345;;;;:::o;7877:176::-;7909:1;7926:20;7944:1;7926:20;:::i;:::-;7921:25;;7960:20;7978:1;7960:20;:::i;:::-;7955:25;;7999:1;7989:35;;8004:18;;:::i;:::-;7989:35;8045:1;8042;8038:9;8033:14;;7877:176;;;;:::o;8059:172::-;8199:24;8195:1;8187:6;8183:14;8176:48;8059:172;:::o;8237:366::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:419::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8862:9;8856:4;8852:20;8848:1;8837:9;8833:17;8826:47;8890:131;9016:4;8890:131;:::i;:::-;8882:139;;8609:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"helper_updateNetworkFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b61067a1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61104780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220441420875730f2c20ffaa53ce7b535a3b3a69aa3d9a1c34fa6eb4d9a8226ef3164736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220441420875730f2c20ffaa53ce7b535a3b3a69aa3d9a1c34fa6eb4d9a8226ef3164736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml index 50e0e33c..51f44d20 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,6 +1,5 @@ testMode: assertion # testLimit: 50000 -# multi-abi: true # corpusDir: "corpus" cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] # contractAddr: '0xContractAddress' diff --git a/hardhat.config.ts b/hardhat.config.ts index 57d735b4..48641f42 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -41,9 +41,9 @@ const config: HardhatUserConfig = { ssvToken: process.env.SSVTOKEN_ADDRESS, // if empty, deploy SSV mock token } as SSVNetworkConfig, hardhat: { - forking: process.env.GOERLI_ETH_NODE_URL + forking: process.env.HOLESKY_ETH_NODE_URL ? { - url: process.env.GOERLI_ETH_NODE_URL, + url: process.env.HOLESKY_ETH_NODE_URL, // blockNumber can be specified here if needed } : undefined, diff --git a/package.json b/package.json index 4c7bf06a..425cce7e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "slither": "slither contracts --solc-remaps @openzeppelin=node_modules/@openzeppelin", "size-contracts": "npx hardhat size-contracts", "install-echidna": "brew install echidna", - "run-echidna": "echidna --config echidna.yaml" + "echidna": "echidna --config echidna.yaml --contract" }, "devDependencies": { "@crytic/echidna": "^0.0.6", From a1d94bbb7944722ae148d3887da639d8fa7e90bb Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Wed, 17 Jan 2024 10:04:25 +0100 Subject: [PATCH 05/19] fix: updated silther.yaml --- .github/workflows/slither.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/slither.yml b/.github/workflows/slither.yml index 9940415f..2172c6bc 100644 --- a/.github/workflows/slither.yml +++ b/.github/workflows/slither.yml @@ -8,9 +8,9 @@ jobs: uses: actions/checkout@v3 - name: Run Slither - uses: crytic/slither-action@v0.2.0 + uses: crytic/slither-action@v0.3.0 id: slither with: - node-version: 16 + node-version: 18 fail-on: high - slither-args: --exclude controlled-delegatecall \ No newline at end of file + slither-args: --exclude controlled-delegatecall From 0d06695deb902c6a0016c2f0baa3de3108eaa64f Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 19 Jan 2024 10:10:47 +0100 Subject: [PATCH 06/19] fix: updated README, config, and contracts --- .echidna.test.js | 26 +++++++++++++++++ .gitignore | 2 ++ contracts/modules/Clusters.sol | 8 ++++++ contracts/modules/DAO.sol | 1 + contracts/modules/Operators.sol | 2 +- crytic-export/combined_solc.json | 2 +- docs/setup.md | 48 ++++++++++++++++++++++++++------ echidna.yaml | 6 ++-- package-lock.json | 1 + package.json | 3 +- 10 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 .echidna.test.js create mode 100644 contracts/modules/Clusters.sol diff --git a/.echidna.test.js b/.echidna.test.js new file mode 100644 index 00000000..0cdfaa0e --- /dev/null +++ b/.echidna.test.js @@ -0,0 +1,26 @@ +const { execSync } = require('child_process'); +const chalk = require('chalk'); +const contract = process.argv[2]; + +const exec = commands => { + try { + execSync(commands, { stdio: 'inherit', shell: true }); // Specify the shell if needed + } catch (error) {} +}; + +const echidnaPath = '/usr/local/bin/echidna'; +console.log(echidnaPath); +switch (contract) { + case 'Operators': + exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/modules/Operators.sol'); + break; + case 'Clusters': + exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/modules/Clusters.sol'); + break; + case 'DAO': + exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/modules/DAO.sol'); + break; + default: + console.log(chalk.redBright('Invalid contract name. Use Operators, Clusters, or DAO.')); + console.log(chalk.greenBright('npm run echidna ')); +} diff --git a/.gitignore b/.gitignore index a2420ca2..1e64c08c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ cache coverage coverage.json artifacts +crytic-export +echidna-corpus typechain-types/ .openzeppelin/dev-*.json .DS_Store diff --git a/contracts/modules/Clusters.sol b/contracts/modules/Clusters.sol new file mode 100644 index 00000000..5a6b8a8c --- /dev/null +++ b/contracts/modules/Clusters.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./SSVClusters.sol"; + +contract Clusters is SSVClusters { + constructor() {} +} diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index c60ebdd3..5f1e87e3 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -5,6 +5,7 @@ import "./SSVDAO.sol"; contract DAO is SSVDAO { uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; + bool private _assetVar; constructor() { StorageProtocol storage sp = SSVStorageProtocol.load(); diff --git a/contracts/modules/Operators.sol b/contracts/modules/Operators.sol index 668d6d73..46380fcf 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/modules/Operators.sol @@ -28,7 +28,7 @@ contract Operators is SSVOperators { function helper_createOperator(bytes calldata publicKey, uint256 fee) public { require(publicKey.length != 0 && publicKey[0] != 0, "invalid publicKey: cannot be empty"); - + uint256 maxValue = 2 ** 64 * DEDUCTED_DIGITS; uint256 minN = (MINIMAL_OPERATOR_FEE + DEDUCTED_DIGITS - 1) / DEDUCTED_DIGITS; diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index af842c48..4596358e 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [367], "ISSVNetworkCore": [849]}, "id": 368, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 277, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 278, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 368, "sourceUnit": 850, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 279, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 849, "src": "124:15:0"}, "id": 280, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 367, "linearizedBaseContracts": [367, 849], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 281, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 286, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 283, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 285, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 367, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 287, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 292, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 289, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 292, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 288, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 291, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 367, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 293, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 298, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 296, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 295, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 298, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 294, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 297, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 367, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 299, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 304, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 302, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 301, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 304, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 300, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 303, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 367, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 305, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 310, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 308, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 307, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 310, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 306, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 309, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 367, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 311, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 316, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 313, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 316, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 312, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 315, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 367, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 317, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 322, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 320, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 319, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 322, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 318, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 321, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 367, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 323, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 328, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 326, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 325, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 328, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 324, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 327, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 367, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 332, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 330, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 336, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 334, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 336, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 333, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 340, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 338, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 337, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 344, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 342, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 344, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 341, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 348, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 347, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 346, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 348, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 345, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 349, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 355, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 356, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 362, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 358, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 359, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 366, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 365, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 364, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 363, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 368, "src": "103:2329:0", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [849]}, "id": 850, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 735, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 849, "linearizedBaseContracts": [849], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 745, "members": [{"constant": false, "id": 738, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 737, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 741, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 740, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 744, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 745, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 743, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 849, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 762, "members": [{"constant": false, "id": 748, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 751, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 750, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 754, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 753, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 757, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 756, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 761, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 762, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$745_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 760, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 759, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 745, "src": "1129:8:1"}, "referencedDeclaration": 745, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$745_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 849, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 772, "members": [{"constant": false, "id": 765, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 764, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 768, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 767, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 771, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 772, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 770, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 849, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 788, "members": [{"constant": false, "id": 775, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 774, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 778, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 781, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 784, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 783, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 787, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 788, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 786, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 849, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 790, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 789, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 792, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 794, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 796, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 798, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 800, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 802, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 801, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 804, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 803, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 806, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 805, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 808, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 807, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 810, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 812, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 814, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 816, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 818, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 820, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 822, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 824, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 826, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 828, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 830, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 832, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 834, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 836, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 838, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 840, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 842, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 844, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 846, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 848, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 850, "src": "70:3477:1", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "IERC20": [1072], "ISSVNetworkCore": [849], "SSVModules": [859], "SSVStorage": [929], "StorageData": [906]}, "id": 499, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 369, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 370, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 499, "sourceUnit": 930, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 498, "linearizedBaseContracts": [498], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 377, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 377, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, "typeName": {"id": 372, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 371, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "141:10:2"}, "referencedDeclaration": 859, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 377, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 384, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 381, "id": 383, "nodeType": "Return", "src": "269:19:2"}]}, "id": 385, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 378, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 381, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 380, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 385, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 379, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 498, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 408, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 397, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 387, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 398, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 392, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 901, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1039, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 407, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 406, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 401, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 832, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 405, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 409, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 387, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 409, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 386, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 389, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 409, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 388, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 391, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 498, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 435, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 419, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 423, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$498", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$498", "typeString": "library CoreLib"}], "id": 422, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 425, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 414, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 901, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1071, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 434, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 433, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 428, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 832, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 432, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 436, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 411, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 436, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 413, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 498, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 462, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 444, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 439, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 445, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 453, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 452, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 443, "id": 451, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [455], "declarations": [{"constant": false, "id": 455, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 462, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 454, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 456, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 439, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 455, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 457, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 458, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 455, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 443, "id": 461, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 437, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 463, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 440, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 439, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 463, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 438, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 443, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 442, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 463, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 441, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 498, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 496, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 472, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 471, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 463, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 480, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 475, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 844, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 479, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 481, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$929_$", "typeString": "type(library SSVStorage)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 928, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$906_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 880, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 487, "indexExpression": {"id": 486, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 488, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 490, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 492, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 466, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, {"id": 493, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 491, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$859_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 495, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 497, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 466, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 497, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}, "typeName": {"id": 465, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 464, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "1826:10:2"}, "referencedDeclaration": 859, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 468, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 497, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 470, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 498, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 499, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [671], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVStorageProtocol": [994], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 667, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 500, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 501, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 850, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 502, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 734, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 503, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 667, "sourceUnit": 995, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 666, "linearizedBaseContracts": [666], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 506, "libraryName": {"id": 504, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 733, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 505, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 529, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 514, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 515, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 518, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 520, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 934, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 517, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 516, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 523, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 524, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 509, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 513, "id": 528, "nodeType": "Return", "src": "443:96:3"}]}, "id": 530, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 510, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 509, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 530, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 508, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 507, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "374:15:3"}, "referencedDeclaration": 971, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 512, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 530, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 511, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 666, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 568, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 539, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 538, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 541, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 542, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 544, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 546, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 545, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 549, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 550, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 934, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 555, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 553, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 559, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 560, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 563, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 567, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 569, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 533, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 569, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 532, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 531, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "578:15:3"}, "referencedDeclaration": 971, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 535, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 569, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 534, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 537, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 666, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 593, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 575, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 579, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 578, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 583, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 572, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 940, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 588, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 587, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 586, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 592, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 594, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 572, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 594, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 571, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 570, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "956:15:3"}, "referencedDeclaration": 971, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 574, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 666, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 621, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 602, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 606, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 609, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 610, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 940, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 612, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 613, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 614, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 616, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 601, "id": 620, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 622, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 597, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 622, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 596, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 595, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1141:15:3"}, "referencedDeclaration": 971, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 601, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 600, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 622, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 599, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 666, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 664, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 633, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 632, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 635, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 636, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 645, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 647, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 649, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 652, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 651, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 650, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 653, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 662, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 661, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 656, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 849, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$849_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 846, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 660, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 663, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 644, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 625, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 640, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 937, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 641, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 665, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 630, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 625, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 624, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 623, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1351:15:3"}, "referencedDeclaration": 971, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 627, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 626, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 629, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 665, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 628, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 631, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 666, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 667, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1146], "IERC20": [1072], "ISSVNetworkCore": [849], "SSVModules": [859], "SSVStorage": [929], "StorageData": [906]}, "id": 930, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 851, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 852, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 850, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 853, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 1147, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 854, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 930, "sourceUnit": 1073, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 859, "members": [{"id": 855, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 856, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 857, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 858, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 906, "members": [{"constant": false, "id": 864, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 863, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 861, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 862, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 869, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 868, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 866, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 872, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 880, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 879, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 877, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 876, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 859, "src": "1006:10:4"}, "referencedDeclaration": 859, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$859", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$859_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 878, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 885, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 884, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 882, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 891, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$772_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 890, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$772_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 889, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 888, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 772, "src": "1322:40:4"}, "referencedDeclaration": 772, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$772_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 897, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$762_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 896, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 893, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$762_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 895, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 894, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 762, "src": "1488:24:4"}, "referencedDeclaration": 762, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$762_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 901, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}, "typeName": {"id": 900, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 899, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1072, "src": "1599:6:4"}, "referencedDeclaration": 1072, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1072", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 905, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 906, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 904, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 903, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1686:16:4"}, "referencedDeclaration": 1078, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 930, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 929, "linearizedBaseContracts": [929], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 916, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 929, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 915, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 910, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 909, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 908, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 927, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [923], "declarations": [{"constant": false, "id": 923, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 927, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 925, "initialValue": {"id": 924, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 916, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 923, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 920, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 926, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 928, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 917, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 920, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 919, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 918, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 906, "src": "1891:11:4"}, "referencedDeclaration": 906, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$906_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 929, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 930, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [994], "StorageProtocol": [971]}, "id": 995, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 931, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 971, "members": [{"constant": false, "id": 934, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 933, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 937, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 936, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 940, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 939, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 943, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 942, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 946, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 945, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 949, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 948, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 952, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 951, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 955, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 954, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 958, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 957, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 961, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 964, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 967, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 970, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 971, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 995, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 994, "linearizedBaseContracts": [994], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 981, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 994, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 972, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 975, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 974, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 992, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [988], "declarations": [{"constant": false, "id": 988, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 992, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 990, "initialValue": {"id": 989, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 988, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 985, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 991, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 993, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 982, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 986, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 985, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 984, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 983, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "1711:15:5"}, "referencedDeclaration": 971, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 994, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 995, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [671], "Types256": [733], "Types64": [684]}, "id": 734, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 668, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 671, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 734, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 669, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 684, "linearizedBaseContracts": [684], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 682, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 678, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 679, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 677, "id": 681, "nodeType": "Return", "src": "212:30:6"}]}, "id": 683, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 674, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 673, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 683, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 672, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 677, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 676, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 683, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 684, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 734, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 733, "linearizedBaseContracts": [733], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 712, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 692, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 695, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 696, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 698, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 691, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 702, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 706, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 705, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 708, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 704, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 690, "id": 711, "nodeType": "Return", "src": "425:50:6"}]}, "id": 713, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 687, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 686, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 713, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 690, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 689, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 713, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 688, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 733, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 731, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 721, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 722, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 671, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 720, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 728, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 729, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 719, "id": 730, "nodeType": "Return", "src": "638:12:6"}]}, "id": 732, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 716, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 715, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 732, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 718, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 732, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 717, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 733, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 734, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "DAO": [41], "DEDUCTED_DIGITS": [671], "IERC20": [1072], "ISSVDAO": [367], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVDAO": [275], "SSVModules": [859], "SSVStorage": [929], "SSVStorageProtocol": [994], "StorageData": [906], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 42, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 42, "sourceUnit": 276, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 275, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 41, "linearizedBaseContracts": [41, 275, 367, 849], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "147:29:7", "nodeType": "VariableDeclaration", "scope": 41, "src": "123:63:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 5, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "123:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "179:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"body": {"id": 25, "nodeType": "Block", "src": "207:111:7", "statements": [{"assignments": [12], "declarations": [{"constant": false, "id": 12, "mutability": "mutable", "name": "sp", "nameLocation": "241:2:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "217:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 11, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 10, "name": "StorageProtocol", "nameLocations": ["217:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "217:15:7"}, "referencedDeclaration": 971, "src": "217:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 16, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 13, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "246:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 14, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "265:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "246:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 15, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "246:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "217:54:7"}, {"expression": {"id": 23, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 17, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12, "src": "281:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 19, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "284:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "281:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "297:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 21, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "309:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "297:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "281:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 24, "nodeType": "ExpressionStatement", "src": "281:30:7"}]}, "id": 26, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 8, "nodeType": "ParameterList", "parameters": [], "src": "204:2:7"}, "returnParameters": {"id": 9, "nodeType": "ParameterList", "parameters": [], "src": "207:0:7"}, "scope": 41, "src": "193:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 39, "nodeType": "Block", "src": "395:46:7", "statements": [{"expression": {"arguments": [{"id": 36, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "427:6:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 33, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "405:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$41", "typeString": "contract DAO"}}, "id": 35, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "410:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 94, "src": "405:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "405:29:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 38, "nodeType": "ExpressionStatement", "src": "405:29:7"}]}, "functionSelector": "57877d3f", "id": 40, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_updateNetworkFee", "nameLocation": "333:23:7", "nodeType": "FunctionDefinition", "parameters": {"id": 29, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 28, "mutability": "mutable", "name": "amount", "nameLocation": "365:6:7", "nodeType": "VariableDeclaration", "scope": 40, "src": "357:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 27, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "357:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "356:16:7"}, "returnParameters": {"id": 32, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 31, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 40, "src": "389:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 30, "name": "bool", "nodeType": "ElementaryTypeName", "src": "389:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "388:6:7"}, "scope": 41, "src": "324:117:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 42, "src": "94:349:7", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:399:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [498], "Counters": [1146], "DEDUCTED_DIGITS": [671], "IERC20": [1072], "ISSVDAO": [367], "ISSVNetworkCore": [849], "ProtocolLib": [666], "SSVDAO": [275], "SSVModules": [859], "SSVStorage": [929], "SSVStorageProtocol": [994], "StorageData": [906], "StorageProtocol": [971], "Types256": [733], "Types64": [684]}, "id": 276, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 43, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 44, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 368, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 45, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 734, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 46, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 667, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 47, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 276, "sourceUnit": 499, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 48, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 367, "src": "233:7:8"}, "id": 49, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 275, "linearizedBaseContracts": [275, 367, 849], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 52, "libraryName": {"id": 50, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 684, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 51, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 55, "libraryName": {"id": 53, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 733, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 59, "libraryName": {"id": 56, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 666, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 58, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 57, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "332:15:8"}, "referencedDeclaration": 971, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 62, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 275, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 60, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 61, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [286], "body": {"id": 93, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [70], "declarations": [{"constant": false, "id": 70, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 93, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 69, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 68, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "491:15:8"}, "referencedDeclaration": 971, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 74, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 71, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [76], "declarations": [{"constant": false, "id": 76, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 93, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 79, "initialValue": {"expression": {"id": 77, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 70, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 78, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 946, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 83, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 80, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 70, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 82, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 569, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$971_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 84, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 87, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 76, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 683, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 90, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 86, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 91, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 92, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 94, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 66, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 65, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 64, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 94, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 63, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 67, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 275, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [292], "body": {"id": 149, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [102], "declarations": [{"constant": false, "id": 102, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 101, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 100, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 971, "src": "773:15:8"}, "referencedDeclaration": 971, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 106, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 103, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [108], "declarations": [{"constant": false, "id": 108, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 107, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 112, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 109, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [114], "declarations": [{"constant": false, "id": 114, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 149, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 113, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 118, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 115, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 622, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$971_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 119, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 120, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 126, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 125, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 122, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 804, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 124, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 127, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 130, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 114, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 131, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 134, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 138, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 140, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 135, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 498, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$498_$", "typeString": "type(library CoreLib)"}}, "id": 137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 409, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 142, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 144, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 145, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 143, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 148, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 150, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 98, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 97, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 96, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 150, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 95, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 99, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 275, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [298], "body": {"id": 168, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 156, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 161, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 163, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 165, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 164, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 332, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 167, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 169, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 154, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 153, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 152, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 169, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 155, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 275, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [304], "body": {"id": 187, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 175, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 180, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 182, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 184, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 183, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 336, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 186, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 188, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 173, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 172, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 171, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 188, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 174, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 275, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [310], "body": {"id": 206, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 194, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 199, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 201, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 203, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 202, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 340, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 205, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 207, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 192, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 191, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 190, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 207, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 189, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 193, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 275, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [316], "body": {"id": 233, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 213, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 214, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 220, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 219, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 216, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 218, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 221, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 225, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 226, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 228, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 230, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 209, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 229, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 344, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 232, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 234, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 211, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 210, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 209, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 234, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 208, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 212, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 275, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [322], "body": {"id": 254, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 240, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 958, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 245, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 713, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 249, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 251, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 236, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 250, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 348, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 253, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 255, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 238, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 237, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 236, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 255, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 239, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 275, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [328], "body": {"id": 273, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 261, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$994_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 993, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$971_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$971_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 970, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 266, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 257, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 268, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 270, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 257, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 269, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 272, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 274, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 259, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 258, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 257, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 274, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 256, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 260, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 275, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 276, "src": "214:2430:8", "usedErrors": [790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1072]}, "id": 1073, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 996, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 997, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1072, "linearizedBaseContracts": [1072], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 998, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1006, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1005, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1000, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 999, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1002, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1001, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1006, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1003, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1007, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1015, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1009, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1008, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1011, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1010, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1013, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1015, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1012, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1016, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1021, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1017, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1020, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1019, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1021, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1072, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1029, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1025, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1029, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1029, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1072, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1030, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1039, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1035, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1034, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1038, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1037, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1039, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1036, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1072, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1040, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1049, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1045, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1041, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1044, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1048, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1049, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1046, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1072, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1050, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1059, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1051, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1054, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1053, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1059, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1056, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1072, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1060, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1071, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1061, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1064, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1065, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1071, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1068, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1072, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1073, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1146]}, "id": 1147, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1074, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1075, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1146, "linearizedBaseContracts": [1146], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1078, "members": [{"constant": false, "id": 1077, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1078, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1076, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1146, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1089, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1086, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1081, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1087, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1085, "id": 1088, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1090, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1081, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1090, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1080, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1079, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "844:7:10"}, "referencedDeclaration": 1078, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1090, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1083, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1146, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1103, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1102, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1096, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1098, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1101, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1104, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1093, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1104, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1092, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1091, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "964:7:10"}, "referencedDeclaration": 1078, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1146, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1131, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1111], "declarations": [{"constant": false, "id": 1111, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1131, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1114, "initialValue": {"expression": {"id": 1112, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1107, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1116, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1111, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1115, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1121, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1130, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1122, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1107, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1125, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1111, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1129, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1132, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1108, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1107, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1132, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1106, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1105, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1093:7:10"}, "referencedDeclaration": 1078, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1109, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1146, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1144, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1138, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1135, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1077, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1143, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1145, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1136, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1135, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1145, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1134, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1133, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1078, "src": "1324:7:10"}, "referencedDeclaration": 1078, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1078_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1137, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1146, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1147, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:349:7:-:0;;;193:125;;;;;;;;;;217:26;246:25;:23;;;;;:25;;:::i;:::-;217:54;;297:14;281:2;:13;;;:30;;;;;;;;;;;;;;;;;;207:111;94:349;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:349:7:-;;;;;;;", "srcmap-runtime": "94:349:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;324:117:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:329:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;324:117:7:-;389:4;405;:21;;;427:6;405:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:117;;;:::o;1895:329:8:-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:90::-;1768:7;1811:5;1804:13;1797:21;1786:32;;1734:90;;;:::o;1830:109::-;1911:21;1926:5;1911:21;:::i;:::-;1906:3;1899:34;1830:109;;:::o;1945:210::-;2032:4;2070:2;2059:9;2055:18;2047:26;;2083:65;2145:1;2134:9;2130:17;2121:6;2083:65;:::i;:::-;1945:210;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:115::-;2708:23;2725:5;2708:23;:::i;:::-;2703:3;2696:36;2623:115;;:::o;2744:218::-;2835:4;2873:2;2862:9;2858:18;2850:26;;2886:69;2952:1;2941:9;2937:17;2928:6;2886:69;:::i;:::-;2744:218;;;;:::o;2968:222::-;3061:4;3099:2;3088:9;3084:18;3076:26;;3112:71;3180:1;3169:9;3165:17;3156:6;3112:71;:::i;:::-;2968:222;;;;:::o;3196:180::-;3244:77;3241:1;3234:88;3341:4;3338:1;3331:15;3365:4;3362:1;3355:15;3382:208;3421:4;3441:19;3458:1;3441:19;:::i;:::-;3436:24;;3474:19;3491:1;3474:19;:::i;:::-;3469:24;;3517:1;3514;3510:9;3502:17;;3541:18;3535:4;3532:28;3529:54;;;3563:18;;:::i;:::-;3529:54;3382:208;;;;:::o;3596:126::-;3633:7;3673:42;3666:5;3662:54;3651:65;;3596:126;;;:::o;3728:96::-;3765:7;3794:24;3812:5;3794:24;:::i;:::-;3783:35;;3728:96;;;:::o;3830:118::-;3917:24;3935:5;3917:24;:::i;:::-;3912:3;3905:37;3830:118;;:::o;3954:332::-;4075:4;4113:2;4102:9;4098:18;4090:26;;4126:71;4194:1;4183:9;4179:17;4170:6;4126:71;:::i;:::-;4207:72;4275:2;4264:9;4260:18;4251:6;4207:72;:::i;:::-;3954:332;;;;;:::o;4292:194::-;4332:4;4352:20;4370:1;4352:20;:::i;:::-;4347:25;;4386:20;4404:1;4386:20;:::i;:::-;4381:25;;4430:1;4427;4423:9;4415:17;;4454:1;4448:4;4445:11;4442:37;;;4459:18;;:::i;:::-;4442:37;4292:194;;;;:::o;4492:410::-;4532:7;4555:20;4573:1;4555:20;:::i;:::-;4550:25;;4589:20;4607:1;4589:20;:::i;:::-;4584:25;;4644:1;4641;4637:9;4666:30;4684:11;4666:30;:::i;:::-;4655:41;;4845:1;4836:7;4832:15;4829:1;4826:22;4806:1;4799:9;4779:83;4756:139;;4875:18;;:::i;:::-;4756:139;4540:362;4492:410;;;;:::o;4908:169::-;4992:11;5026:6;5021:3;5014:19;5066:4;5061:3;5057:14;5042:29;;4908:169;;;;:::o;5083:168::-;5223:20;5219:1;5211:6;5207:14;5200:44;5083:168;:::o;5257:366::-;5399:3;5420:67;5484:2;5479:3;5420:67;:::i;:::-;5413:74;;5496:93;5585:3;5496:93;:::i;:::-;5614:2;5609:3;5605:12;5598:19;;5257:366;;;:::o;5629:419::-;5795:4;5833:2;5822:9;5818:18;5810:26;;5882:9;5876:4;5872:20;5868:1;5857:9;5853:17;5846:47;5910:131;6036:4;5910:131;:::i;:::-;5902:139;;5629:419;;;:::o;6054:180::-;6102:77;6099:1;6092:88;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6240:185;6280:1;6297:20;6315:1;6297:20;:::i;:::-;6292:25;;6331:20;6349:1;6331:20;:::i;:::-;6326:25;;6370:1;6360:35;;6375:18;;:::i;:::-;6360:35;6417:1;6414;6410:9;6405:14;;6240:185;;;;:::o;6431:275::-;6470:7;6493:19;6510:1;6493:19;:::i;:::-;6488:24;;6526:19;6543:1;6526:19;:::i;:::-;6521:24;;6580:1;6577;6573:9;6602:29;6619:11;6602:29;:::i;:::-;6591:40;;6663:11;6654:7;6651:24;6641:58;;6679:18;;:::i;:::-;6641:58;6478:228;6431:275;;;;:::o;6712:205::-;6751:3;6770:19;6787:1;6770:19;:::i;:::-;6765:24;;6803:19;6820:1;6803:19;:::i;:::-;6798:24;;6845:1;6842;6838:9;6831:16;;6868:18;6863:3;6860:27;6857:53;;;6890:18;;:::i;:::-;6857:53;6712:205;;;;:::o;6923:332::-;7044:4;7082:2;7071:9;7067:18;7059:26;;7095:71;7163:1;7152:9;7148:17;7139:6;7095:71;:::i;:::-;7176:72;7244:2;7233:9;7229:18;7220:6;7176:72;:::i;:::-;6923:332;;;;;:::o;7261:116::-;7331:21;7346:5;7331:21;:::i;:::-;7324:5;7321:32;7311:60;;7367:1;7364;7357:12;7311:60;7261:116;:::o;7383:137::-;7437:5;7468:6;7462:13;7453:22;;7484:30;7508:5;7484:30;:::i;:::-;7383:137;;;;:::o;7526:345::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:61;7846:7;7837:6;7826:9;7822:22;7793:61;:::i;:::-;7783:71;;7739:125;7526:345;;;;:::o;7877:176::-;7909:1;7926:20;7944:1;7926:20;:::i;:::-;7921:25;;7960:20;7978:1;7960:20;:::i;:::-;7955:25;;7999:1;7989:35;;8004:18;;:::i;:::-;7989:35;8045:1;8042;8038:9;8033:14;;7877:176;;;;:::o;8059:172::-;8199:24;8195:1;8187:6;8183:14;8176:48;8059:172;:::o;8237:366::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:419::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8862:9;8856:4;8852:20;8848:1;8837:9;8833:17;8826:47;8890:131;9016:4;8890:131;:::i;:::-;8882:139;;8609:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"helper_updateNetworkFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b61067a1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61104780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220441420875730f2c20ffaa53ce7b535a3b3a69aa3d9a1c34fa6eb4d9a8226ef3164736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220441420875730f2c20ffaa53ce7b535a3b3a69aa3d9a1c34fa6eb4d9a8226ef3164736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [369], "ISSVNetworkCore": [851]}, "id": 370, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 279, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 280, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 370, "sourceUnit": 852, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 281, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 851, "src": "124:15:0"}, "id": 282, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 369, "linearizedBaseContracts": [369, 851], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 283, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 288, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 286, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 285, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 288, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 287, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 369, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 289, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 294, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 292, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 291, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 290, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 293, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 369, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 295, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 300, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 300, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 369, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 301, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 306, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 303, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 306, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 305, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 369, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 307, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 312, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 309, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 312, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 308, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 311, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 369, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 313, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 318, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 315, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 318, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 314, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 317, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 369, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 319, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 324, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 321, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 324, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 323, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 369, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 325, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 330, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 327, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 326, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 329, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 369, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 334, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 333, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 334, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 338, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 337, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 336, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 338, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 335, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 342, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 342, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 346, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 345, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 344, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 346, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 343, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 350, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 348, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 350, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 351, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 357, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 355, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 358, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 364, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 362, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 361, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 368, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 368, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 365, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 370, "src": "103:2329:0", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [851]}, "id": 852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 737, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 851, "linearizedBaseContracts": [851], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 747, "members": [{"constant": false, "id": 740, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 739, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 743, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 742, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 746, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 764, "members": [{"constant": false, "id": 750, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 749, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 753, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 752, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 755, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 758, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 763, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 762, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 761, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 747, "src": "1129:8:1"}, "referencedDeclaration": 747, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 774, "members": [{"constant": false, "id": 767, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 766, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 770, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 769, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 851, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 790, "members": [{"constant": false, "id": 777, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 776, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 780, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 785, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 789, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 788, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 851, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 792, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 794, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 796, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 798, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 800, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 802, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 801, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 804, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 803, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 806, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 805, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 808, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 807, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 810, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 812, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 814, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 816, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 818, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 820, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 822, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 824, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 826, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 828, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 830, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 832, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 834, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 836, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 838, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 840, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 842, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 844, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 846, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 848, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 850, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 849, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 852, "src": "70:3477:1", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 501, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 371, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 372, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 501, "sourceUnit": 932, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 500, "linearizedBaseContracts": [500], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 379, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 378, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 375, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 374, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 373, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "141:10:2"}, "referencedDeclaration": 861, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 377, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 376, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 386, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 383, "id": 385, "nodeType": "Return", "src": "269:19:2"}]}, "id": 387, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 382, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 387, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 381, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 500, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 410, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 399, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 400, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 391, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 394, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1041, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 409, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 408, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 403, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 407, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 411, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 389, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 388, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 391, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 500, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 437, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 421, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 425, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}], "id": 424, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 423, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 427, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1073, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 436, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 435, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 430, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 434, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 413, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 438, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 415, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 500, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 464, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 446, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 441, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 448, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 447, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 455, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 454, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 445, "id": 453, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [457], "declarations": [{"constant": false, "id": 457, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 464, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 456, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 458, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 441, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 457, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 459, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 460, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 445, "id": 463, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 439, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 465, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 441, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 465, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 440, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 444, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 465, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 443, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 500, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 498, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 474, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 473, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 465, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 482, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 477, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 846, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 481, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 483, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 882, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 489, "indexExpression": {"id": 488, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 490, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 492, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 494, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, {"id": 495, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 493, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 379, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$861_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 497, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 499, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 471, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 468, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1826:10:2"}, "referencedDeclaration": 861, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 470, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 472, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 500, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 501, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVStorageProtocol": [996], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 669, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 502, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 503, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 852, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 504, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 736, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 505, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 997, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 668, "linearizedBaseContracts": [668], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 508, "libraryName": {"id": 506, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 507, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 531, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 516, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 517, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 520, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 522, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 523, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 519, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 518, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 526, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 515, "id": 530, "nodeType": "Return", "src": "443:96:3"}]}, "id": 532, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 512, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 511, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 532, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 510, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 509, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "374:15:3"}, "referencedDeclaration": 973, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 514, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 532, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 513, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 668, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 570, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 541, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 540, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 544, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 546, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 548, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 547, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 532, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 551, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 552, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 557, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 555, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 561, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 562, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 565, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 569, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 571, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 535, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 534, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 533, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "578:15:3"}, "referencedDeclaration": 973, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 537, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 539, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 668, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 577, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 579, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 581, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 580, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 584, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 585, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 590, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 588, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 594, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 575, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 574, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 596, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 573, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 572, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "956:15:3"}, "referencedDeclaration": 973, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 576, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 668, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 623, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 604, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 608, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 607, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 606, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 611, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 614, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 615, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 616, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 618, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 603, "id": 622, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 624, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 624, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1141:15:3"}, "referencedDeclaration": 973, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 602, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 624, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 601, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 668, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 666, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 635, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 634, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 637, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 638, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 647, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 648, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 649, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 651, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 653, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 652, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 664, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 663, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 658, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 848, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 665, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 646, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 640, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 643, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 645, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 667, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 632, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 627, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 625, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1351:15:3"}, "referencedDeclaration": 973, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 629, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 628, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 631, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 630, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 633, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 668, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 669, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 932, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 854, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 852, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 855, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1149, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 856, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1075, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 861, "members": [{"id": 857, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 858, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 859, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 860, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 908, "members": [{"constant": false, "id": 866, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 865, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 863, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 864, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 871, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 870, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 868, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 869, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 876, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 875, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 873, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 874, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 882, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 881, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 879, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 878, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1006:10:4"}, "referencedDeclaration": 861, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 880, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 887, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 886, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 884, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 885, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 893, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 892, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 889, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 891, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 890, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 774, "src": "1322:40:4"}, "referencedDeclaration": 774, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$774_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 899, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 898, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 896, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 764, "src": "1488:24:4"}, "referencedDeclaration": 764, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$764_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 903, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}, "typeName": {"id": 902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 901, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1074, "src": "1599:6:4"}, "referencedDeclaration": 1074, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 906, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 905, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1686:16:4"}, "referencedDeclaration": 1080, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 932, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 931, "linearizedBaseContracts": [931], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 918, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 931, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 912, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 910, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 929, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [925], "declarations": [{"constant": false, "id": 925, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 929, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 927, "initialValue": {"id": 926, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 918, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 925, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 922, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 928, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 930, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 919, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 923, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 922, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 930, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 921, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 920, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 908, "src": "1891:11:4"}, "referencedDeclaration": 908, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 931, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 932, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [996], "StorageProtocol": [973]}, "id": 997, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 933, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 973, "members": [{"constant": false, "id": 936, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 935, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 939, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 938, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 942, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 941, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 945, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 944, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 948, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 947, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 951, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 954, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 957, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 956, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 960, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 959, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 963, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 962, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 966, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 965, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 969, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 968, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 972, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 971, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 997, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 996, "linearizedBaseContracts": [996], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 983, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 996, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 977, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 975, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 994, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [990], "declarations": [{"constant": false, "id": 990, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 994, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 992, "initialValue": {"id": 991, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 983, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 990, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 987, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 993, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 995, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 984, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 988, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 987, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 995, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 986, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 985, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1711:15:5"}, "referencedDeclaration": 973, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 996, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 997, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "Types256": [735], "Types64": [686]}, "id": 736, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 670, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 673, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 736, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 686, "linearizedBaseContracts": [686], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 684, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 680, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 675, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 681, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 679, "id": 683, "nodeType": "Return", "src": "212:30:6"}]}, "id": 685, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 675, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 685, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 674, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 678, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 685, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 686, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 735, "linearizedBaseContracts": [735], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 714, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 694, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 698, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 700, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 693, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 708, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 734, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 710, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 705, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 692, "id": 713, "nodeType": "Return", "src": "425:50:6"}]}, "id": 715, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 715, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 687, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 715, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 690, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 735, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 733, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 723, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 724, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 722, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 730, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 731, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 721, "id": 732, "nodeType": "Return", "src": "638:12:6"}]}, "id": 734, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 718, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 717, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 734, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 720, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 734, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 735, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DAO": [43], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 44, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 44, "sourceUnit": 278, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 277, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 43, "linearizedBaseContracts": [43, 277, 369, 851], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "147:29:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "123:63:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 5, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "123:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "179:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"constant": false, "id": 9, "mutability": "mutable", "name": "_assetVar", "nameLocation": "205:9:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "192:22:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8, "name": "bool", "nodeType": "ElementaryTypeName", "src": "192:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"body": {"id": 27, "nodeType": "Block", "src": "235:111:7", "statements": [{"assignments": [14], "declarations": [{"constant": false, "id": 14, "mutability": "mutable", "name": "sp", "nameLocation": "269:2:7", "nodeType": "VariableDeclaration", "scope": 27, "src": "245:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 13, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 12, "name": "StorageProtocol", "nameLocations": ["245:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "245:15:7"}, "referencedDeclaration": 973, "src": "245:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 18, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 15, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "274:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 16, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "293:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "274:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 17, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "274:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "245:54:7"}, {"expression": {"id": 25, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 19, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14, "src": "309:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 21, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "312:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "309:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "325:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "337:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "325:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "309:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 26, "nodeType": "ExpressionStatement", "src": "309:30:7"}]}, "id": 28, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "232:2:7"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "235:0:7"}, "scope": 43, "src": "221:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 41, "nodeType": "Block", "src": "423:46:7", "statements": [{"expression": {"arguments": [{"id": 38, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, "src": "455:6:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 35, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "433:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$43", "typeString": "contract DAO"}}, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "438:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 96, "src": "433:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 39, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "433:29:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 40, "nodeType": "ExpressionStatement", "src": "433:29:7"}]}, "functionSelector": "57877d3f", "id": 42, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_updateNetworkFee", "nameLocation": "361:23:7", "nodeType": "FunctionDefinition", "parameters": {"id": 31, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "mutability": "mutable", "name": "amount", "nameLocation": "393:6:7", "nodeType": "VariableDeclaration", "scope": 42, "src": "385:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 29, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "385:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "384:16:7"}, "returnParameters": {"id": 34, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42, "src": "417:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 32, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "416:6:7"}, "scope": 43, "src": "352:117:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 44, "src": "94:377:7", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:427:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 278, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 45, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 46, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 370, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 47, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 736, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 48, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 669, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 49, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 501, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 50, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 369, "src": "233:7:8"}, "id": 51, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 277, "linearizedBaseContracts": [277, 369, 851], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 54, "libraryName": {"id": 52, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 686, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 53, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 57, "libraryName": {"id": 55, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 56, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 61, "libraryName": {"id": 58, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 668, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 60, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 59, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "332:15:8"}, "referencedDeclaration": 973, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 64, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 277, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 62, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [288], "body": {"id": 95, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [72], "declarations": [{"constant": false, "id": 72, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 71, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 70, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "491:15:8"}, "referencedDeclaration": 973, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 76, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 73, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [78], "declarations": [{"constant": false, "id": 78, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 77, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 81, "initialValue": {"expression": {"id": 79, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 80, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 85, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 82, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 84, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 571, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 86, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 87, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 89, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 78, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 90, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 685, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 91, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 92, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 88, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 93, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 94, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 96, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 68, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 67, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 66, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 96, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 65, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 69, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 277, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [294], "body": {"id": 151, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [104], "declarations": [{"constant": false, "id": 104, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 102, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "773:15:8"}, "referencedDeclaration": 973, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 108, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 105, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [110], "declarations": [{"constant": false, "id": 110, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 109, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 114, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 111, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 115, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 120, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 117, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 624, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 121, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 122, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 128, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 127, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 124, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 806, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 126, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 129, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 132, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 133, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 136, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 140, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 142, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 137, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$500_$", "typeString": "type(library CoreLib)"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 411, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 144, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 145, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 364, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 150, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 100, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 152, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 101, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 277, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [300], "body": {"id": 170, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 158, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 969, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 163, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 165, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 167, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 166, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 334, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 169, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 171, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 156, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 154, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 153, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 157, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 277, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [306], "body": {"id": 189, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 177, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 181, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 963, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 182, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 184, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 186, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 185, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 188, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 190, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 175, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 173, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 190, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 176, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 277, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [312], "body": {"id": 208, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 196, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 966, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 201, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 203, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 205, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 204, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 342, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 207, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 209, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 194, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 193, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 192, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 209, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 191, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 195, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 277, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [318], "body": {"id": 235, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 215, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 216, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 222, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 221, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 218, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 223, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 230, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 232, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 231, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 346, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 234, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 236, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 213, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 212, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 211, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 236, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 210, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 214, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 277, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [324], "body": {"id": 256, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 242, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 246, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 960, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 247, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 251, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 253, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 252, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 350, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 255, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 257, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 240, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 239, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 238, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 257, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 241, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 277, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [330], "body": {"id": 275, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 263, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 267, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 972, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 268, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 270, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 272, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 271, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 274, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 276, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 261, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 259, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 276, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 258, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 262, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 277, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 278, "src": "214:2430:8", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1074]}, "id": 1075, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 998, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 999, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1074, "linearizedBaseContracts": [1074], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1000, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1008, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1007, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1002, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1001, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1003, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1006, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1005, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1009, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1017, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1011, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1010, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1013, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1012, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1015, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1018, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1023, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1019, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1021, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1023, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1074, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1024, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1031, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1026, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1031, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1029, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1031, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1074, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1032, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1041, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1033, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1036, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1035, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1038, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1074, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1042, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1051, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1044, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1046, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1074, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1052, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1061, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1054, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1059, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1058, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1074, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1062, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1073, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1069, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1064, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1065, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1068, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1067, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1071, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1070, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1074, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1075, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1148]}, "id": 1149, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1076, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1077, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1148, "linearizedBaseContracts": [1148], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1080, "members": [{"constant": false, "id": 1079, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1080, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1078, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1148, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1091, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1088, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1083, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1089, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1087, "id": 1090, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1092, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1083, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1082, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1081, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "844:7:10"}, "referencedDeclaration": 1080, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1092, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1148, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1105, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1104, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1098, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1103, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1106, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1096, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1095, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1106, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1094, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1093, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "964:7:10"}, "referencedDeclaration": 1080, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1148, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1133, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1133, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1116, "initialValue": {"expression": {"id": 1114, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1123, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1132, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1124, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1126, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1127, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1131, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1134, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1109, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1134, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1108, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1107, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1093:7:10"}, "referencedDeclaration": 1080, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1111, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1148, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1140, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1137, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1145, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1138, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1137, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1136, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1135, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1324:7:10"}, "referencedDeclaration": 1080, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1139, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1148, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1149, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:377:7:-:0;;;221:125;;;;;;;;;;245:26;274:25;:23;;;;;:25;;:::i;:::-;245:54;;325:14;309:2;:13;;;:30;;;;;;;;;;;;;;;;;;235:111;94:377;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:377:7:-;;;;;;;", "srcmap-runtime": "94:377:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;352:117:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:329:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;352:117:7:-;417:4;433;:21;;;455:6;433:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:117;;;:::o;1895:329:8:-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:90::-;1768:7;1811:5;1804:13;1797:21;1786:32;;1734:90;;;:::o;1830:109::-;1911:21;1926:5;1911:21;:::i;:::-;1906:3;1899:34;1830:109;;:::o;1945:210::-;2032:4;2070:2;2059:9;2055:18;2047:26;;2083:65;2145:1;2134:9;2130:17;2121:6;2083:65;:::i;:::-;1945:210;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:115::-;2708:23;2725:5;2708:23;:::i;:::-;2703:3;2696:36;2623:115;;:::o;2744:218::-;2835:4;2873:2;2862:9;2858:18;2850:26;;2886:69;2952:1;2941:9;2937:17;2928:6;2886:69;:::i;:::-;2744:218;;;;:::o;2968:222::-;3061:4;3099:2;3088:9;3084:18;3076:26;;3112:71;3180:1;3169:9;3165:17;3156:6;3112:71;:::i;:::-;2968:222;;;;:::o;3196:180::-;3244:77;3241:1;3234:88;3341:4;3338:1;3331:15;3365:4;3362:1;3355:15;3382:208;3421:4;3441:19;3458:1;3441:19;:::i;:::-;3436:24;;3474:19;3491:1;3474:19;:::i;:::-;3469:24;;3517:1;3514;3510:9;3502:17;;3541:18;3535:4;3532:28;3529:54;;;3563:18;;:::i;:::-;3529:54;3382:208;;;;:::o;3596:126::-;3633:7;3673:42;3666:5;3662:54;3651:65;;3596:126;;;:::o;3728:96::-;3765:7;3794:24;3812:5;3794:24;:::i;:::-;3783:35;;3728:96;;;:::o;3830:118::-;3917:24;3935:5;3917:24;:::i;:::-;3912:3;3905:37;3830:118;;:::o;3954:332::-;4075:4;4113:2;4102:9;4098:18;4090:26;;4126:71;4194:1;4183:9;4179:17;4170:6;4126:71;:::i;:::-;4207:72;4275:2;4264:9;4260:18;4251:6;4207:72;:::i;:::-;3954:332;;;;;:::o;4292:194::-;4332:4;4352:20;4370:1;4352:20;:::i;:::-;4347:25;;4386:20;4404:1;4386:20;:::i;:::-;4381:25;;4430:1;4427;4423:9;4415:17;;4454:1;4448:4;4445:11;4442:37;;;4459:18;;:::i;:::-;4442:37;4292:194;;;;:::o;4492:410::-;4532:7;4555:20;4573:1;4555:20;:::i;:::-;4550:25;;4589:20;4607:1;4589:20;:::i;:::-;4584:25;;4644:1;4641;4637:9;4666:30;4684:11;4666:30;:::i;:::-;4655:41;;4845:1;4836:7;4832:15;4829:1;4826:22;4806:1;4799:9;4779:83;4756:139;;4875:18;;:::i;:::-;4756:139;4540:362;4492:410;;;;:::o;4908:169::-;4992:11;5026:6;5021:3;5014:19;5066:4;5061:3;5057:14;5042:29;;4908:169;;;;:::o;5083:168::-;5223:20;5219:1;5211:6;5207:14;5200:44;5083:168;:::o;5257:366::-;5399:3;5420:67;5484:2;5479:3;5420:67;:::i;:::-;5413:74;;5496:93;5585:3;5496:93;:::i;:::-;5614:2;5609:3;5605:12;5598:19;;5257:366;;;:::o;5629:419::-;5795:4;5833:2;5822:9;5818:18;5810:26;;5882:9;5876:4;5872:20;5868:1;5857:9;5853:17;5846:47;5910:131;6036:4;5910:131;:::i;:::-;5902:139;;5629:419;;;:::o;6054:180::-;6102:77;6099:1;6092:88;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6240:185;6280:1;6297:20;6315:1;6297:20;:::i;:::-;6292:25;;6331:20;6349:1;6331:20;:::i;:::-;6326:25;;6370:1;6360:35;;6375:18;;:::i;:::-;6360:35;6417:1;6414;6410:9;6405:14;;6240:185;;;;:::o;6431:275::-;6470:7;6493:19;6510:1;6493:19;:::i;:::-;6488:24;;6526:19;6543:1;6526:19;:::i;:::-;6521:24;;6580:1;6577;6573:9;6602:29;6619:11;6602:29;:::i;:::-;6591:40;;6663:11;6654:7;6651:24;6641:58;;6679:18;;:::i;:::-;6641:58;6478:228;6431:275;;;;:::o;6712:205::-;6751:3;6770:19;6787:1;6770:19;:::i;:::-;6765:24;;6803:19;6820:1;6803:19;:::i;:::-;6798:24;;6845:1;6842;6838:9;6831:16;;6868:18;6863:3;6860:27;6857:53;;;6890:18;;:::i;:::-;6857:53;6712:205;;;;:::o;6923:332::-;7044:4;7082:2;7071:9;7067:18;7059:26;;7095:71;7163:1;7152:9;7148:17;7139:6;7095:71;:::i;:::-;7176:72;7244:2;7233:9;7229:18;7220:6;7176:72;:::i;:::-;6923:332;;;;;:::o;7261:116::-;7331:21;7346:5;7331:21;:::i;:::-;7324:5;7321:32;7311:60;;7367:1;7364;7357:12;7311:60;7261:116;:::o;7383:137::-;7437:5;7468:6;7462:13;7453:22;;7484:30;7508:5;7484:30;:::i;:::-;7383:137;;;;:::o;7526:345::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:61;7846:7;7837:6;7826:9;7822:22;7793:61;:::i;:::-;7783:71;;7739:125;7526:345;;;;:::o;7877:176::-;7909:1;7926:20;7944:1;7926:20;:::i;:::-;7921:25;;7960:20;7978:1;7960:20;:::i;:::-;7955:25;;7999:1;7989:35;;8004:18;;:::i;:::-;7989:35;8045:1;8042;8038:9;8033:14;;7877:176;;;;:::o;8059:172::-;8199:24;8195:1;8187:6;8183:14;8176:48;8059:172;:::o;8237:366::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:419::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8862:9;8856:4;8852:20;8848:1;8837:9;8833:17;8826:47;8890:131;9016:4;8890:131;:::i;:::-;8882:139;;8609:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"helper_updateNetworkFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b61067a1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61104780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/docs/setup.md b/docs/setup.md index c6c6da37..715cf762 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -1,20 +1,24 @@ # SSV Network -### [Intro](../README.md) | [Architecture](architecture.md) | Setup | [Tasks](tasks.md) | [Local development](local-dev.md) | [Roles](roles.md) - +### [Intro](../README.md) | [Architecture](architecture.md) | Setup | [Tasks](tasks.md) | [Local development](local-dev.md) | [Roles](roles.md) ## Developer Setup + The stack is a simple one: -* Solidity -* JavaScript -* Node/NPM -* HardHat -* Ethers + +- Solidity +- JavaScript +- Node/NPM +- HardHat +- Ethers +- Echidna ### Install Node (also installs NPM) -* Use the latest [LTS (long-term support) version](https://nodejs.org/en/download/). + +- Use the latest [LTS (long-term support) version](https://nodejs.org/en/download/). ### Install required Node modules + All NPM resources are project local. No global installs are required. ``` @@ -22,9 +26,35 @@ cd path/to/ssv-network npm install ``` +### Install Echidna + +#### Homebrew MacOS / Linux + +You can install Echidna and all of its depencies (Slither, crytic-compile) by running + +``` +brew install echidna +``` + +You can also compile and install the latest `master` branch code by running + +``` +brew install --HEAD echidna +``` + +#### Docker Container + +To run the container with the latest Echdina version interactively, you can use something like the following command. +It will map the current directory as /src inside the container. + +``` +docker run --rm -it -v `pwd`:/src ghcr.io/crytic/echidna/echidna +``` + ### Configure Environment + - Copy [.env.example](../.env.example) to `.env` and edit to suit. - API keys are only needed for deploying to public networks. - `.env` is included in `.gitignore` and will not be committed to the repo. - + At this moment you are ready to run tests, compile contracts and run coverage tests. diff --git a/echidna.yaml b/echidna.yaml index 51f44d20..f3cee3f2 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,7 +1,9 @@ testMode: assertion -# testLimit: 50000 -# corpusDir: "corpus" +testLimit: 2000 +corpusDir: 'echidna-corpus' cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] +format: text +prefix: 'echidna_' # contractAddr: '0xContractAddress' # filterBlacklist: false # filterFunctions: ["Operators.registerOperator(bytes,uint256)", "setOperatorWhitelist(uint64,address)"] diff --git a/package-lock.json b/package-lock.json index fe56c80a..37ef6a10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@types/node": "^17.0.23", "@typescript-eslint/eslint-plugin": "^5.36.0", "chai-as-promised": "^7.1.1", + "chalk": "^4.1.2", "cli-table": "^0.3.11", "dotenv": "^16.0.0", "eslint": "^8.23.0", diff --git a/package.json b/package.json index 425cce7e..a0063615 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "slither": "slither contracts --solc-remaps @openzeppelin=node_modules/@openzeppelin", "size-contracts": "npx hardhat size-contracts", "install-echidna": "brew install echidna", - "echidna": "echidna --config echidna.yaml --contract" + "echidna": "node .echidna.test.js" }, "devDependencies": { "@crytic/echidna": "^0.0.6", @@ -26,6 +26,7 @@ "@types/node": "^17.0.23", "@typescript-eslint/eslint-plugin": "^5.36.0", "chai-as-promised": "^7.1.1", + "chalk": "^4.1.2", "cli-table": "^0.3.11", "dotenv": "^16.0.0", "eslint": "^8.23.0", From a400ab60fd771bb7ebec39478a57e54b4e497134 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 19 Jan 2024 10:14:09 +0100 Subject: [PATCH 07/19] fix: contracts --- contracts/modules/DAO.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index 5f1e87e3..4ec4bfc0 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -4,9 +4,6 @@ pragma solidity 0.8.18; import "./SSVDAO.sol"; contract DAO is SSVDAO { - uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; - bool private _assetVar; - constructor() { StorageProtocol storage sp = SSVStorageProtocol.load(); sp.networkFee = 100000000 / 10; From 4df76be6536dcd24b454d04a262dadf55a13ec1e Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 26 Jan 2024 10:48:09 +0100 Subject: [PATCH 08/19] fix: updated code for SSVClusters and SSVDao --- contracts/modules/Clusters.sol | 47 ++++++++++++++++++++++++++++++++ contracts/modules/DAO.sol | 9 ++++-- crytic-export/combined_solc.json | 2 +- echidna.yaml | 4 +-- 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/contracts/modules/Clusters.sol b/contracts/modules/Clusters.sol index 5a6b8a8c..d46d472d 100644 --- a/contracts/modules/Clusters.sol +++ b/contracts/modules/Clusters.sol @@ -5,4 +5,51 @@ import "./SSVClusters.sol"; contract Clusters is SSVClusters { constructor() {} + + bytes[] publicKeys; + bytes32[] hashedClusters; + + uint64 private constant MIN_OPERATORS_LENGTH = 4; + uint64 private constant MAX_OPERATORS_LENGTH = 13; + uint64 private constant MODULO_OPERATORS_LENGTH = 3; + uint64 private constant PUBLIC_KEY_LENGTH = 48; + + function helper_registerValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + bytes calldata sharesData, + uint256 amount, + Cluster memory cluster + ) public { + require( + operatorIds.length < MIN_OPERATORS_LENGTH || + operatorIds.length > MAX_OPERATORS_LENGTH || + operatorIds.length % MODULO_OPERATORS_LENGTH != 1, + "Invalid OperatorIds Length" + ); + require(publicKey.length == PUBLIC_KEY_LENGTH, "Invalid PublicKey Length"); + + bytes32 hashedCluster = keccak256(abi.encodePacked(msg.sender, operatorIds)); + + try this.registerValidator(publicKey, operatorIds, sharesData, amount, cluster) { + publicKeys.push(publicKey); + hashedClusters.push(hashedCluster); + } catch { + assert(false); + } + } + + function check_removeValidator(uint64 publicKeyId, uint64[] calldata operatorIds, Cluster memory cluster) public { + publicKeyId = publicKeyId % uint64(publicKeys.length); + + this.removeValidator(publicKeys[publicKeyId], operatorIds, cluster); + } + + function check_invariant_validatorPKs() public { + StorageData storage s = SSVStorage.load(); + + for (uint64 i = 0; i < hashedClusters.length; i++) { + assert(s.clusters[hashedClusters[i]] == bytes32(0)); + } + } } diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index 4ec4bfc0..71db2ecb 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -9,7 +9,12 @@ contract DAO is SSVDAO { sp.networkFee = 100000000 / 10; } - function helper_updateNetworkFee(uint256 amount) public returns (bool) { - this.updateNetworkFee(amount); + function check_updateNetworkFee(uint256 fee) public { + this.updateNetworkFee(fee); + } + + function check_invariant_networkfee() public returns (bool) { + StorageProtocol storage sp = SSVStorageProtocol.load(); + assert(sp.networkFee > 0); } } diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 4596358e..488318df 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [369], "ISSVNetworkCore": [851]}, "id": 370, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 279, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 280, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 370, "sourceUnit": 852, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 281, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 851, "src": "124:15:0"}, "id": 282, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 369, "linearizedBaseContracts": [369, 851], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 283, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 288, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 286, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 285, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 288, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 287, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 369, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 289, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 294, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 292, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 291, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 290, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 293, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 369, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 295, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 300, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 300, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 369, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 301, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 306, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 303, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 306, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 305, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 369, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 307, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 312, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 309, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 312, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 308, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 311, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 369, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 313, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 318, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 315, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 318, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 314, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 317, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 369, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 319, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 324, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 321, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 324, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 323, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 369, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 325, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 330, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 327, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 326, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 329, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 369, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 334, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 333, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 334, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 338, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 337, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 336, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 338, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 335, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 342, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 342, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 346, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 345, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 344, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 346, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 343, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 350, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 348, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 350, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 351, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 357, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 355, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 358, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 364, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 362, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 361, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 368, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 368, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 365, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 370, "src": "103:2329:0", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [851]}, "id": 852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 737, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 851, "linearizedBaseContracts": [851], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 747, "members": [{"constant": false, "id": 740, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 739, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 743, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 742, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 746, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 764, "members": [{"constant": false, "id": 750, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 749, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 753, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 752, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 755, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 758, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 763, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 762, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 761, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 747, "src": "1129:8:1"}, "referencedDeclaration": 747, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 774, "members": [{"constant": false, "id": 767, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 766, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 770, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 769, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 851, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 790, "members": [{"constant": false, "id": 777, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 776, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 780, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 785, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 789, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 788, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 851, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 792, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 794, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 796, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 798, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 800, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 802, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 801, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 804, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 803, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 806, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 805, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 808, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 807, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 810, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 812, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 814, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 816, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 818, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 820, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 822, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 824, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 826, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 828, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 830, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 832, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 834, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 836, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 838, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 840, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 842, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 844, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 846, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 848, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 850, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 849, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 852, "src": "70:3477:1", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 501, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 371, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 372, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 501, "sourceUnit": 932, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 500, "linearizedBaseContracts": [500], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 379, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 378, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 375, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 374, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 373, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "141:10:2"}, "referencedDeclaration": 861, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 377, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 376, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 386, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 383, "id": 385, "nodeType": "Return", "src": "269:19:2"}]}, "id": 387, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 382, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 387, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 381, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 500, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 410, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 399, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 400, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 391, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 394, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1041, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 409, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 408, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 403, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 407, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 411, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 389, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 388, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 391, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 500, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 437, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 421, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 425, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}], "id": 424, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 423, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 427, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1073, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 436, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 435, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 430, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 434, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 413, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 438, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 415, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 500, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 464, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 446, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 441, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 448, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 447, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 455, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 454, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 445, "id": 453, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [457], "declarations": [{"constant": false, "id": 457, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 464, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 456, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 458, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 441, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 457, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 459, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 460, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 445, "id": 463, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 439, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 465, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 441, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 465, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 440, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 444, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 465, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 443, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 500, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 498, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 474, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 473, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 465, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 482, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 477, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 846, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 481, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 483, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 882, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 489, "indexExpression": {"id": 488, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 490, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 492, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 494, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, {"id": 495, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 493, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 379, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$861_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 497, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 499, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 471, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 468, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1826:10:2"}, "referencedDeclaration": 861, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 470, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 472, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 500, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 501, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVStorageProtocol": [996], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 669, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 502, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 503, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 852, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 504, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 736, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 505, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 997, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 668, "linearizedBaseContracts": [668], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 508, "libraryName": {"id": 506, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 507, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 531, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 516, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 517, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 520, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 522, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 523, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 519, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 518, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 526, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 515, "id": 530, "nodeType": "Return", "src": "443:96:3"}]}, "id": 532, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 512, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 511, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 532, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 510, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 509, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "374:15:3"}, "referencedDeclaration": 973, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 514, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 532, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 513, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 668, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 570, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 541, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 540, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 544, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 546, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 548, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 547, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 532, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 551, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 552, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 557, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 555, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 561, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 562, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 565, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 569, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 571, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 535, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 534, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 533, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "578:15:3"}, "referencedDeclaration": 973, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 537, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 539, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 668, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 577, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 579, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 581, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 580, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 584, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 585, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 590, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 588, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 594, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 575, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 574, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 596, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 573, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 572, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "956:15:3"}, "referencedDeclaration": 973, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 576, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 668, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 623, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 604, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 608, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 607, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 606, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 611, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 614, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 615, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 616, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 618, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 603, "id": 622, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 624, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 624, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1141:15:3"}, "referencedDeclaration": 973, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 602, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 624, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 601, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 668, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 666, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 635, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 634, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 637, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 638, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 647, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 648, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 649, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 651, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 653, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 652, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 664, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 663, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 658, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 848, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 665, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 646, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 640, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 643, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 645, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 667, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 632, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 627, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 625, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1351:15:3"}, "referencedDeclaration": 973, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 629, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 628, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 631, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 630, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 633, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 668, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 669, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 932, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 854, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 852, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 855, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1149, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 856, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1075, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 861, "members": [{"id": 857, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 858, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 859, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 860, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 908, "members": [{"constant": false, "id": 866, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 865, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 863, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 864, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 871, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 870, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 868, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 869, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 876, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 875, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 873, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 874, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 882, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 881, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 879, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 878, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1006:10:4"}, "referencedDeclaration": 861, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 880, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 887, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 886, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 884, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 885, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 893, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 892, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 889, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 891, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 890, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 774, "src": "1322:40:4"}, "referencedDeclaration": 774, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$774_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 899, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 898, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 896, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 764, "src": "1488:24:4"}, "referencedDeclaration": 764, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$764_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 903, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}, "typeName": {"id": 902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 901, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1074, "src": "1599:6:4"}, "referencedDeclaration": 1074, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 906, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 905, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1686:16:4"}, "referencedDeclaration": 1080, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 932, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 931, "linearizedBaseContracts": [931], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 918, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 931, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 912, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 910, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 929, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [925], "declarations": [{"constant": false, "id": 925, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 929, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 927, "initialValue": {"id": 926, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 918, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 925, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 922, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 928, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 930, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 919, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 923, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 922, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 930, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 921, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 920, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 908, "src": "1891:11:4"}, "referencedDeclaration": 908, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 931, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 932, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [996], "StorageProtocol": [973]}, "id": 997, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 933, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 973, "members": [{"constant": false, "id": 936, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 935, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 939, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 938, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 942, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 941, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 945, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 944, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 948, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 947, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 951, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 954, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 957, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 956, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 960, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 959, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 963, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 962, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 966, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 965, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 969, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 968, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 972, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 971, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 997, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 996, "linearizedBaseContracts": [996], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 983, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 996, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 977, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 975, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 994, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [990], "declarations": [{"constant": false, "id": 990, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 994, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 992, "initialValue": {"id": 991, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 983, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 990, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 987, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 993, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 995, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 984, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 988, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 987, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 995, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 986, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 985, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1711:15:5"}, "referencedDeclaration": 973, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 996, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 997, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "Types256": [735], "Types64": [686]}, "id": 736, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 670, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 673, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 736, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 686, "linearizedBaseContracts": [686], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 684, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 680, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 675, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 681, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 679, "id": 683, "nodeType": "Return", "src": "212:30:6"}]}, "id": 685, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 675, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 685, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 674, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 678, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 685, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 686, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 735, "linearizedBaseContracts": [735], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 714, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 694, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 698, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 700, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 693, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 708, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 734, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 710, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 705, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 692, "id": 713, "nodeType": "Return", "src": "425:50:6"}]}, "id": 715, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 715, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 687, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 715, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 690, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 735, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 733, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 723, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 724, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 722, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 730, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 731, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 721, "id": 732, "nodeType": "Return", "src": "638:12:6"}]}, "id": 734, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 718, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 717, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 734, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 720, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 734, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 735, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DAO": [43], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 44, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 44, "sourceUnit": 278, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 277, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 43, "linearizedBaseContracts": [43, 277, 369, 851], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "147:29:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "123:63:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 5, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "123:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "179:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"constant": false, "id": 9, "mutability": "mutable", "name": "_assetVar", "nameLocation": "205:9:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "192:22:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8, "name": "bool", "nodeType": "ElementaryTypeName", "src": "192:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"body": {"id": 27, "nodeType": "Block", "src": "235:111:7", "statements": [{"assignments": [14], "declarations": [{"constant": false, "id": 14, "mutability": "mutable", "name": "sp", "nameLocation": "269:2:7", "nodeType": "VariableDeclaration", "scope": 27, "src": "245:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 13, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 12, "name": "StorageProtocol", "nameLocations": ["245:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "245:15:7"}, "referencedDeclaration": 973, "src": "245:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 18, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 15, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "274:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 16, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "293:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "274:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 17, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "274:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "245:54:7"}, {"expression": {"id": 25, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 19, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14, "src": "309:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 21, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "312:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "309:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "325:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "337:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "325:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "309:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 26, "nodeType": "ExpressionStatement", "src": "309:30:7"}]}, "id": 28, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "232:2:7"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "235:0:7"}, "scope": 43, "src": "221:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 41, "nodeType": "Block", "src": "423:46:7", "statements": [{"expression": {"arguments": [{"id": 38, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, "src": "455:6:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 35, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "433:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$43", "typeString": "contract DAO"}}, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "438:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 96, "src": "433:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 39, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "433:29:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 40, "nodeType": "ExpressionStatement", "src": "433:29:7"}]}, "functionSelector": "57877d3f", "id": 42, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_updateNetworkFee", "nameLocation": "361:23:7", "nodeType": "FunctionDefinition", "parameters": {"id": 31, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "mutability": "mutable", "name": "amount", "nameLocation": "393:6:7", "nodeType": "VariableDeclaration", "scope": 42, "src": "385:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 29, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "385:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "384:16:7"}, "returnParameters": {"id": 34, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42, "src": "417:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 32, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "416:6:7"}, "scope": 43, "src": "352:117:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 44, "src": "94:377:7", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:427:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 278, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 45, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 46, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 370, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 47, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 736, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 48, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 669, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 49, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 501, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 50, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 369, "src": "233:7:8"}, "id": 51, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 277, "linearizedBaseContracts": [277, 369, 851], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 54, "libraryName": {"id": 52, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 686, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 53, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 57, "libraryName": {"id": 55, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 56, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 61, "libraryName": {"id": 58, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 668, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 60, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 59, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "332:15:8"}, "referencedDeclaration": 973, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 64, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 277, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 62, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [288], "body": {"id": 95, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [72], "declarations": [{"constant": false, "id": 72, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 71, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 70, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "491:15:8"}, "referencedDeclaration": 973, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 76, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 73, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [78], "declarations": [{"constant": false, "id": 78, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 77, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 81, "initialValue": {"expression": {"id": 79, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 80, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 85, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 82, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 84, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 571, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 86, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 87, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 89, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 78, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 90, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 685, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 91, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 92, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 88, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 93, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 94, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 96, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 68, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 67, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 66, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 96, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 65, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 69, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 277, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [294], "body": {"id": 151, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [104], "declarations": [{"constant": false, "id": 104, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 102, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "773:15:8"}, "referencedDeclaration": 973, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 108, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 105, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [110], "declarations": [{"constant": false, "id": 110, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 109, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 114, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 111, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 115, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 120, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 117, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 624, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 121, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 122, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 128, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 127, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 124, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 806, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 126, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 129, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 132, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 133, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 136, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 140, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 142, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 137, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$500_$", "typeString": "type(library CoreLib)"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 411, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 144, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 145, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 364, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 150, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 100, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 152, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 101, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 277, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [300], "body": {"id": 170, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 158, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 969, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 163, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 165, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 167, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 166, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 334, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 169, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 171, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 156, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 154, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 153, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 157, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 277, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [306], "body": {"id": 189, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 177, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 181, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 963, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 182, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 184, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 186, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 185, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 188, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 190, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 175, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 173, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 190, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 176, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 277, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [312], "body": {"id": 208, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 196, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 966, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 201, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 203, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 205, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 204, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 342, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 207, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 209, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 194, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 193, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 192, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 209, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 191, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 195, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 277, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [318], "body": {"id": 235, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 215, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 216, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 222, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 221, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 218, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 223, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 230, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 232, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 231, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 346, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 234, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 236, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 213, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 212, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 211, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 236, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 210, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 214, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 277, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [324], "body": {"id": 256, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 242, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 246, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 960, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 247, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 251, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 253, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 252, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 350, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 255, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 257, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 240, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 239, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 238, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 257, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 241, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 277, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [330], "body": {"id": 275, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 263, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 267, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 972, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 268, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 270, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 272, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 271, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 274, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 276, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 261, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 259, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 276, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 258, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 262, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 277, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 278, "src": "214:2430:8", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1074]}, "id": 1075, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 998, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 999, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1074, "linearizedBaseContracts": [1074], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1000, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1008, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1007, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1002, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1001, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1003, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1006, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1005, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1009, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1017, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1011, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1010, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1013, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1012, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1015, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1018, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1023, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1019, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1021, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1023, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1074, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1024, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1031, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1026, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1031, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1029, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1031, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1074, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1032, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1041, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1033, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1036, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1035, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1038, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1074, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1042, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1051, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1044, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1046, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1074, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1052, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1061, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1054, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1059, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1058, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1074, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1062, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1073, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1069, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1064, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1065, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1068, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1067, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1071, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1070, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1074, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1075, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1148]}, "id": 1149, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1076, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1077, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1148, "linearizedBaseContracts": [1148], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1080, "members": [{"constant": false, "id": 1079, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1080, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1078, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1148, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1091, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1088, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1083, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1089, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1087, "id": 1090, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1092, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1083, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1082, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1081, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "844:7:10"}, "referencedDeclaration": 1080, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1092, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1148, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1105, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1104, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1098, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1103, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1106, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1096, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1095, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1106, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1094, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1093, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "964:7:10"}, "referencedDeclaration": 1080, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1148, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1133, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1133, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1116, "initialValue": {"expression": {"id": 1114, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1123, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1132, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1124, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1126, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1127, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1131, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1134, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1109, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1134, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1108, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1107, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1093:7:10"}, "referencedDeclaration": 1080, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1111, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1148, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1140, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1137, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1145, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1138, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1137, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1136, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1135, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1324:7:10"}, "referencedDeclaration": 1080, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1139, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1148, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1149, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:377:7:-:0;;;221:125;;;;;;;;;;245:26;274:25;:23;;;;;:25;;:::i;:::-;245:54;;325:14;309:2;:13;;;:30;;;;;;;;;;;;;;;;;;235:111;94:377;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:377:7:-;;;;;;;", "srcmap-runtime": "94:377:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;352:117:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:329:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;352:117:7:-;417:4;433;:21;;;455:6;433:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:117;;;:::o;1895:329:8:-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:90::-;1768:7;1811:5;1804:13;1797:21;1786:32;;1734:90;;;:::o;1830:109::-;1911:21;1926:5;1911:21;:::i;:::-;1906:3;1899:34;1830:109;;:::o;1945:210::-;2032:4;2070:2;2059:9;2055:18;2047:26;;2083:65;2145:1;2134:9;2130:17;2121:6;2083:65;:::i;:::-;1945:210;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:115::-;2708:23;2725:5;2708:23;:::i;:::-;2703:3;2696:36;2623:115;;:::o;2744:218::-;2835:4;2873:2;2862:9;2858:18;2850:26;;2886:69;2952:1;2941:9;2937:17;2928:6;2886:69;:::i;:::-;2744:218;;;;:::o;2968:222::-;3061:4;3099:2;3088:9;3084:18;3076:26;;3112:71;3180:1;3169:9;3165:17;3156:6;3112:71;:::i;:::-;2968:222;;;;:::o;3196:180::-;3244:77;3241:1;3234:88;3341:4;3338:1;3331:15;3365:4;3362:1;3355:15;3382:208;3421:4;3441:19;3458:1;3441:19;:::i;:::-;3436:24;;3474:19;3491:1;3474:19;:::i;:::-;3469:24;;3517:1;3514;3510:9;3502:17;;3541:18;3535:4;3532:28;3529:54;;;3563:18;;:::i;:::-;3529:54;3382:208;;;;:::o;3596:126::-;3633:7;3673:42;3666:5;3662:54;3651:65;;3596:126;;;:::o;3728:96::-;3765:7;3794:24;3812:5;3794:24;:::i;:::-;3783:35;;3728:96;;;:::o;3830:118::-;3917:24;3935:5;3917:24;:::i;:::-;3912:3;3905:37;3830:118;;:::o;3954:332::-;4075:4;4113:2;4102:9;4098:18;4090:26;;4126:71;4194:1;4183:9;4179:17;4170:6;4126:71;:::i;:::-;4207:72;4275:2;4264:9;4260:18;4251:6;4207:72;:::i;:::-;3954:332;;;;;:::o;4292:194::-;4332:4;4352:20;4370:1;4352:20;:::i;:::-;4347:25;;4386:20;4404:1;4386:20;:::i;:::-;4381:25;;4430:1;4427;4423:9;4415:17;;4454:1;4448:4;4445:11;4442:37;;;4459:18;;:::i;:::-;4442:37;4292:194;;;;:::o;4492:410::-;4532:7;4555:20;4573:1;4555:20;:::i;:::-;4550:25;;4589:20;4607:1;4589:20;:::i;:::-;4584:25;;4644:1;4641;4637:9;4666:30;4684:11;4666:30;:::i;:::-;4655:41;;4845:1;4836:7;4832:15;4829:1;4826:22;4806:1;4799:9;4779:83;4756:139;;4875:18;;:::i;:::-;4756:139;4540:362;4492:410;;;;:::o;4908:169::-;4992:11;5026:6;5021:3;5014:19;5066:4;5061:3;5057:14;5042:29;;4908:169;;;;:::o;5083:168::-;5223:20;5219:1;5211:6;5207:14;5200:44;5083:168;:::o;5257:366::-;5399:3;5420:67;5484:2;5479:3;5420:67;:::i;:::-;5413:74;;5496:93;5585:3;5496:93;:::i;:::-;5614:2;5609:3;5605:12;5598:19;;5257:366;;;:::o;5629:419::-;5795:4;5833:2;5822:9;5818:18;5810:26;;5882:9;5876:4;5872:20;5868:1;5857:9;5853:17;5846:47;5910:131;6036:4;5910:131;:::i;:::-;5902:139;;5629:419;;;:::o;6054:180::-;6102:77;6099:1;6092:88;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6240:185;6280:1;6297:20;6315:1;6297:20;:::i;:::-;6292:25;;6331:20;6349:1;6331:20;:::i;:::-;6326:25;;6370:1;6360:35;;6375:18;;:::i;:::-;6360:35;6417:1;6414;6410:9;6405:14;;6240:185;;;;:::o;6431:275::-;6470:7;6493:19;6510:1;6493:19;:::i;:::-;6488:24;;6526:19;6543:1;6526:19;:::i;:::-;6521:24;;6580:1;6577;6573:9;6602:29;6619:11;6602:29;:::i;:::-;6591:40;;6663:11;6654:7;6651:24;6641:58;;6679:18;;:::i;:::-;6641:58;6478:228;6431:275;;;;:::o;6712:205::-;6751:3;6770:19;6787:1;6770:19;:::i;:::-;6765:24;;6803:19;6820:1;6803:19;:::i;:::-;6798:24;;6845:1;6842;6838:9;6831:16;;6868:18;6863:3;6860:27;6857:53;;;6890:18;;:::i;:::-;6857:53;6712:205;;;;:::o;6923:332::-;7044:4;7082:2;7071:9;7067:18;7059:26;;7095:71;7163:1;7152:9;7148:17;7139:6;7095:71;:::i;:::-;7176:72;7244:2;7233:9;7229:18;7220:6;7176:72;:::i;:::-;6923:332;;;;;:::o;7261:116::-;7331:21;7346:5;7331:21;:::i;:::-;7324:5;7321:32;7311:60;;7367:1;7364;7357:12;7311:60;7261:116;:::o;7383:137::-;7437:5;7468:6;7462:13;7453:22;;7484:30;7508:5;7484:30;:::i;:::-;7383:137;;;;:::o;7526:345::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:61;7846:7;7837:6;7826:9;7822:22;7793:61;:::i;:::-;7783:71;;7739:125;7526:345;;;;:::o;7877:176::-;7909:1;7926:20;7944:1;7926:20;:::i;:::-;7921:25;;7960:20;7978:1;7960:20;:::i;:::-;7955:25;;7999:1;7989:35;;8004:18;;:::i;:::-;7989:35;8045:1;8042;8038:9;8033:14;;7877:176;;;;:::o;8059:172::-;8199:24;8195:1;8187:6;8183:14;8176:48;8059:172;:::o;8237:366::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:419::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8862:9;8856:4;8852:20;8848:1;8837:9;8833:17;8826:47;8890:131;9016:4;8890:131;:::i;:::-;8882:139;;8609:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"helper_updateNetworkFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b61067a1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61104780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [382], "ISSVNetworkCore": [864]}, "id": 383, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 292, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 293, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 383, "sourceUnit": 865, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 294, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "124:15:0"}, "id": 295, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 382, "linearizedBaseContracts": [382, 864], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 296, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 301, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 299, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 298, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 301, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 300, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 382, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 302, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 307, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 304, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 307, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 382, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 308, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 313, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 310, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 313, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 309, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 312, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 382, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 314, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 319, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 317, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 316, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 319, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 315, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 318, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 382, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 320, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 325, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 323, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 322, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 325, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 321, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 324, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 382, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 326, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 331, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 328, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 331, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 327, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 330, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 382, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 332, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 337, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 334, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 337, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 336, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 382, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 338, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 343, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 343, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 342, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 382, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 347, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 345, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 347, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 344, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 351, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 349, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 351, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 348, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 355, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 352, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 359, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 357, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 356, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 363, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 363, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 360, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 364, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 370, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 368, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 371, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 377, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 381, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 379, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 378, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 383, "src": "103:2329:0", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [864]}, "id": 865, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 750, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 864, "linearizedBaseContracts": [864], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 760, "members": [{"constant": false, "id": 753, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 755, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 758, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 777, "members": [{"constant": false, "id": 763, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 762, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 769, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 768, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 771, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 775, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 774, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 760, "src": "1129:8:1"}, "referencedDeclaration": 760, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 787, "members": [{"constant": false, "id": 780, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 785, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 864, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 803, "members": [{"constant": false, "id": 790, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 789, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 792, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 796, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 795, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 799, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 798, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 802, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 801, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 864, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 805, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 807, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 809, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 808, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 811, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 810, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 813, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 812, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 815, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 814, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 817, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 816, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 819, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 818, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 821, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 820, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 823, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 822, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 825, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 827, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 826, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 829, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 828, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 831, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 830, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 833, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 832, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 835, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 837, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 836, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 839, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 838, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 841, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 840, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 843, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 842, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 845, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 844, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 847, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 846, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 849, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 848, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 851, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 850, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 853, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 855, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 854, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 857, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 856, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 859, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 858, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 861, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 860, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 863, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 862, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 865, "src": "70:3477:1", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 514, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 384, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 385, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 514, "sourceUnit": 945, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 513, "linearizedBaseContracts": [513], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 392, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 388, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 387, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 386, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "141:10:2"}, "referencedDeclaration": 874, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 390, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 389, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 399, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 396, "id": 398, "nodeType": "Return", "src": "269:19:2"}]}, "id": 400, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 395, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 400, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 394, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 513, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 423, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 412, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 413, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 407, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1054, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 422, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 421, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 419, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 420, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 424, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 402, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 401, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 404, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 406, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 513, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 450, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 434, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 438, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}], "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 436, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 440, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 426, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 429, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1086, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 449, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 448, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 443, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 447, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 451, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 427, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 426, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 451, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 425, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 428, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 513, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 477, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 459, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 460, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 463, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 468, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 467, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 458, "id": 466, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [470], "declarations": [{"constant": false, "id": 470, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 477, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 471, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 454, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 470, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 472, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 473, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 458, "id": 476, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 452, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 478, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 454, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 478, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 453, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 457, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 478, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 456, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 513, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 511, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 487, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 486, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 495, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 490, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 859, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 494, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 496, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 498, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 895, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 502, "indexExpression": {"id": 501, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 503, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 505, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 507, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, {"id": 508, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 506, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$874_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 510, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 512, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 481, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 480, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 479, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1826:10:2"}, "referencedDeclaration": 874, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 483, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 482, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 485, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 513, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 514, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVStorageProtocol": [1009], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 682, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 515, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 516, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 865, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 749, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 518, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 1010, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 681, "linearizedBaseContracts": [681], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 521, "libraryName": {"id": 519, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 529, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 535, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 539, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 540, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 528, "id": 543, "nodeType": "Return", "src": "443:96:3"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 524, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 545, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 523, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 522, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "374:15:3"}, "referencedDeclaration": 986, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 527, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 545, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 526, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 681, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 583, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 553, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 556, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 557, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 559, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 561, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 560, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 564, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 565, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 570, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 568, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 574, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 575, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 578, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "578:15:3"}, "referencedDeclaration": 986, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 549, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 552, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 681, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 608, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 590, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 592, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 594, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 593, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 598, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 603, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 601, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 607, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 609, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 588, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 587, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 609, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 586, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 585, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "956:15:3"}, "referencedDeclaration": 986, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 589, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 681, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 636, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 617, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 621, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 619, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 624, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 627, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 628, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 629, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 631, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 616, "id": 635, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 637, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 613, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 612, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 637, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 611, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 610, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1141:15:3"}, "referencedDeclaration": 986, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 616, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 637, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 681, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 679, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 650, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 651, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 642, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 662, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 664, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 667, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 666, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 665, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 677, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 676, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 671, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 861, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 675, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 678, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 659, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 653, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 656, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 658, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 680, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 645, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 640, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 639, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 638, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1351:15:3"}, "referencedDeclaration": 986, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 642, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 641, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 644, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 643, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 646, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 681, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 682, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 945, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 866, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 867, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 865, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 868, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1162, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 869, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1088, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 874, "members": [{"id": 870, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 871, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 872, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 873, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 921, "members": [{"constant": false, "id": 879, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 878, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 877, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 884, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 883, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 881, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 882, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 889, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 888, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 886, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 895, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 894, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 892, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 891, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1006:10:4"}, "referencedDeclaration": 874, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 893, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 900, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 899, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 897, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 898, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 906, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 905, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 902, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 904, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 903, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 787, "src": "1322:40:4"}, "referencedDeclaration": 787, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$787_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 912, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 911, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 910, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 909, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 777, "src": "1488:24:4"}, "referencedDeclaration": 777, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$777_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 916, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}, "typeName": {"id": 915, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 914, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1087, "src": "1599:6:4"}, "referencedDeclaration": 1087, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 920, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 919, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 918, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1686:16:4"}, "referencedDeclaration": 1093, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 945, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 944, "linearizedBaseContracts": [944], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 931, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 944, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 926, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 925, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 927, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 924, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 942, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [938], "declarations": [{"constant": false, "id": 938, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 942, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 940, "initialValue": {"id": 939, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 938, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 935, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 941, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 943, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 932, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 936, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 935, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 943, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 934, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 933, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 921, "src": "1891:11:4"}, "referencedDeclaration": 921, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 944, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 945, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1009], "StorageProtocol": [986]}, "id": 1010, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 946, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 986, "members": [{"constant": false, "id": 949, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 948, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 952, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 951, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 955, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 954, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 958, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 957, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 961, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 964, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 967, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 970, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 973, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 972, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 976, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 975, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 979, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 978, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 982, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 981, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 985, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 984, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1010, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1009, "linearizedBaseContracts": [1009], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 996, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1009, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 990, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 988, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1007, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1003], "declarations": [{"constant": false, "id": 1003, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1007, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1002, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1005, "initialValue": {"id": 1004, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1003, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1000, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1006, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1008, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 997, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1000, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1008, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 999, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 998, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1711:15:5"}, "referencedDeclaration": 986, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1009, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1010, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "Types256": [748], "Types64": [699]}, "id": 749, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 683, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 686, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 749, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 699, "linearizedBaseContracts": [699], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 697, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 693, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 694, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 692, "id": 696, "nodeType": "Return", "src": "212:30:6"}]}, "id": 698, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 698, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 687, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 698, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 699, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 748, "linearizedBaseContracts": [748], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 727, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 707, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 712, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 711, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 713, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 706, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 717, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 721, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 720, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 747, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 723, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 718, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 705, "id": 726, "nodeType": "Return", "src": "425:50:6"}]}, "id": 728, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 701, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 728, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 704, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 728, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 748, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 746, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 736, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 737, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 735, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 743, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 744, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 734, "id": 745, "nodeType": "Return", "src": "638:12:6"}]}, "id": 747, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 731, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 730, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 747, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 729, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 733, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 747, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 732, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 748, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DAO": [56], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 57, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 57, "sourceUnit": 291, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 290, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 56, "linearizedBaseContracts": [56, 290, 382, 864], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "137:111:7", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "171:2:7", "nodeType": "VariableDeclaration", "scope": 22, "src": "147:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["147:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "147:15:7"}, "referencedDeclaration": 986, "src": "147:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "176:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "195:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "176:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "176:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "147:54:7"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "211:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "214:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "211:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "227:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "239:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "227:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "211:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "211:30:7"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "134:2:7"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "137:0:7"}, "scope": 56, "src": "123:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "306:43:7", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "338:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "316:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$56", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "321:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "316:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "316:26:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "316:26:7"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "263:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "294:3:7", "nodeType": "VariableDeclaration", "scope": 35, "src": "286:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "286:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "285:13:7"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "306:0:7"}, "scope": 56, "src": "254:95:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 54, "nodeType": "Block", "src": "415:106:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "449:2:7", "nodeType": "VariableDeclaration", "scope": 54, "src": "425:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["425:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "425:15:7"}, "referencedDeclaration": 986, "src": "425:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "454:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "473:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "454:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "454:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "425:54:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 48, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "496:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "499:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "496:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "512:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "496:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 47, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "489:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "489:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 53, "nodeType": "ExpressionStatement", "src": "489:25:7"}]}, "functionSelector": "23eb9a03", "id": 55, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_networkfee", "nameLocation": "364:26:7", "nodeType": "FunctionDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [], "src": "390:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 38, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 55, "src": "409:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 37, "name": "bool", "nodeType": "ElementaryTypeName", "src": "409:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "408:6:7"}, "scope": 56, "src": "355:166:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 57, "src": "94:429:7", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:479:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 291, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 58, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 59, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 383, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 60, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 749, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 61, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 682, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 62, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 514, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 63, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 382, "src": "233:7:8"}, "id": 64, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 290, "linearizedBaseContracts": [290, 382, 864], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 67, "libraryName": {"id": 65, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 699, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 66, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 70, "libraryName": {"id": 68, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 74, "libraryName": {"id": 71, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 681, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 73, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 72, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "332:15:8"}, "referencedDeclaration": 986, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 77, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 290, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 76, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [301], "body": {"id": 108, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [85], "declarations": [{"constant": false, "id": 85, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 84, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 83, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "491:15:8"}, "referencedDeclaration": 986, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 89, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 86, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [91], "declarations": [{"constant": false, "id": 91, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 90, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 94, "initialValue": {"expression": {"id": 92, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 93, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 98, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 584, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 99, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 100, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 102, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 698, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 105, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 101, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 107, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 109, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 81, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 80, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 79, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 109, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 78, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 82, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 290, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [307], "body": {"id": 164, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [117], "declarations": [{"constant": false, "id": 117, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 116, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 115, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "773:15:8"}, "referencedDeclaration": 986, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 118, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 122, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 127, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 124, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [129], "declarations": [{"constant": false, "id": 129, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 128, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 133, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 637, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 134, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 135, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 141, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 140, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 137, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 139, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 142, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 144, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 145, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 146, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 149, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 153, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 155, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 150, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$513_$", "typeString": "type(library CoreLib)"}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 424, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 157, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 159, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 160, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 158, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 163, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 165, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 113, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 112, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 111, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 165, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 290, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [313], "body": {"id": 183, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 171, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 982, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 176, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 178, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 180, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 179, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 347, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 184, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 169, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 168, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 167, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 184, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 166, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 170, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 290, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [319], "body": {"id": 202, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 190, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 976, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 195, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 197, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 199, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 198, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 351, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 201, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 203, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 188, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 186, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 203, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 185, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 189, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 290, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [325], "body": {"id": 221, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 209, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 979, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 214, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 218, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 217, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 207, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 205, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 222, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 204, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 208, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 290, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [331], "body": {"id": 248, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 229, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 235, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 234, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 231, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 233, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 236, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 240, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 970, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 241, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 243, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 245, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 244, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 247, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 249, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 226, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 225, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 224, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 249, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 227, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 290, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [337], "body": {"id": 269, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 255, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 973, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 260, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 266, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 265, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 363, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 268, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 253, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 251, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 270, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 250, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 254, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 290, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [343], "body": {"id": 288, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 276, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 985, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 281, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 283, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 285, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 284, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 381, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 287, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 289, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 274, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 273, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 289, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 275, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 290, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 291, "src": "214:2430:8", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1087]}, "id": 1088, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1011, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1012, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1087, "linearizedBaseContracts": [1087], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1013, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1021, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1020, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1015, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1014, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1017, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1016, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1019, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1030, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1029, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1026, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1028, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1031, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1036, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1032, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1035, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1036, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1087, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1037, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1044, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1038, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1044, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1087, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1045, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1054, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1046, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1049, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1051, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1087, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1055, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1064, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1059, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1058, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1061, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1087, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1065, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1074, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1069, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1073, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1072, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1071, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1087, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1075, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1086, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1077, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1076, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1079, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1078, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1081, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1080, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1083, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1087, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1088, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1161]}, "id": 1162, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1089, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1090, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1161, "linearizedBaseContracts": [1161], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1093, "members": [{"constant": false, "id": 1092, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1093, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1161, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1104, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1101, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1100, "id": 1103, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1105, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1105, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1095, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1094, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "844:7:10"}, "referencedDeclaration": 1093, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1105, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1161, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1118, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1117, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1111, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1108, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1116, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1119, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1108, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1119, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1107, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1106, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "964:7:10"}, "referencedDeclaration": 1093, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1161, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1126], "declarations": [{"constant": false, "id": 1126, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1146, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1125, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1129, "initialValue": {"expression": {"id": 1127, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1128, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1131, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1130, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1136, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1145, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1137, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1139, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1144, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1122, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1121, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1120, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1093:7:10"}, "referencedDeclaration": 1093, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1161, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1159, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1153, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1158, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1160, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1151, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1150, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1149, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1148, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1324:7:10"}, "referencedDeclaration": 1093, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1161, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1162, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:429:7:-:0;;;123:125;;;;;;;;;;147:26;176:25;:23;;;;;:25;;:::i;:::-;147:54;;227:14;211:2;:13;;;:30;;;;;;;;;;;;;;;;;;137:111;94:429;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:429:7:-;;;;;;;", "srcmap-runtime": "94:429:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;355:166:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1216:213:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;254:95:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;355:166:7:-;409:4;425:26;454:25;:23;:25::i;:::-;425:54;;512:1;496:2;:13;;;;;;;;;;;;:17;;;489:25;;;;:::i;:::-;;415:106;355:166;:::o;1216:213:8:-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;254:95:7:-;316:4;:21;;;338:3;316:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;254:95;:::o;2461:181:8:-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:101::-;1488:7;1528:18;1521:5;1517:30;1506:41;;1452:101;;;:::o;1559:120::-;1631:23;1648:5;1631:23;:::i;:::-;1624:5;1621:34;1611:62;;1669:1;1666;1659:12;1611:62;1559:120;:::o;1685:137::-;1730:5;1768:6;1755:20;1746:29;;1784:32;1810:5;1784:32;:::i;:::-;1685:137;;;;:::o;1828:327::-;1886:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:119;;;1941:79;;:::i;:::-;1903:119;2061:1;2086:52;2130:7;2121:6;2110:9;2106:22;2086:52;:::i;:::-;2076:62;;2032:116;1828:327;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:180::-;2671:77;2668:1;2661:88;2768:4;2765:1;2758:15;2792:4;2789:1;2782:15;2809:115;2894:23;2911:5;2894:23;:::i;:::-;2889:3;2882:36;2809:115;;:::o;2930:218::-;3021:4;3059:2;3048:9;3044:18;3036:26;;3072:69;3138:1;3127:9;3123:17;3114:6;3072:69;:::i;:::-;2930:218;;;;:::o;3154:222::-;3247:4;3285:2;3274:9;3270:18;3262:26;;3298:71;3366:1;3355:9;3351:17;3342:6;3298:71;:::i;:::-;3154:222;;;;:::o;3382:180::-;3430:77;3427:1;3420:88;3527:4;3524:1;3517:15;3551:4;3548:1;3541:15;3568:208;3607:4;3627:19;3644:1;3627:19;:::i;:::-;3622:24;;3660:19;3677:1;3660:19;:::i;:::-;3655:24;;3703:1;3700;3696:9;3688:17;;3727:18;3721:4;3718:28;3715:54;;;3749:18;;:::i;:::-;3715:54;3568:208;;;;:::o;3782:126::-;3819:7;3859:42;3852:5;3848:54;3837:65;;3782:126;;;:::o;3914:96::-;3951:7;3980:24;3998:5;3980:24;:::i;:::-;3969:35;;3914:96;;;:::o;4016:118::-;4103:24;4121:5;4103:24;:::i;:::-;4098:3;4091:37;4016:118;;:::o;4140:332::-;4261:4;4299:2;4288:9;4284:18;4276:26;;4312:71;4380:1;4369:9;4365:17;4356:6;4312:71;:::i;:::-;4393:72;4461:2;4450:9;4446:18;4437:6;4393:72;:::i;:::-;4140:332;;;;;:::o;4478:194::-;4518:4;4538:20;4556:1;4538:20;:::i;:::-;4533:25;;4572:20;4590:1;4572:20;:::i;:::-;4567:25;;4616:1;4613;4609:9;4601:17;;4640:1;4634:4;4631:11;4628:37;;;4645:18;;:::i;:::-;4628:37;4478:194;;;;:::o;4678:410::-;4718:7;4741:20;4759:1;4741:20;:::i;:::-;4736:25;;4775:20;4793:1;4775:20;:::i;:::-;4770:25;;4830:1;4827;4823:9;4852:30;4870:11;4852:30;:::i;:::-;4841:41;;5031:1;5022:7;5018:15;5015:1;5012:22;4992:1;4985:9;4965:83;4942:139;;5061:18;;:::i;:::-;4942:139;4726:362;4678:410;;;;:::o;5094:169::-;5178:11;5212:6;5207:3;5200:19;5252:4;5247:3;5243:14;5228:29;;5094:169;;;;:::o;5269:168::-;5409:20;5405:1;5397:6;5393:14;5386:44;5269:168;:::o;5443:366::-;5585:3;5606:67;5670:2;5665:3;5606:67;:::i;:::-;5599:74;;5682:93;5771:3;5682:93;:::i;:::-;5800:2;5795:3;5791:12;5784:19;;5443:366;;;:::o;5815:419::-;5981:4;6019:2;6008:9;6004:18;5996:26;;6068:9;6062:4;6058:20;6054:1;6043:9;6039:17;6032:47;6096:131;6222:4;6096:131;:::i;:::-;6088:139;;5815:419;;;:::o;6240:180::-;6288:77;6285:1;6278:88;6385:4;6382:1;6375:15;6409:4;6406:1;6399:15;6426:185;6466:1;6483:20;6501:1;6483:20;:::i;:::-;6478:25;;6517:20;6535:1;6517:20;:::i;:::-;6512:25;;6556:1;6546:35;;6561:18;;:::i;:::-;6546:35;6603:1;6600;6596:9;6591:14;;6426:185;;;;:::o;6617:275::-;6656:7;6679:19;6696:1;6679:19;:::i;:::-;6674:24;;6712:19;6729:1;6712:19;:::i;:::-;6707:24;;6766:1;6763;6759:9;6788:29;6805:11;6788:29;:::i;:::-;6777:40;;6849:11;6840:7;6837:24;6827:58;;6865:18;;:::i;:::-;6827:58;6664:228;6617:275;;;;:::o;6898:205::-;6937:3;6956:19;6973:1;6956:19;:::i;:::-;6951:24;;6989:19;7006:1;6989:19;:::i;:::-;6984:24;;7031:1;7028;7024:9;7017:16;;7054:18;7049:3;7046:27;7043:53;;;7076:18;;:::i;:::-;7043:53;6898:205;;;;:::o;7109:332::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:71;7349:1;7338:9;7334:17;7325:6;7281:71;:::i;:::-;7362:72;7430:2;7419:9;7415:18;7406:6;7362:72;:::i;:::-;7109:332;;;;;:::o;7447:116::-;7517:21;7532:5;7517:21;:::i;:::-;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;7497:60;7447:116;:::o;7569:137::-;7623:5;7654:6;7648:13;7639:22;;7670:30;7694:5;7670:30;:::i;:::-;7569:137;;;;:::o;7712:345::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:61;8032:7;8023:6;8012:9;8008:22;7979:61;:::i;:::-;7969:71;;7925:125;7712:345;;;;:::o;8063:176::-;8095:1;8112:20;8130:1;8112:20;:::i;:::-;8107:25;;8146:20;8164:1;8146:20;:::i;:::-;8141:25;;8185:1;8175:35;;8190:18;;:::i;:::-;8175:35;8231:1;8228;8224:9;8219:14;;8063:176;;;;:::o;8245:172::-;8385:24;8381:1;8373:6;8369:14;8362:48;8245:172;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_networkfee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6106cf1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b6110cb80620001146000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml index f3cee3f2..40e739b4 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,10 +1,8 @@ testMode: assertion -testLimit: 2000 +testLimit: 5000 corpusDir: 'echidna-corpus' cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] format: text -prefix: 'echidna_' # contractAddr: '0xContractAddress' # filterBlacklist: false -# filterFunctions: ["Operators.registerOperator(bytes,uint256)", "setOperatorWhitelist(uint64,address)"] From 9838dc15b2d9e4c76a6cc8901be9c938ce80cfb0 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 26 Jan 2024 10:59:49 +0100 Subject: [PATCH 09/19] fix: fee checking in updateNetworkFee --- contracts/modules/SSVDAO.sol | 2 ++ crytic-export/combined_solc.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/modules/SSVDAO.sol b/contracts/modules/SSVDAO.sol index cec7a6cf..518012fb 100644 --- a/contracts/modules/SSVDAO.sol +++ b/contracts/modules/SSVDAO.sol @@ -15,6 +15,8 @@ contract SSVDAO is ISSVDAO { uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; function updateNetworkFee(uint256 fee) external override { + if (fee == 0) revert FeeTooLow(); + StorageProtocol storage sp = SSVStorageProtocol.load(); uint64 previousFee = sp.networkFee; diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 488318df..deb4012f 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [382], "ISSVNetworkCore": [864]}, "id": 383, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 292, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 293, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 383, "sourceUnit": 865, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 294, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "124:15:0"}, "id": 295, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 382, "linearizedBaseContracts": [382, 864], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 296, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 301, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 299, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 298, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 301, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 300, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 382, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 302, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 307, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 304, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 307, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 382, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 308, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 313, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 310, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 313, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 309, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 312, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 382, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 314, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 319, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 317, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 316, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 319, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 315, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 318, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 382, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 320, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 325, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 323, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 322, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 325, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 321, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 324, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 382, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 326, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 331, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 328, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 331, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 327, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 330, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 382, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 332, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 337, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 334, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 337, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 336, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 382, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 338, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 343, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 343, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 342, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 382, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 347, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 345, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 347, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 344, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 351, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 349, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 351, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 348, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 355, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 352, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 359, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 357, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 356, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 363, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 363, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 360, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 364, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 370, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 368, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 371, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 377, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 381, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 379, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 378, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 383, "src": "103:2329:0", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [864]}, "id": 865, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 750, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 864, "linearizedBaseContracts": [864], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 760, "members": [{"constant": false, "id": 753, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 755, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 758, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 777, "members": [{"constant": false, "id": 763, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 762, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 769, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 768, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 771, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 775, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 774, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 760, "src": "1129:8:1"}, "referencedDeclaration": 760, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 787, "members": [{"constant": false, "id": 780, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 785, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 864, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 803, "members": [{"constant": false, "id": 790, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 789, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 792, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 796, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 795, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 799, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 798, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 802, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 801, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 864, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 805, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 807, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 809, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 808, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 811, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 810, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 813, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 812, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 815, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 814, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 817, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 816, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 819, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 818, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 821, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 820, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 823, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 822, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 825, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 827, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 826, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 829, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 828, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 831, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 830, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 833, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 832, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 835, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 837, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 836, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 839, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 838, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 841, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 840, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 843, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 842, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 845, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 844, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 847, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 846, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 849, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 848, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 851, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 850, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 853, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 855, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 854, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 857, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 856, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 859, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 858, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 861, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 860, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 863, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 862, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 865, "src": "70:3477:1", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 514, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 384, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 385, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 514, "sourceUnit": 945, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 513, "linearizedBaseContracts": [513], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 392, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 388, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 387, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 386, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "141:10:2"}, "referencedDeclaration": 874, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 390, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 389, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 399, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 396, "id": 398, "nodeType": "Return", "src": "269:19:2"}]}, "id": 400, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 395, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 400, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 394, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 513, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 423, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 412, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 413, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 407, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1054, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 422, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 421, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 419, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 420, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 424, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 402, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 401, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 404, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 406, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 513, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 450, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 434, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 438, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}], "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 436, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 440, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 426, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 429, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1086, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 449, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 448, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 443, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 447, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 451, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 427, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 426, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 451, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 425, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 428, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 513, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 477, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 459, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 460, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 463, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 468, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 467, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 458, "id": 466, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [470], "declarations": [{"constant": false, "id": 470, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 477, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 471, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 454, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 470, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 472, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 473, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 458, "id": 476, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 452, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 478, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 454, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 478, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 453, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 457, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 478, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 456, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 513, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 511, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 487, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 486, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 495, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 490, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 859, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 494, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 496, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 498, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 895, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 502, "indexExpression": {"id": 501, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 503, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 505, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 507, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, {"id": 508, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 506, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$874_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 510, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 512, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 481, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 480, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 479, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1826:10:2"}, "referencedDeclaration": 874, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 483, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 482, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 485, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 513, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 514, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVStorageProtocol": [1009], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 682, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 515, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 516, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 865, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 749, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 518, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 1010, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 681, "linearizedBaseContracts": [681], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 521, "libraryName": {"id": 519, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 529, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 535, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 539, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 540, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 528, "id": 543, "nodeType": "Return", "src": "443:96:3"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 524, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 545, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 523, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 522, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "374:15:3"}, "referencedDeclaration": 986, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 527, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 545, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 526, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 681, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 583, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 553, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 556, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 557, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 559, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 561, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 560, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 564, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 565, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 570, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 568, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 574, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 575, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 578, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "578:15:3"}, "referencedDeclaration": 986, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 549, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 552, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 681, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 608, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 590, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 592, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 594, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 593, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 598, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 603, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 601, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 607, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 609, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 588, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 587, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 609, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 586, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 585, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "956:15:3"}, "referencedDeclaration": 986, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 589, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 681, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 636, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 617, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 621, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 619, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 624, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 627, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 628, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 629, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 631, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 616, "id": 635, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 637, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 613, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 612, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 637, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 611, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 610, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1141:15:3"}, "referencedDeclaration": 986, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 616, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 637, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 681, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 679, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 650, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 651, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 642, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 662, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 664, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 667, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 666, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 665, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 677, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 676, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 671, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 861, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 675, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 678, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 659, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 653, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 656, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 658, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 680, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 645, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 640, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 639, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 638, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1351:15:3"}, "referencedDeclaration": 986, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 642, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 641, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 644, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 643, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 646, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 681, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 682, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 945, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 866, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 867, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 865, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 868, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1162, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 869, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1088, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 874, "members": [{"id": 870, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 871, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 872, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 873, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 921, "members": [{"constant": false, "id": 879, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 878, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 877, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 884, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 883, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 881, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 882, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 889, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 888, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 886, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 895, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 894, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 892, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 891, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1006:10:4"}, "referencedDeclaration": 874, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 893, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 900, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 899, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 897, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 898, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 906, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 905, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 902, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 904, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 903, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 787, "src": "1322:40:4"}, "referencedDeclaration": 787, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$787_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 912, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 911, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 910, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 909, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 777, "src": "1488:24:4"}, "referencedDeclaration": 777, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$777_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 916, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}, "typeName": {"id": 915, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 914, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1087, "src": "1599:6:4"}, "referencedDeclaration": 1087, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 920, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 919, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 918, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1686:16:4"}, "referencedDeclaration": 1093, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 945, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 944, "linearizedBaseContracts": [944], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 931, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 944, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 926, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 925, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 927, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 924, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 942, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [938], "declarations": [{"constant": false, "id": 938, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 942, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 940, "initialValue": {"id": 939, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 938, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 935, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 941, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 943, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 932, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 936, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 935, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 943, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 934, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 933, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 921, "src": "1891:11:4"}, "referencedDeclaration": 921, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 944, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 945, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1009], "StorageProtocol": [986]}, "id": 1010, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 946, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 986, "members": [{"constant": false, "id": 949, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 948, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 952, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 951, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 955, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 954, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 958, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 957, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 961, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 964, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 967, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 970, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 973, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 972, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 976, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 975, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 979, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 978, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 982, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 981, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 985, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 984, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1010, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1009, "linearizedBaseContracts": [1009], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 996, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1009, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 990, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 988, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1007, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1003], "declarations": [{"constant": false, "id": 1003, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1007, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1002, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1005, "initialValue": {"id": 1004, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1003, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1000, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1006, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1008, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 997, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1000, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1008, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 999, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 998, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1711:15:5"}, "referencedDeclaration": 986, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1009, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1010, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "Types256": [748], "Types64": [699]}, "id": 749, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 683, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 686, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 749, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 699, "linearizedBaseContracts": [699], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 697, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 693, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 694, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 692, "id": 696, "nodeType": "Return", "src": "212:30:6"}]}, "id": 698, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 698, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 687, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 698, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 699, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 748, "linearizedBaseContracts": [748], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 727, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 707, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 712, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 711, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 713, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 706, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 717, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 721, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 720, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 747, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 723, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 718, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 705, "id": 726, "nodeType": "Return", "src": "425:50:6"}]}, "id": 728, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 701, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 728, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 704, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 728, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 748, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 746, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 736, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 737, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 735, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 743, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 744, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 734, "id": 745, "nodeType": "Return", "src": "638:12:6"}]}, "id": 747, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 731, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 730, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 747, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 729, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 733, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 747, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 732, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 748, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DAO": [56], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 57, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 57, "sourceUnit": 291, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 290, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 56, "linearizedBaseContracts": [56, 290, 382, 864], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "137:111:7", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "171:2:7", "nodeType": "VariableDeclaration", "scope": 22, "src": "147:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["147:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "147:15:7"}, "referencedDeclaration": 986, "src": "147:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "176:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "195:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "176:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "176:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "147:54:7"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "211:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "214:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "211:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "227:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "239:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "227:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "211:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "211:30:7"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "134:2:7"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "137:0:7"}, "scope": 56, "src": "123:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "306:43:7", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "338:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "316:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$56", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "321:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "316:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "316:26:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "316:26:7"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "263:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "294:3:7", "nodeType": "VariableDeclaration", "scope": 35, "src": "286:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "286:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "285:13:7"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "306:0:7"}, "scope": 56, "src": "254:95:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 54, "nodeType": "Block", "src": "415:106:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "449:2:7", "nodeType": "VariableDeclaration", "scope": 54, "src": "425:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["425:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "425:15:7"}, "referencedDeclaration": 986, "src": "425:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "454:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "473:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "454:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "454:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "425:54:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 48, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "496:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "499:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "496:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "512:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "496:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 47, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "489:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "489:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 53, "nodeType": "ExpressionStatement", "src": "489:25:7"}]}, "functionSelector": "23eb9a03", "id": 55, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_networkfee", "nameLocation": "364:26:7", "nodeType": "FunctionDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [], "src": "390:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 38, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 55, "src": "409:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 37, "name": "bool", "nodeType": "ElementaryTypeName", "src": "409:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "408:6:7"}, "scope": 56, "src": "355:166:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 57, "src": "94:429:7", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:479:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 291, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 58, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 59, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 383, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 60, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 749, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 61, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 682, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 62, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 514, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 63, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 382, "src": "233:7:8"}, "id": 64, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 290, "linearizedBaseContracts": [290, 382, 864], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 67, "libraryName": {"id": 65, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 699, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 66, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 70, "libraryName": {"id": 68, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 74, "libraryName": {"id": 71, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 681, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 73, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 72, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "332:15:8"}, "referencedDeclaration": 986, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 77, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 290, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 76, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [301], "body": {"id": 108, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [85], "declarations": [{"constant": false, "id": 85, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 84, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 83, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "491:15:8"}, "referencedDeclaration": 986, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 89, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 86, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [91], "declarations": [{"constant": false, "id": 91, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 90, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 94, "initialValue": {"expression": {"id": 92, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 93, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 98, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 584, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 99, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 100, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 102, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 698, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 105, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 101, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 107, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 109, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 81, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 80, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 79, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 109, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 78, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 82, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 290, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [307], "body": {"id": 164, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [117], "declarations": [{"constant": false, "id": 117, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 116, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 115, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "773:15:8"}, "referencedDeclaration": 986, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 118, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 122, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 127, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 124, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [129], "declarations": [{"constant": false, "id": 129, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 128, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 133, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 637, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 134, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 135, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 141, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 140, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 137, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 139, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 142, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 144, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 145, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 146, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 149, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 153, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 155, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 150, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$513_$", "typeString": "type(library CoreLib)"}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 424, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 157, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 159, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 160, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 158, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 163, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 165, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 113, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 112, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 111, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 165, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 290, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [313], "body": {"id": 183, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 171, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 982, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 176, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 178, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 180, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 179, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 347, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 184, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 169, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 168, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 167, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 184, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 166, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 170, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 290, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [319], "body": {"id": 202, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 190, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 976, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 195, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 197, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 199, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 198, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 351, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 201, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 203, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 188, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 186, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 203, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 185, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 189, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 290, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [325], "body": {"id": 221, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 209, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 979, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 214, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 218, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 217, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 207, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 205, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 222, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 204, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 208, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 290, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [331], "body": {"id": 248, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 229, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 235, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 234, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 231, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 233, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 236, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 240, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 970, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 241, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 243, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 245, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 244, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 247, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 249, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 226, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 225, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 224, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 249, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 227, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 290, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [337], "body": {"id": 269, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 255, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 973, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 260, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 266, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 265, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 363, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 268, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 253, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 251, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 270, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 250, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 254, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 290, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [343], "body": {"id": 288, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 276, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 985, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 281, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 283, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 285, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 284, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 381, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 287, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 289, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 274, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 273, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 289, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 275, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 290, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 291, "src": "214:2430:8", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1087]}, "id": 1088, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1011, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1012, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1087, "linearizedBaseContracts": [1087], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1013, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1021, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1020, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1015, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1014, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1017, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1016, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1019, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1030, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1029, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1026, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1028, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1031, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1036, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1032, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1035, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1036, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1087, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1037, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1044, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1038, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1044, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1087, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1045, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1054, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1046, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1049, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1051, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1087, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1055, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1064, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1059, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1058, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1061, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1087, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1065, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1074, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1069, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1073, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1072, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1071, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1087, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1075, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1086, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1077, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1076, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1079, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1078, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1081, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1080, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1083, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1087, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1088, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1161]}, "id": 1162, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1089, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1090, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1161, "linearizedBaseContracts": [1161], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1093, "members": [{"constant": false, "id": 1092, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1093, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1161, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1104, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1101, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1100, "id": 1103, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1105, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1105, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1095, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1094, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "844:7:10"}, "referencedDeclaration": 1093, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1105, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1161, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1118, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1117, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1111, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1108, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1116, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1119, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1108, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1119, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1107, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1106, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "964:7:10"}, "referencedDeclaration": 1093, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1161, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1126], "declarations": [{"constant": false, "id": 1126, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1146, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1125, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1129, "initialValue": {"expression": {"id": 1127, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1128, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1131, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1130, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1136, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1145, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1137, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1139, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1144, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1122, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1121, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1120, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1093:7:10"}, "referencedDeclaration": 1093, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1161, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1159, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1153, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1158, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1160, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1151, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1150, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1149, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1148, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1324:7:10"}, "referencedDeclaration": 1093, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1161, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1162, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:429:7:-:0;;;123:125;;;;;;;;;;147:26;176:25;:23;;;;;:25;;:::i;:::-;147:54;;227:14;211:2;:13;;;:30;;;;;;;;;;;;;;;;;;137:111;94:429;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:429:7:-;;;;;;;", "srcmap-runtime": "94:429:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;355:166:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1216:213:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;254:95:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;355:166:7:-;409:4;425:26;454:25;:23;:25::i;:::-;425:54;;512:1;496:2;:13;;;;;;;;;;;;:17;;;489:25;;;;:::i;:::-;;415:106;355:166;:::o;1216:213:8:-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;254:95:7:-;316:4;:21;;;338:3;316:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;254:95;:::o;2461:181:8:-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:101::-;1488:7;1528:18;1521:5;1517:30;1506:41;;1452:101;;;:::o;1559:120::-;1631:23;1648:5;1631:23;:::i;:::-;1624:5;1621:34;1611:62;;1669:1;1666;1659:12;1611:62;1559:120;:::o;1685:137::-;1730:5;1768:6;1755:20;1746:29;;1784:32;1810:5;1784:32;:::i;:::-;1685:137;;;;:::o;1828:327::-;1886:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:119;;;1941:79;;:::i;:::-;1903:119;2061:1;2086:52;2130:7;2121:6;2110:9;2106:22;2086:52;:::i;:::-;2076:62;;2032:116;1828:327;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:180::-;2671:77;2668:1;2661:88;2768:4;2765:1;2758:15;2792:4;2789:1;2782:15;2809:115;2894:23;2911:5;2894:23;:::i;:::-;2889:3;2882:36;2809:115;;:::o;2930:218::-;3021:4;3059:2;3048:9;3044:18;3036:26;;3072:69;3138:1;3127:9;3123:17;3114:6;3072:69;:::i;:::-;2930:218;;;;:::o;3154:222::-;3247:4;3285:2;3274:9;3270:18;3262:26;;3298:71;3366:1;3355:9;3351:17;3342:6;3298:71;:::i;:::-;3154:222;;;;:::o;3382:180::-;3430:77;3427:1;3420:88;3527:4;3524:1;3517:15;3551:4;3548:1;3541:15;3568:208;3607:4;3627:19;3644:1;3627:19;:::i;:::-;3622:24;;3660:19;3677:1;3660:19;:::i;:::-;3655:24;;3703:1;3700;3696:9;3688:17;;3727:18;3721:4;3718:28;3715:54;;;3749:18;;:::i;:::-;3715:54;3568:208;;;;:::o;3782:126::-;3819:7;3859:42;3852:5;3848:54;3837:65;;3782:126;;;:::o;3914:96::-;3951:7;3980:24;3998:5;3980:24;:::i;:::-;3969:35;;3914:96;;;:::o;4016:118::-;4103:24;4121:5;4103:24;:::i;:::-;4098:3;4091:37;4016:118;;:::o;4140:332::-;4261:4;4299:2;4288:9;4284:18;4276:26;;4312:71;4380:1;4369:9;4365:17;4356:6;4312:71;:::i;:::-;4393:72;4461:2;4450:9;4446:18;4437:6;4393:72;:::i;:::-;4140:332;;;;;:::o;4478:194::-;4518:4;4538:20;4556:1;4538:20;:::i;:::-;4533:25;;4572:20;4590:1;4572:20;:::i;:::-;4567:25;;4616:1;4613;4609:9;4601:17;;4640:1;4634:4;4631:11;4628:37;;;4645:18;;:::i;:::-;4628:37;4478:194;;;;:::o;4678:410::-;4718:7;4741:20;4759:1;4741:20;:::i;:::-;4736:25;;4775:20;4793:1;4775:20;:::i;:::-;4770:25;;4830:1;4827;4823:9;4852:30;4870:11;4852:30;:::i;:::-;4841:41;;5031:1;5022:7;5018:15;5015:1;5012:22;4992:1;4985:9;4965:83;4942:139;;5061:18;;:::i;:::-;4942:139;4726:362;4678:410;;;;:::o;5094:169::-;5178:11;5212:6;5207:3;5200:19;5252:4;5247:3;5243:14;5228:29;;5094:169;;;;:::o;5269:168::-;5409:20;5405:1;5397:6;5393:14;5386:44;5269:168;:::o;5443:366::-;5585:3;5606:67;5670:2;5665:3;5606:67;:::i;:::-;5599:74;;5682:93;5771:3;5682:93;:::i;:::-;5800:2;5795:3;5791:12;5784:19;;5443:366;;;:::o;5815:419::-;5981:4;6019:2;6008:9;6004:18;5996:26;;6068:9;6062:4;6058:20;6054:1;6043:9;6039:17;6032:47;6096:131;6222:4;6096:131;:::i;:::-;6088:139;;5815:419;;;:::o;6240:180::-;6288:77;6285:1;6278:88;6385:4;6382:1;6375:15;6409:4;6406:1;6399:15;6426:185;6466:1;6483:20;6501:1;6483:20;:::i;:::-;6478:25;;6517:20;6535:1;6517:20;:::i;:::-;6512:25;;6556:1;6546:35;;6561:18;;:::i;:::-;6546:35;6603:1;6600;6596:9;6591:14;;6426:185;;;;:::o;6617:275::-;6656:7;6679:19;6696:1;6679:19;:::i;:::-;6674:24;;6712:19;6729:1;6712:19;:::i;:::-;6707:24;;6766:1;6763;6759:9;6788:29;6805:11;6788:29;:::i;:::-;6777:40;;6849:11;6840:7;6837:24;6827:58;;6865:18;;:::i;:::-;6827:58;6664:228;6617:275;;;;:::o;6898:205::-;6937:3;6956:19;6973:1;6956:19;:::i;:::-;6951:24;;6989:19;7006:1;6989:19;:::i;:::-;6984:24;;7031:1;7028;7024:9;7017:16;;7054:18;7049:3;7046:27;7043:53;;;7076:18;;:::i;:::-;7043:53;6898:205;;;;:::o;7109:332::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:71;7349:1;7338:9;7334:17;7325:6;7281:71;:::i;:::-;7362:72;7430:2;7419:9;7415:18;7406:6;7362:72;:::i;:::-;7109:332;;;;;:::o;7447:116::-;7517:21;7532:5;7517:21;:::i;:::-;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;7497:60;7447:116;:::o;7569:137::-;7623:5;7654:6;7648:13;7639:22;;7670:30;7694:5;7670:30;:::i;:::-;7569:137;;;;:::o;7712:345::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:61;8032:7;8023:6;8012:9;8008:22;7979:61;:::i;:::-;7969:71;;7925:125;7712:345;;;;:::o;8063:176::-;8095:1;8112:20;8130:1;8112:20;:::i;:::-;8107:25;;8146:20;8164:1;8146:20;:::i;:::-;8141:25;;8185:1;8175:35;;8190:18;;:::i;:::-;8175:35;8231:1;8228;8224:9;8219:14;;8063:176;;;;:::o;8245:172::-;8385:24;8381:1;8373:6;8369:14;8362:48;8245:172;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_networkfee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6106cf1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b6110cb80620001146000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [389], "ISSVNetworkCore": [871]}, "id": 390, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 299, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 300, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 390, "sourceUnit": 872, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 301, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 871, "src": "124:15:0"}, "id": 302, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 389, "linearizedBaseContracts": [389, 871], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 303, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 308, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 306, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 305, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 308, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 304, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 307, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 389, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 309, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 314, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 312, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 311, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 314, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 310, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 313, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 389, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 315, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 320, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 317, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 320, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 316, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 319, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 389, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 321, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 326, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 324, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 323, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 326, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 322, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 325, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 389, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 327, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 332, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 330, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 329, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 328, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 331, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 389, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 333, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 338, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 335, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 338, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 337, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 389, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 339, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 344, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 342, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 341, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 344, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 340, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 343, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 389, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 345, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 350, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 348, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 350, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 349, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 389, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 354, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 353, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 352, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 354, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 351, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 358, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 355, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 362, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 359, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 366, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 365, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 364, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 363, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 370, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 371, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 377, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 378, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 384, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 380, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 384, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 379, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 382, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 384, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 381, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 388, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 387, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 386, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 388, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 385, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 390, "src": "103:2329:0", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [871]}, "id": 872, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 757, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 871, "linearizedBaseContracts": [871], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 767, "members": [{"constant": false, "id": 760, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 759, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 763, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 871, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 784, "members": [{"constant": false, "id": 770, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 769, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 775, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 778, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 782, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 781, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 767, "src": "1129:8:1"}, "referencedDeclaration": 767, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 871, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 794, "members": [{"constant": false, "id": 787, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 786, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 790, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 789, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 792, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 871, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 810, "members": [{"constant": false, "id": 797, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 796, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 800, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 799, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 803, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 806, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 805, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 809, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 808, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 871, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 812, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 814, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 816, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 818, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 820, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 822, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 824, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 826, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 828, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 830, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 832, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 834, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 836, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 838, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 840, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 842, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 844, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 846, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 848, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 850, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 849, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 852, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 851, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 854, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 853, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 856, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 855, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 858, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 857, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 860, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 859, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 862, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 861, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 864, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 863, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 866, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 865, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 868, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 867, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 870, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 869, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 872, "src": "70:3477:1", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "IERC20": [1094], "ISSVNetworkCore": [871], "SSVModules": [881], "SSVStorage": [951], "StorageData": [928]}, "id": 521, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 391, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 392, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 521, "sourceUnit": 952, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 520, "linearizedBaseContracts": [520], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 399, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 398, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 395, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 399, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, "typeName": {"id": 394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 393, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "141:10:2"}, "referencedDeclaration": 881, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 397, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 399, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 396, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 406, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 404, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 403, "id": 405, "nodeType": "Return", "src": "269:19:2"}]}, "id": 407, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 400, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 402, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 407, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 401, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 520, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 430, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 419, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 420, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 414, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 923, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1061, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 429, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 428, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 423, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 854, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 427, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 431, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 409, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 431, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 408, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 431, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 413, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 520, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 457, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 441, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 445, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$520", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$520", "typeString": "library CoreLib"}], "id": 444, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 443, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 447, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 433, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 436, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 439, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 923, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1093, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 456, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 455, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 450, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 854, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 454, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 458, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 434, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 433, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 458, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 432, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 435, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 520, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 484, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 466, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 461, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 475, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 474, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 465, "id": 473, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [477], "declarations": [{"constant": false, "id": 477, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 484, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 476, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 478, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 461, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 477, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 479, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 480, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 465, "id": 483, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 459, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 485, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 462, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 461, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 485, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 460, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 465, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 464, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 485, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 463, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 520, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 518, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 494, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 493, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 502, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 497, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 866, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 500, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 501, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 503, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 507, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 509, "indexExpression": {"id": 508, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 488, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 510, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 512, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 514, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 488, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, {"id": 515, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 513, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$881_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 517, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 519, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 488, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 519, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, "typeName": {"id": 487, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 486, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "1826:10:2"}, "referencedDeclaration": 881, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 490, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 519, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 489, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 492, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 520, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 521, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [693], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVStorageProtocol": [1016], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 689, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 522, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 523, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 872, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 524, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 756, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 525, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 1017, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 688, "linearizedBaseContracts": [688], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 528, "libraryName": {"id": 526, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 755, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 551, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 536, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 537, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 971, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 540, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 542, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 956, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 538, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 546, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 535, "id": 550, "nodeType": "Return", "src": "443:96:3"}]}, "id": 552, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 532, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 531, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 552, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 530, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 529, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "374:15:3"}, "referencedDeclaration": 993, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 534, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 552, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 533, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 688, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 590, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 561, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 560, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 616, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 563, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 564, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 971, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 568, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 567, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 552, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 571, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 572, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 574, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 956, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 577, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 576, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 575, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 581, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 582, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 584, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 585, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 589, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 591, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 555, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 591, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 554, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 553, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "578:15:3"}, "referencedDeclaration": 993, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 557, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 591, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 556, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 559, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 688, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 615, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 597, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 601, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 600, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 604, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 605, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 607, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 962, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 610, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 609, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 608, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 614, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 616, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 594, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 616, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 593, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 592, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "956:15:3"}, "referencedDeclaration": 993, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 596, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 688, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 643, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 624, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 628, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 626, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 631, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 962, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 634, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 635, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 636, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 639, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 623, "id": 642, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 644, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 620, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 619, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 644, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 618, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 617, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1141:15:3"}, "referencedDeclaration": 993, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 623, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 622, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 644, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 621, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 688, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 686, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 655, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 654, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 616, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 657, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 658, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 649, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 667, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 668, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 669, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 651, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 671, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 674, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 673, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 672, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 676, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 684, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 683, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 678, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 868, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 682, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 685, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 666, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 662, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 663, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 651, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 665, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 687, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 652, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 647, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 646, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 645, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1351:15:3"}, "referencedDeclaration": 993, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 649, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 648, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 651, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 650, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 653, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 688, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 689, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1168], "IERC20": [1094], "ISSVNetworkCore": [871], "SSVModules": [881], "SSVStorage": [951], "StorageData": [928]}, "id": 952, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 873, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 874, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 872, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 875, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 1169, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 876, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 1095, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 881, "members": [{"id": 877, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 878, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 879, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 880, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 928, "members": [{"constant": false, "id": 886, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 885, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 883, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 884, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 891, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 890, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 888, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 896, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 895, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 893, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 894, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 902, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 901, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 899, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 898, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "1006:10:4"}, "referencedDeclaration": 881, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 900, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 906, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 904, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 905, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 913, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$794_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 912, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 909, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$794_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 911, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 910, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 794, "src": "1322:40:4"}, "referencedDeclaration": 794, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$794_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 919, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$784_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 918, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 915, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$784_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 917, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 916, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 784, "src": "1488:24:4"}, "referencedDeclaration": 784, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$784_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 923, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}, "typeName": {"id": 922, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 921, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1094, "src": "1599:6:4"}, "referencedDeclaration": 1094, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 927, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 926, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 925, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1686:16:4"}, "referencedDeclaration": 1100, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 952, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 951, "linearizedBaseContracts": [951], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 938, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 951, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 937, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 933, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 932, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 931, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 935, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 949, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [945], "declarations": [{"constant": false, "id": 945, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 949, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 944, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 947, "initialValue": {"id": 946, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 945, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 942, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 948, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 950, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 939, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 942, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 950, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 941, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 940, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 928, "src": "1891:11:4"}, "referencedDeclaration": 928, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 951, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 952, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1016], "StorageProtocol": [993]}, "id": 1017, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 953, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 993, "members": [{"constant": false, "id": 956, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 955, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 959, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 958, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 962, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 961, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 965, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 964, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 968, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 967, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 971, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 970, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 974, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 973, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 977, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 976, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 980, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 979, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 983, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 982, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 986, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 985, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 989, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 988, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 992, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 991, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1017, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1016, "linearizedBaseContracts": [1016], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1003, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1016, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 994, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1002, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 998, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 997, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 996, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 1000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1014, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1010], "declarations": [{"constant": false, "id": 1010, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1014, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1012, "initialValue": {"id": 1011, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1003, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1010, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1007, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1013, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1015, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 1004, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1008, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1007, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1015, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1006, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1005, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1711:15:5"}, "referencedDeclaration": 993, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1016, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1017, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [693], "Types256": [755], "Types64": [706]}, "id": 756, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 690, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 693, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 756, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 691, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 706, "linearizedBaseContracts": [706], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 704, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 700, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 701, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 699, "id": 703, "nodeType": "Return", "src": "212:30:6"}]}, "id": 705, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 696, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 695, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 705, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 694, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 699, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 698, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 705, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 697, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 706, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 756, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 755, "linearizedBaseContracts": [755], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 734, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 714, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 717, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 718, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 720, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 713, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 724, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 728, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 727, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 754, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 730, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 725, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 712, "id": 733, "nodeType": "Return", "src": "425:50:6"}]}, "id": 735, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 709, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 708, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 735, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 707, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 712, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 711, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 735, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 710, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 755, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 753, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 743, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 744, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 742, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 750, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 751, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 741, "id": 752, "nodeType": "Return", "src": "638:12:6"}]}, "id": 754, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 738, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 737, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 754, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 736, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 741, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 740, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 754, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 755, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 756, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "DAO": [56], "DEDUCTED_DIGITS": [693], "IERC20": [1094], "ISSVDAO": [389], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVDAO": [297], "SSVModules": [881], "SSVStorage": [951], "SSVStorageProtocol": [1016], "StorageData": [928], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 57, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 57, "sourceUnit": 298, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 297, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 56, "linearizedBaseContracts": [56, 297, 389, 871], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "137:111:7", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "171:2:7", "nodeType": "VariableDeclaration", "scope": 22, "src": "147:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["147:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "147:15:7"}, "referencedDeclaration": 993, "src": "147:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "176:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "195:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "176:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "176:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "147:54:7"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "211:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "214:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "211:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "227:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "239:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "227:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "211:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "211:30:7"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "134:2:7"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "137:0:7"}, "scope": 56, "src": "123:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "306:43:7", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "338:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "316:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$56", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "321:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 116, "src": "316:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "316:26:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "316:26:7"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "263:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "294:3:7", "nodeType": "VariableDeclaration", "scope": 35, "src": "286:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "286:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "285:13:7"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "306:0:7"}, "scope": 56, "src": "254:95:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 54, "nodeType": "Block", "src": "415:106:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "449:2:7", "nodeType": "VariableDeclaration", "scope": 54, "src": "425:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["425:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "425:15:7"}, "referencedDeclaration": 993, "src": "425:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "454:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "473:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "454:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "454:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "425:54:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 48, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "496:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "499:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "496:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "512:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "496:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 47, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "489:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "489:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 53, "nodeType": "ExpressionStatement", "src": "489:25:7"}]}, "functionSelector": "23eb9a03", "id": 55, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_networkfee", "nameLocation": "364:26:7", "nodeType": "FunctionDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [], "src": "390:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 38, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 55, "src": "409:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 37, "name": "bool", "nodeType": "ElementaryTypeName", "src": "409:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "408:6:7"}, "scope": 56, "src": "355:166:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 57, "src": "94:429:7", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:479:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "DEDUCTED_DIGITS": [693], "IERC20": [1094], "ISSVDAO": [389], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVDAO": [297], "SSVModules": [881], "SSVStorage": [951], "SSVStorageProtocol": [1016], "StorageData": [928], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 298, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 58, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 59, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 390, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 60, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 756, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 61, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 689, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 62, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 521, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 63, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 389, "src": "233:7:8"}, "id": 64, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 297, "linearizedBaseContracts": [297, 389, 871], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 67, "libraryName": {"id": 65, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 706, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 66, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 70, "libraryName": {"id": 68, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 755, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 74, "libraryName": {"id": 71, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 688, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 73, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 72, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "332:15:8"}, "referencedDeclaration": 993, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 77, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 297, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 76, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [308], "body": {"id": 115, "nodeType": "Block", "src": "481:252:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 85, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 83, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "495:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 84, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "502:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "495:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 89, "nodeType": "IfStatement", "src": "491:32:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 86, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 816, "src": "512:9:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "512:11:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 88, "nodeType": "RevertStatement", "src": "505:18:8"}}, {"assignments": [92], "declarations": [{"constant": false, "id": 92, "mutability": "mutable", "name": "sp", "nameLocation": "558:2:8", "nodeType": "VariableDeclaration", "scope": 115, "src": "534:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 91, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 90, "name": "StorageProtocol", "nameLocations": ["534:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "534:15:8"}, "referencedDeclaration": 993, "src": "534:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 96, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 93, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "563:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 94, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "563:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 95, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "563:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "534:54:8"}, {"assignments": [98], "declarations": [{"constant": false, "id": 98, "mutability": "mutable", "name": "previousFee", "nameLocation": "605:11:8", "nodeType": "VariableDeclaration", "scope": 115, "src": "598:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 97, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "598:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 101, "initialValue": {"expression": {"id": 99, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, "src": "619:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "622:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "619:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "598:34:8"}, {"expression": {"arguments": [{"id": 105, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "663:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 102, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, "src": "643:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "646:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 591, "src": "643:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "643:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 107, "nodeType": "ExpressionStatement", "src": "643:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 109, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "700:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "712:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 705, "src": "700:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "700:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 112, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "722:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 108, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "682:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "682:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 114, "nodeType": "EmitStatement", "src": "677:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 116, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 81, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 80, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 79, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 116, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 78, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 82, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 297, "src": "424:309:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [314], "body": {"id": 171, "nodeType": "Block", "src": "806:447:8", "statements": [{"assignments": [124], "declarations": [{"constant": false, "id": 124, "mutability": "mutable", "name": "sp", "nameLocation": "840:2:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "816:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 123, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 122, "name": "StorageProtocol", "nameLocations": ["816:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "816:15:8"}, "referencedDeclaration": 993, "src": "816:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 128, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 125, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "845:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "864:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "845:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "845:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "816:54:8"}, {"assignments": [130], "declarations": [{"constant": false, "id": 130, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "888:12:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "881:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 129, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "881:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 134, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 131, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "903:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "910:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "903:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "903:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "881:37:8"}, {"assignments": [136], "declarations": [{"constant": false, "id": 136, "mutability": "mutable", "name": "networkBalance", "nameLocation": "936:14:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "929:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 135, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "929:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 140, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 137, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "953:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "956:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 644, "src": "953:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "953:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "929:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 141, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "993:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 142, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "1008:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "993:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 148, "nodeType": "IfStatement", "src": "989:88:8", "trueBody": {"id": 147, "nodeType": "Block", "src": "1024:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 144, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "1045:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1045:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 146, "nodeType": "RevertStatement", "src": "1038:28:8"}]}}, {"expression": {"id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 149, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "1087:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1090:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1087:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 152, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "1103:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 153, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1120:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1103:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1087:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 156, "nodeType": "ExpressionStatement", "src": "1087:45:8"}, {"expression": {"arguments": [{"expression": {"id": 160, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1167:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1171:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1167:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 162, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "1179:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 157, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "1143:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$520_$", "typeString": "type(library CoreLib)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1151:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 431, "src": "1143:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1143:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 164, "nodeType": "ExpressionStatement", "src": "1143:43:8"}, {"eventCall": {"arguments": [{"id": 166, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "1227:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 167, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1235:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1239:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1235:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 165, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 384, "src": "1202:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1202:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 170, "nodeType": "EmitStatement", "src": "1197:49:8"}]}, "functionSelector": "d2231741", "id": 172, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "748:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 120, "nodeType": "OverrideSpecifier", "overrides": [], "src": "797:8:8"}, "parameters": {"id": 119, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 118, "mutability": "mutable", "name": "amount", "nameLocation": "780:6:8", "nodeType": "VariableDeclaration", "scope": 172, "src": "772:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 117, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "772:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "771:16:8"}, "returnParameters": {"id": 121, "nodeType": "ParameterList", "parameters": [], "src": "806:0:8"}, "scope": 297, "src": "739:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [320], "body": {"id": 190, "nodeType": "Block", "src": "1336:136:8", "statements": [{"expression": {"id": 184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 178, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1346:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1365:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1346:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1346:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1372:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 989, "src": "1346:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 183, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1397:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1346:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 185, "nodeType": "ExpressionStatement", "src": "1346:61:8"}, {"eventCall": {"arguments": [{"id": 187, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1454:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 186, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 354, "src": "1422:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1422:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 189, "nodeType": "EmitStatement", "src": "1417:48:8"}]}, "functionSelector": "3631983f", "id": 191, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1268:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 176, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1327:8:8"}, "parameters": {"id": 175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 174, "mutability": "mutable", "name": "percentage", "nameLocation": "1306:10:8", "nodeType": "VariableDeclaration", "scope": 191, "src": "1299:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 173, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1299:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1298:19:8"}, "returnParameters": {"id": 177, "nodeType": "ParameterList", "parameters": [], "src": "1336:0:8"}, "scope": 297, "src": "1259:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [326], "body": {"id": 209, "nodeType": "Block", "src": "1558:144:8", "statements": [{"expression": {"id": 203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 197, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1568:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1587:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1568:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1568:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 201, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1594:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 983, "src": "1568:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 202, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1621:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1568:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 204, "nodeType": "ExpressionStatement", "src": "1568:66:8"}, {"eventCall": {"arguments": [{"id": 206, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1681:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 205, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "1649:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 207, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1649:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 208, "nodeType": "EmitStatement", "src": "1644:51:8"}]}, "functionSelector": "79e3e4e4", "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1487:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 195, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1549:8:8"}, "parameters": {"id": 194, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 193, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1525:13:8", "nodeType": "VariableDeclaration", "scope": 210, "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 192, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1518:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1517:22:8"}, "returnParameters": {"id": 196, "nodeType": "ParameterList", "parameters": [], "src": "1558:0:8"}, "scope": 297, "src": "1478:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [332], "body": {"id": 228, "nodeType": "Block", "src": "1788:144:8", "statements": [{"expression": {"id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 216, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1798:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1817:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1798:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1798:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1824:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 986, "src": "1798:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 221, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, "src": "1851:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1798:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 223, "nodeType": "ExpressionStatement", "src": "1798:66:8"}, {"eventCall": {"arguments": [{"id": 225, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, "src": "1911:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 224, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "1879:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1879:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 227, "nodeType": "EmitStatement", "src": "1874:51:8"}]}, "functionSelector": "eb608022", "id": 229, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1717:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 214, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1779:8:8"}, "parameters": {"id": 213, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 212, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1755:13:8", "nodeType": "VariableDeclaration", "scope": 229, "src": "1748:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 211, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1748:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1747:22:8"}, "returnParameters": {"id": 215, "nodeType": "ParameterList", "parameters": [], "src": "1788:0:8"}, "scope": 297, "src": "1708:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [338], "body": {"id": 255, "nodeType": "Block", "src": "2013:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 235, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2027:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 236, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "2036:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2027:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 242, "nodeType": "IfStatement", "src": "2023:106:8", "trueBody": {"id": 241, "nodeType": "Block", "src": "2067:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 238, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "2088:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2088:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 240, "nodeType": "RevertStatement", "src": "2081:37:8"}]}}, {"expression": {"id": 249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 243, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2139:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2158:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2139:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2139:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 247, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2165:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 977, "src": "2139:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 248, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2198:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2139:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 250, "nodeType": "ExpressionStatement", "src": "2139:65:8"}, {"eventCall": {"arguments": [{"id": 252, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2253:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 251, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, "src": "2219:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2219:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 254, "nodeType": "EmitStatement", "src": "2214:46:8"}]}, "functionSelector": "6512447d", "id": 256, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1947:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 233, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2004:8:8"}, "parameters": {"id": 232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 231, "mutability": "mutable", "name": "blocks", "nameLocation": "1987:6:8", "nodeType": "VariableDeclaration", "scope": 256, "src": "1980:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 230, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1980:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1979:15:8"}, "returnParameters": {"id": 234, "nodeType": "ParameterList", "parameters": [], "src": "2013:0:8"}, "scope": 297, "src": "1938:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [344], "body": {"id": 276, "nodeType": "Block", "src": "2351:147:8", "statements": [{"expression": {"id": 270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 262, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2361:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2380:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2361:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2361:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2387:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 980, "src": "2361:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 267, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 258, "src": "2418:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2425:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "2418:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2418:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2361:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 271, "nodeType": "ExpressionStatement", "src": "2361:72:8"}, {"eventCall": {"arguments": [{"id": 273, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 258, "src": "2484:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 272, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "2448:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2448:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 275, "nodeType": "EmitStatement", "src": "2443:48:8"}]}, "functionSelector": "b4c9c408", "id": 277, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2282:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 260, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2342:8:8"}, "parameters": {"id": 259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 258, "mutability": "mutable", "name": "amount", "nameLocation": "2325:6:8", "nodeType": "VariableDeclaration", "scope": 277, "src": "2317:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 257, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2317:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2316:16:8"}, "returnParameters": {"id": 261, "nodeType": "ParameterList", "parameters": [], "src": "2351:0:8"}, "scope": 297, "src": "2273:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [350], "body": {"id": 295, "nodeType": "Block", "src": "2571:114:8", "statements": [{"expression": {"id": 289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 283, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2581:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2600:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2581:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2581:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 287, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2607:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 992, "src": "2581:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 288, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "2624:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2581:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 290, "nodeType": "ExpressionStatement", "src": "2581:49:8"}, {"eventCall": {"arguments": [{"id": 292, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "2671:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 291, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 388, "src": "2645:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2645:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 294, "nodeType": "EmitStatement", "src": "2640:38:8"}]}, "functionSelector": "e39c6744", "id": 296, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2513:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 281, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2562:8:8"}, "parameters": {"id": 280, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 279, "mutability": "mutable", "name": "maxFee", "nameLocation": "2545:6:8", "nodeType": "VariableDeclaration", "scope": 296, "src": "2538:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 278, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2538:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2537:15:8"}, "returnParameters": {"id": 282, "nodeType": "ParameterList", "parameters": [], "src": "2571:0:8"}, "scope": 297, "src": "2504:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 298, "src": "214:2473:8", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:2643:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1094]}, "id": 1095, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1018, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1019, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1094, "linearizedBaseContracts": [1094], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1020, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1028, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1022, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1021, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1024, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1026, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1029, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1037, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1036, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1031, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1030, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1033, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1032, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1035, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1038, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1043, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1042, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1041, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1043, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1094, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1044, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1051, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1046, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1051, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1094, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1052, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1061, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1054, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1059, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1058, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1094, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1062, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1071, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1064, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1065, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1094, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1072, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1081, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1077, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1074, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1073, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1076, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1079, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1078, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1094, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1082, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1093, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1089, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1083, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1086, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1088, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1087, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1092, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1091, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1090, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1094, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1095, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1168]}, "id": 1169, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1096, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1097, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1168, "linearizedBaseContracts": [1168], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1100, "members": [{"constant": false, "id": 1099, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1100, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1168, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1111, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1108, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1109, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1107, "id": 1110, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1112, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1104, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1103, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1112, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1101, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "844:7:10"}, "referencedDeclaration": 1100, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1106, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1112, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1105, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1168, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1125, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1124, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1118, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1120, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1123, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1126, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1126, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1114, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1113, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "964:7:10"}, "referencedDeclaration": 1100, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1117, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1168, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1153, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1133], "declarations": [{"constant": false, "id": 1133, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1153, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1136, "initialValue": {"expression": {"id": 1134, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1135, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1138, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1133, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1137, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1143, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1152, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1144, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1147, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1133, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1151, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1154, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1130, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1129, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1154, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1128, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1127, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1093:7:10"}, "referencedDeclaration": 1100, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1131, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1168, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1166, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1160, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1157, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1165, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1167, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1157, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1167, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1156, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1155, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1324:7:10"}, "referencedDeclaration": 1100, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1159, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1168, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1169, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:429:7:-:0;;;123:125;;;;;;;;;;147:26;176:25;:23;;;;;:25;;:::i;:::-;147:54;;227:14;211:2;:13;;;:30;;;;;;;;;;;;;;;;;;137:111;94:429;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:429:7:-;;;;;;;", "srcmap-runtime": "94:429:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:309:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;355:166:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1259:213:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1938:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1478:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2273:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;739:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;254:95:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2504:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1708:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:309;502:1;495:3;:8;491:32;;512:11;;;;;;;;;;;;;;491:32;534:26;563:25;:23;:25::i;:::-;534:54;;598:18;619:2;:13;;;;;;;;;;;;598:34;;643:24;663:3;643:2;:19;;:24;;;;:::i;:::-;682:44;700:20;:11;:18;;;:20::i;:::-;722:3;682:44;;;;;;;:::i;:::-;;;;;;;;481:252;;424:309;:::o;355:166:7:-;409:4;425:26;454:25;:23;:25::i;:::-;425:54;;512:1;496:2;:13;;;;;;;;;;;;:17;;;489:25;;;;:::i;:::-;;415:106;355:166;:::o;1259:213:8:-;1397:10;1346:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1422:43;1454:10;1422:43;;;;;;:::i;:::-;;;;;;;;1259:213;:::o;1938:329::-;410:7;2027:38;;:6;:38;;;2023:106;;;2088:30;;;;;;;;;;;;;;2023:106;2198:6;2139:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2219:41;2253:6;2219:41;;;;;;:::i;:::-;;;;;;;;1938:329;:::o;1478:224::-;1621:13;1568:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1649:46;1681:13;1649:46;;;;;;:::i;:::-;;;;;;;;1478:224;:::o;2273:225::-;2418:15;:6;:13;:15::i;:::-;2361:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2448:43;2484:6;2448:43;;;;;;:::i;:::-;;;;;;;;2273:225;:::o;739:514::-;816:26;845:25;:23;:25::i;:::-;816:54;;881:19;903:15;:6;:13;:15::i;:::-;881:37;;929:21;953:25;:2;:23;:25::i;:::-;929:49;;1008:14;993:29;;:12;:29;;;989:88;;;1045:21;;;;;;;;;;;;;;989:88;1120:12;1103:14;:29;;;;:::i;:::-;1087:2;:13;;;:45;;;;;;;;;;;;;;;;;;1143:43;1167:10;1179:6;1143:23;:43::i;:::-;1202:44;1227:6;1235:10;1202:44;;;;;;;:::i;:::-;;;;;;;;806:447;;;739:514;:::o;254:95:7:-;316:4;:21;;;338:3;316:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;254:95;:::o;2504:181:8:-;2624:6;2581:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2645:33;2671:6;2645:33;;;;;;:::i;:::-;;;;;;;;2504:181;:::o;1708:224::-;1851:13;1798:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1879:46;1911:13;1879:46;;;;;;:::i;:::-;;;;;;;;1708:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:101::-;1488:7;1528:18;1521:5;1517:30;1506:41;;1452:101;;;:::o;1559:120::-;1631:23;1648:5;1631:23;:::i;:::-;1624:5;1621:34;1611:62;;1669:1;1666;1659:12;1611:62;1559:120;:::o;1685:137::-;1730:5;1768:6;1755:20;1746:29;;1784:32;1810:5;1784:32;:::i;:::-;1685:137;;;;:::o;1828:327::-;1886:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:119;;;1941:79;;:::i;:::-;1903:119;2061:1;2086:52;2130:7;2121:6;2110:9;2106:22;2086:52;:::i;:::-;2076:62;;2032:116;1828:327;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:180::-;2671:77;2668:1;2661:88;2768:4;2765:1;2758:15;2792:4;2789:1;2782:15;2809:115;2894:23;2911:5;2894:23;:::i;:::-;2889:3;2882:36;2809:115;;:::o;2930:218::-;3021:4;3059:2;3048:9;3044:18;3036:26;;3072:69;3138:1;3127:9;3123:17;3114:6;3072:69;:::i;:::-;2930:218;;;;:::o;3154:222::-;3247:4;3285:2;3274:9;3270:18;3262:26;;3298:71;3366:1;3355:9;3351:17;3342:6;3298:71;:::i;:::-;3154:222;;;;:::o;3382:180::-;3430:77;3427:1;3420:88;3527:4;3524:1;3517:15;3551:4;3548:1;3541:15;3568:208;3607:4;3627:19;3644:1;3627:19;:::i;:::-;3622:24;;3660:19;3677:1;3660:19;:::i;:::-;3655:24;;3703:1;3700;3696:9;3688:17;;3727:18;3721:4;3718:28;3715:54;;;3749:18;;:::i;:::-;3715:54;3568:208;;;;:::o;3782:126::-;3819:7;3859:42;3852:5;3848:54;3837:65;;3782:126;;;:::o;3914:96::-;3951:7;3980:24;3998:5;3980:24;:::i;:::-;3969:35;;3914:96;;;:::o;4016:118::-;4103:24;4121:5;4103:24;:::i;:::-;4098:3;4091:37;4016:118;;:::o;4140:332::-;4261:4;4299:2;4288:9;4284:18;4276:26;;4312:71;4380:1;4369:9;4365:17;4356:6;4312:71;:::i;:::-;4393:72;4461:2;4450:9;4446:18;4437:6;4393:72;:::i;:::-;4140:332;;;;;:::o;4478:194::-;4518:4;4538:20;4556:1;4538:20;:::i;:::-;4533:25;;4572:20;4590:1;4572:20;:::i;:::-;4567:25;;4616:1;4613;4609:9;4601:17;;4640:1;4634:4;4631:11;4628:37;;;4645:18;;:::i;:::-;4628:37;4478:194;;;;:::o;4678:410::-;4718:7;4741:20;4759:1;4741:20;:::i;:::-;4736:25;;4775:20;4793:1;4775:20;:::i;:::-;4770:25;;4830:1;4827;4823:9;4852:30;4870:11;4852:30;:::i;:::-;4841:41;;5031:1;5022:7;5018:15;5015:1;5012:22;4992:1;4985:9;4965:83;4942:139;;5061:18;;:::i;:::-;4942:139;4726:362;4678:410;;;;:::o;5094:169::-;5178:11;5212:6;5207:3;5200:19;5252:4;5247:3;5243:14;5228:29;;5094:169;;;;:::o;5269:168::-;5409:20;5405:1;5397:6;5393:14;5386:44;5269:168;:::o;5443:366::-;5585:3;5606:67;5670:2;5665:3;5606:67;:::i;:::-;5599:74;;5682:93;5771:3;5682:93;:::i;:::-;5800:2;5795:3;5791:12;5784:19;;5443:366;;;:::o;5815:419::-;5981:4;6019:2;6008:9;6004:18;5996:26;;6068:9;6062:4;6058:20;6054:1;6043:9;6039:17;6032:47;6096:131;6222:4;6096:131;:::i;:::-;6088:139;;5815:419;;;:::o;6240:180::-;6288:77;6285:1;6278:88;6385:4;6382:1;6375:15;6409:4;6406:1;6399:15;6426:185;6466:1;6483:20;6501:1;6483:20;:::i;:::-;6478:25;;6517:20;6535:1;6517:20;:::i;:::-;6512:25;;6556:1;6546:35;;6561:18;;:::i;:::-;6546:35;6603:1;6600;6596:9;6591:14;;6426:185;;;;:::o;6617:275::-;6656:7;6679:19;6696:1;6679:19;:::i;:::-;6674:24;;6712:19;6729:1;6712:19;:::i;:::-;6707:24;;6766:1;6763;6759:9;6788:29;6805:11;6788:29;:::i;:::-;6777:40;;6849:11;6840:7;6837:24;6827:58;;6865:18;;:::i;:::-;6827:58;6664:228;6617:275;;;;:::o;6898:205::-;6937:3;6956:19;6973:1;6956:19;:::i;:::-;6951:24;;6989:19;7006:1;6989:19;:::i;:::-;6984:24;;7031:1;7028;7024:9;7017:16;;7054:18;7049:3;7046:27;7043:53;;;7076:18;;:::i;:::-;7043:53;6898:205;;;;:::o;7109:332::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:71;7349:1;7338:9;7334:17;7325:6;7281:71;:::i;:::-;7362:72;7430:2;7419:9;7415:18;7406:6;7362:72;:::i;:::-;7109:332;;;;;:::o;7447:116::-;7517:21;7532:5;7517:21;:::i;:::-;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;7497:60;7447:116;:::o;7569:137::-;7623:5;7654:6;7648:13;7639:22;;7670:30;7694:5;7670:30;:::i;:::-;7569:137;;;;:::o;7712:345::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:61;8032:7;8023:6;8012:9;8008:22;7979:61;:::i;:::-;7969:71;;7925:125;7712:345;;;;:::o;8063:176::-;8095:1;8112:20;8130:1;8112:20;:::i;:::-;8107:25;;8146:20;8164:1;8146:20;:::i;:::-;8141:25;;8185:1;8175:35;;8190:18;;:::i;:::-;8175:35;8231:1;8228;8224:9;8219:14;;8063:176;;;;:::o;8245:172::-;8385:24;8381:1;8373:6;8369:14;8362:48;8245:172;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_networkfee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6107091760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61110580620001146000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b93565b6101bd565b005b6100c7610283565b6040516100d49190610bdb565b60405180910390f35b6100f760048036038101906100f29190610c36565b6102c7565b005b610113600480360381019061010e9190610c36565b610333565b005b61012f600480360381019061012a9190610c36565b6103f0565b005b61014b60048036038101906101469190610b93565b61045c565b005b61016760048036038101906101629190610b93565b6104d0565b005b610183600480360381019061017e9190610b93565b6105c3565b005b61019f600480360381019061019a9190610c36565b610631565b005b6101bb60048036038101906101b69190610c36565b61069d565b005b600081036101f7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610201610709565b905060008160000160109054906101000a900467ffffffffffffffff169050610233838361074590919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102678267ffffffffffffffff166107db565b84604051610276929190610c72565b60405180910390a1505050565b60008061028e610709565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16116102c3576102c2610c9b565b5b5090565b806102d0610709565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516103289190610cd9565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff161015610384576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061038d610709565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103e59190610cd9565b60405180910390a150565b806103f9610709565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104519190610cd9565b60405180910390a150565b610465816107fd565b61046d610709565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104c59190610cf4565b60405180910390a150565b60006104da610709565b905060006104e7836107fd565b905060006104f483610877565b90508067ffffffffffffffff168267ffffffffffffffff161115610544576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105509190610d3e565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105843385610911565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516105b5929190610dbb565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105fc9190610cf4565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b5050505050565b8061063a610709565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106929190610cd9565b60405180910390a150565b806106a6610709565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106fe9190610cd9565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61073c9190610de4565b90508091505090565b61074e826109f4565b61075782610a4d565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506107ad816107fd565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107f69190610e18565b9050919050565b600062989680680100000000000000006108179190610e18565b821115610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090610eb7565b60405180910390fd5b6298968061086683610ac2565b6108709190610f06565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108d39190610d3e565b6108dd9190610f37565b6108e79190610f37565b8260010160009054906101000a900467ffffffffffffffff1661090a9190610f74565b9050919050565b610919610b1c565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610977929190610fb0565b6020604051808303816000875af1158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611005565b6109f0576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109fd81610877565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a8e9190610de4565b610a989190610f37565b8260000160189054906101000a900467ffffffffffffffff16610abb9190610f74565b9050919050565b6000806298968083610ad49190611032565b14610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906110af565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b4f9190610de4565b90508091505090565b600080fd5b6000819050919050565b610b7081610b5d565b8114610b7b57600080fd5b50565b600081359050610b8d81610b67565b92915050565b600060208284031215610ba957610ba8610b58565b5b6000610bb784828501610b7e565b91505092915050565b60008115159050919050565b610bd581610bc0565b82525050565b6000602082019050610bf06000830184610bcc565b92915050565b600067ffffffffffffffff82169050919050565b610c1381610bf6565b8114610c1e57600080fd5b50565b600081359050610c3081610c0a565b92915050565b600060208284031215610c4c57610c4b610b58565b5b6000610c5a84828501610c21565b91505092915050565b610c6c81610b5d565b82525050565b6000604082019050610c876000830185610c63565b610c946020830184610c63565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610cd381610bf6565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b6000602082019050610d096000830184610c63565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d4982610bf6565b9150610d5483610bf6565b9250828203905067ffffffffffffffff811115610d7457610d73610d0f565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610da582610d7a565b9050919050565b610db581610d9a565b82525050565b6000604082019050610dd06000830185610c63565b610ddd6020830184610dac565b9392505050565b6000610def82610b5d565b9150610dfa83610b5d565b9250828203905081811115610e1257610e11610d0f565b5b92915050565b6000610e2382610b5d565b9150610e2e83610b5d565b9250828202610e3c81610b5d565b91508282048414831517610e5357610e52610d0f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610ea1601283610e5a565b9150610eac82610e6b565b602082019050919050565b60006020820190508181036000830152610ed081610e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610f1182610b5d565b9150610f1c83610b5d565b925082610f2c57610f2b610ed7565b5b828204905092915050565b6000610f4282610bf6565b9150610f4d83610bf6565b9250828202610f5b81610bf6565b9150808214610f6d57610f6c610d0f565b5b5092915050565b6000610f7f82610bf6565b9150610f8a83610bf6565b9250828201905067ffffffffffffffff811115610faa57610fa9610d0f565b5b92915050565b6000604082019050610fc56000830185610dac565b610fd26020830184610c63565b9392505050565b610fe281610bc0565b8114610fed57600080fd5b50565b600081519050610fff81610fd9565b92915050565b60006020828403121561101b5761101a610b58565b5b600061102984828501610ff0565b91505092915050565b600061103d82610b5d565b915061104883610b5d565b92508261105857611057610ed7565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000611099601683610e5a565b91506110a482611063565b602082019050919050565b600060208201905081810360008301526110c88161108c565b905091905056fea26469706673582212205582eee75e0232e9307857cd1e8f8677bccbfc875c97c164d03068c3d05d54b764736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b93565b6101bd565b005b6100c7610283565b6040516100d49190610bdb565b60405180910390f35b6100f760048036038101906100f29190610c36565b6102c7565b005b610113600480360381019061010e9190610c36565b610333565b005b61012f600480360381019061012a9190610c36565b6103f0565b005b61014b60048036038101906101469190610b93565b61045c565b005b61016760048036038101906101629190610b93565b6104d0565b005b610183600480360381019061017e9190610b93565b6105c3565b005b61019f600480360381019061019a9190610c36565b610631565b005b6101bb60048036038101906101b69190610c36565b61069d565b005b600081036101f7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610201610709565b905060008160000160109054906101000a900467ffffffffffffffff169050610233838361074590919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102678267ffffffffffffffff166107db565b84604051610276929190610c72565b60405180910390a1505050565b60008061028e610709565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16116102c3576102c2610c9b565b5b5090565b806102d0610709565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516103289190610cd9565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff161015610384576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061038d610709565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103e59190610cd9565b60405180910390a150565b806103f9610709565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104519190610cd9565b60405180910390a150565b610465816107fd565b61046d610709565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104c59190610cf4565b60405180910390a150565b60006104da610709565b905060006104e7836107fd565b905060006104f483610877565b90508067ffffffffffffffff168267ffffffffffffffff161115610544576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105509190610d3e565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105843385610911565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516105b5929190610dbb565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105fc9190610cf4565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b5050505050565b8061063a610709565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106929190610cd9565b60405180910390a150565b806106a6610709565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106fe9190610cd9565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61073c9190610de4565b90508091505090565b61074e826109f4565b61075782610a4d565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506107ad816107fd565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107f69190610e18565b9050919050565b600062989680680100000000000000006108179190610e18565b821115610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090610eb7565b60405180910390fd5b6298968061086683610ac2565b6108709190610f06565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108d39190610d3e565b6108dd9190610f37565b6108e79190610f37565b8260010160009054906101000a900467ffffffffffffffff1661090a9190610f74565b9050919050565b610919610b1c565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610977929190610fb0565b6020604051808303816000875af1158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611005565b6109f0576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109fd81610877565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a8e9190610de4565b610a989190610f37565b8260000160189054906101000a900467ffffffffffffffff16610abb9190610f74565b9050919050565b6000806298968083610ad49190611032565b14610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906110af565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b4f9190610de4565b90508091505090565b600080fd5b6000819050919050565b610b7081610b5d565b8114610b7b57600080fd5b50565b600081359050610b8d81610b67565b92915050565b600060208284031215610ba957610ba8610b58565b5b6000610bb784828501610b7e565b91505092915050565b60008115159050919050565b610bd581610bc0565b82525050565b6000602082019050610bf06000830184610bcc565b92915050565b600067ffffffffffffffff82169050919050565b610c1381610bf6565b8114610c1e57600080fd5b50565b600081359050610c3081610c0a565b92915050565b600060208284031215610c4c57610c4b610b58565b5b6000610c5a84828501610c21565b91505092915050565b610c6c81610b5d565b82525050565b6000604082019050610c876000830185610c63565b610c946020830184610c63565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610cd381610bf6565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b6000602082019050610d096000830184610c63565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d4982610bf6565b9150610d5483610bf6565b9250828203905067ffffffffffffffff811115610d7457610d73610d0f565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610da582610d7a565b9050919050565b610db581610d9a565b82525050565b6000604082019050610dd06000830185610c63565b610ddd6020830184610dac565b9392505050565b6000610def82610b5d565b9150610dfa83610b5d565b9250828203905081811115610e1257610e11610d0f565b5b92915050565b6000610e2382610b5d565b9150610e2e83610b5d565b9250828202610e3c81610b5d565b91508282048414831517610e5357610e52610d0f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610ea1601283610e5a565b9150610eac82610e6b565b602082019050919050565b60006020820190508181036000830152610ed081610e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610f1182610b5d565b9150610f1c83610b5d565b925082610f2c57610f2b610ed7565b5b828204905092915050565b6000610f4282610bf6565b9150610f4d83610bf6565b9250828202610f5b81610bf6565b9150808214610f6d57610f6c610d0f565b5b5092915050565b6000610f7f82610bf6565b9150610f8a83610bf6565b9250828201905067ffffffffffffffff811115610faa57610fa9610d0f565b5b92915050565b6000604082019050610fc56000830185610dac565b610fd26020830184610c63565b9392505050565b610fe281610bc0565b8114610fed57600080fd5b50565b600081519050610fff81610fd9565b92915050565b60006020828403121561101b5761101a610b58565b5b600061102984828501610ff0565b91505092915050565b600061103d82610b5d565b915061104883610b5d565b92508261105857611057610ed7565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000611099601683610e5a565b91506110a482611063565b602082019050919050565b600060208201905081810360008301526110c88161108c565b905091905056fea26469706673582212205582eee75e0232e9307857cd1e8f8677bccbfc875c97c164d03068c3d05d54b764736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2473:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2473:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:309;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1259:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1938:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1478:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2273:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;739:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2504:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1708:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:309;502:1;495:3;:8;491:32;;512:11;;;;;;;;;;;;;;491:32;534:26;563:25;:23;:25::i;:::-;534:54;;598:18;619:2;:13;;;;;;;;;;;;598:34;;643:24;663:3;643:2;:19;;:24;;;;:::i;:::-;682:44;700:20;:11;:18;;;:20::i;:::-;722:3;682:44;;;;;;;:::i;:::-;;;;;;;;481:252;;424:309;:::o;1259:213::-;1397:10;1346:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1422:43;1454:10;1422:43;;;;;;:::i;:::-;;;;;;;;1259:213;:::o;1938:329::-;410:7;2027:38;;:6;:38;;;2023:106;;;2088:30;;;;;;;;;;;;;;2023:106;2198:6;2139:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2219:41;2253:6;2219:41;;;;;;:::i;:::-;;;;;;;;1938:329;:::o;1478:224::-;1621:13;1568:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1649:46;1681:13;1649:46;;;;;;:::i;:::-;;;;;;;;1478:224;:::o;2273:225::-;2418:15;:6;:13;:15::i;:::-;2361:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2448:43;2484:6;2448:43;;;;;;:::i;:::-;;;;;;;;2273:225;:::o;739:514::-;816:26;845:25;:23;:25::i;:::-;816:54;;881:19;903:15;:6;:13;:15::i;:::-;881:37;;929:21;953:25;:2;:23;:25::i;:::-;929:49;;1008:14;993:29;;:12;:29;;;989:88;;;1045:21;;;;;;;;;;;;;;989:88;1120:12;1103:14;:29;;;;:::i;:::-;1087:2;:13;;;:45;;;;;;;;;;;;;;;;;;1143:43;1167:10;1179:6;1143:23;:43::i;:::-;1202:44;1227:6;1235:10;1202:44;;;;;;;:::i;:::-;;;;;;;;806:447;;;739:514;:::o;2504:181::-;2624:6;2581:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2645:33;2671:6;2645:33;;;;;;:::i;:::-;;;;;;;;2504:181;:::o;1708:224::-;1851:13;1798:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1879:46;1911:13;1879:46;;;;;;:::i;:::-;;;;;;;;1708:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610faa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a91565b61016d565b005b6100c360048036038101906100be9190610afe565b610233565b005b6100df60048036038101906100da9190610afe565b61029f565b005b6100fb60048036038101906100f69190610afe565b61035c565b005b61011760048036038101906101129190610a91565b6103c8565b005b610133600480360381019061012e9190610a91565b61043c565b005b61014f600480360381019061014a9190610afe565b61052f565b005b61016b60048036038101906101669190610afe565b61059b565b005b600081036101a7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101b1610607565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e3838361064390919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102178267ffffffffffffffff166106d9565b84604051610226929190610b3a565b60405180910390a1505050565b8061023c610607565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102949190610b72565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102f0576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102f9610607565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103519190610b72565b60405180910390a150565b80610365610607565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103bd9190610b72565b60405180910390a150565b6103d1816106fb565b6103d9610607565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104319190610b8d565b60405180910390a150565b6000610446610607565b90506000610453836106fb565b9050600061046083610775565b90508067ffffffffffffffff168267ffffffffffffffff1611156104b0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104bc9190610bd7565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104f0338561080f565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610521929190610c54565b60405180910390a150505050565b80610538610607565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105909190610b72565b60405180910390a150565b806105a4610607565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105fc9190610b72565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61063a9190610c7d565b90508091505090565b61064c826108f2565b6106558261094b565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506106ab816106fb565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106f49190610cb1565b9050919050565b600062989680680100000000000000006107159190610cb1565b821115610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e90610d50565b60405180910390fd5b62989680610764836109c0565b61076e9190610d9f565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107d19190610bd7565b6107db9190610dd0565b6107e59190610dd0565b8260010160009054906101000a900467ffffffffffffffff166108089190610e0d565b9050919050565b610817610a1a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610875929190610e49565b6020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190610eaa565b6108ee576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108fb81610775565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff164361098c9190610c7d565b6109969190610dd0565b8260000160189054906101000a900467ffffffffffffffff166109b99190610e0d565b9050919050565b60008062989680836109d29190610ed7565b14610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0990610f54565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a4d9190610c7d565b90508091505090565b600080fd5b6000819050919050565b610a6e81610a5b565b8114610a7957600080fd5b50565b600081359050610a8b81610a65565b92915050565b600060208284031215610aa757610aa6610a56565b5b6000610ab584828501610a7c565b91505092915050565b600067ffffffffffffffff82169050919050565b610adb81610abe565b8114610ae657600080fd5b50565b600081359050610af881610ad2565b92915050565b600060208284031215610b1457610b13610a56565b5b6000610b2284828501610ae9565b91505092915050565b610b3481610a5b565b82525050565b6000604082019050610b4f6000830185610b2b565b610b5c6020830184610b2b565b9392505050565b610b6c81610abe565b82525050565b6000602082019050610b876000830184610b63565b92915050565b6000602082019050610ba26000830184610b2b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610be282610abe565b9150610bed83610abe565b9250828203905067ffffffffffffffff811115610c0d57610c0c610ba8565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3e82610c13565b9050919050565b610c4e81610c33565b82525050565b6000604082019050610c696000830185610b2b565b610c766020830184610c45565b9392505050565b6000610c8882610a5b565b9150610c9383610a5b565b9250828203905081811115610cab57610caa610ba8565b5b92915050565b6000610cbc82610a5b565b9150610cc783610a5b565b9250828202610cd581610a5b565b91508282048414831517610cec57610ceb610ba8565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d3a601283610cf3565b9150610d4582610d04565b602082019050919050565b60006020820190508181036000830152610d6981610d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610daa82610a5b565b9150610db583610a5b565b925082610dc557610dc4610d70565b5b828204905092915050565b6000610ddb82610abe565b9150610de683610abe565b9250828202610df481610abe565b9150808214610e0657610e05610ba8565b5b5092915050565b6000610e1882610abe565b9150610e2383610abe565b9250828201905067ffffffffffffffff811115610e4357610e42610ba8565b5b92915050565b6000604082019050610e5e6000830185610c45565b610e6b6020830184610b2b565b9392505050565b60008115159050919050565b610e8781610e72565b8114610e9257600080fd5b50565b600081519050610ea481610e7e565b92915050565b600060208284031215610ec057610ebf610a56565b5b6000610ece84828501610e95565b91505092915050565b6000610ee282610a5b565b9150610eed83610a5b565b925082610efd57610efc610d70565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f3e601683610cf3565b9150610f4982610f08565b602082019050919050565b60006020820190508181036000830152610f6d81610f31565b905091905056fea26469706673582212207f91e7f76ecfbbbcde72577f1f75c5674ea9bbba4843e9f279b9d44bdcb9f09864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a91565b61016d565b005b6100c360048036038101906100be9190610afe565b610233565b005b6100df60048036038101906100da9190610afe565b61029f565b005b6100fb60048036038101906100f69190610afe565b61035c565b005b61011760048036038101906101129190610a91565b6103c8565b005b610133600480360381019061012e9190610a91565b61043c565b005b61014f600480360381019061014a9190610afe565b61052f565b005b61016b60048036038101906101669190610afe565b61059b565b005b600081036101a7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101b1610607565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e3838361064390919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102178267ffffffffffffffff166106d9565b84604051610226929190610b3a565b60405180910390a1505050565b8061023c610607565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102949190610b72565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102f0576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102f9610607565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103519190610b72565b60405180910390a150565b80610365610607565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103bd9190610b72565b60405180910390a150565b6103d1816106fb565b6103d9610607565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104319190610b8d565b60405180910390a150565b6000610446610607565b90506000610453836106fb565b9050600061046083610775565b90508067ffffffffffffffff168267ffffffffffffffff1611156104b0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104bc9190610bd7565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104f0338561080f565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610521929190610c54565b60405180910390a150505050565b80610538610607565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105909190610b72565b60405180910390a150565b806105a4610607565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105fc9190610b72565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61063a9190610c7d565b90508091505090565b61064c826108f2565b6106558261094b565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506106ab816106fb565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106f49190610cb1565b9050919050565b600062989680680100000000000000006107159190610cb1565b821115610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e90610d50565b60405180910390fd5b62989680610764836109c0565b61076e9190610d9f565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107d19190610bd7565b6107db9190610dd0565b6107e59190610dd0565b8260010160009054906101000a900467ffffffffffffffff166108089190610e0d565b9050919050565b610817610a1a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610875929190610e49565b6020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190610eaa565b6108ee576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108fb81610775565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff164361098c9190610c7d565b6109969190610dd0565b8260000160189054906101000a900467ffffffffffffffff166109b99190610e0d565b9050919050565b60008062989680836109d29190610ed7565b14610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0990610f54565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a4d9190610c7d565b90508091505090565b600080fd5b6000819050919050565b610a6e81610a5b565b8114610a7957600080fd5b50565b600081359050610a8b81610a65565b92915050565b600060208284031215610aa757610aa6610a56565b5b6000610ab584828501610a7c565b91505092915050565b600067ffffffffffffffff82169050919050565b610adb81610abe565b8114610ae657600080fd5b50565b600081359050610af881610ad2565b92915050565b600060208284031215610b1457610b13610a56565b5b6000610b2284828501610ae9565b91505092915050565b610b3481610a5b565b82525050565b6000604082019050610b4f6000830185610b2b565b610b5c6020830184610b2b565b9392505050565b610b6c81610abe565b82525050565b6000602082019050610b876000830184610b63565b92915050565b6000602082019050610ba26000830184610b2b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610be282610abe565b9150610bed83610abe565b9250828203905067ffffffffffffffff811115610c0d57610c0c610ba8565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3e82610c13565b9050919050565b610c4e81610c33565b82525050565b6000604082019050610c696000830185610b2b565b610c766020830184610c45565b9392505050565b6000610c8882610a5b565b9150610c9383610a5b565b9250828203905081811115610cab57610caa610ba8565b5b92915050565b6000610cbc82610a5b565b9150610cc783610a5b565b9250828202610cd581610a5b565b91508282048414831517610cec57610ceb610ba8565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d3a601283610cf3565b9150610d4582610d04565b602082019050919050565b60006020820190508181036000830152610d6981610d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610daa82610a5b565b9150610db583610a5b565b925082610dc557610dc4610d70565b5b828204905092915050565b6000610ddb82610abe565b9150610de683610abe565b9250828202610df481610abe565b9150808214610e0657610e05610ba8565b5b5092915050565b6000610e1882610abe565b9150610e2383610abe565b9250828201905067ffffffffffffffff811115610e4357610e42610ba8565b5b92915050565b6000604082019050610e5e6000830185610c45565b610e6b6020830184610b2b565b9392505050565b60008115159050919050565b610e8781610e72565b8114610e9257600080fd5b50565b600081519050610ea481610e7e565b92915050565b600060208284031215610ec057610ebf610a56565b5b6000610ece84828501610e95565b91505092915050565b6000610ee282610a5b565b9150610eed83610a5b565b925082610efd57610efc610d70565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f3e601683610cf3565b9150610f4982610f08565b602082019050919050565b60006020820190508181036000830152610f6d81610f31565b905091905056fea26469706673582212207f91e7f76ecfbbbcde72577f1f75c5674ea9bbba4843e9f279b9d44bdcb9f09864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file From eb3933ec25c2c02784ab85e9edb45bfded6d0b1d Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Tue, 30 Jan 2024 05:51:13 +0100 Subject: [PATCH 10/19] fix: added test case for a removed operator balance --- contracts/modules/Operators.sol | 7 +++++++ crytic-export/combined_solc.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/contracts/modules/Operators.sol b/contracts/modules/Operators.sol index 46380fcf..8297dc5a 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/modules/Operators.sol @@ -103,4 +103,11 @@ contract Operators is SSVOperators { emit AssertionFailed(operatorId, SSVStorage.load().operatorFeeChangeRequests[operatorId].approvalBeginTime); } } + + function check_removedOperatorBalances() public returns (bool) { + for (uint256 i; i < opIds.length; i++) { + Operator storage operator = SSVStorage.load().operators[opIds[i]]; + if (operator.validatorCount == 0) assert(operator.snapshot.balance == 0); + } + } } diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index deb4012f..88a08071 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [389], "ISSVNetworkCore": [871]}, "id": 390, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 299, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 300, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 390, "sourceUnit": 872, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 301, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 871, "src": "124:15:0"}, "id": 302, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 389, "linearizedBaseContracts": [389, 871], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 303, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 308, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 306, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 305, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 308, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 304, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 307, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 389, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 309, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 314, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 312, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 311, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 314, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 310, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 313, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 389, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 315, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 320, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 317, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 320, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 316, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 319, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 389, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 321, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 326, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 324, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 323, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 326, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 322, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 325, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 389, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 327, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 332, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 330, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 329, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 328, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 331, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 389, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 333, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 338, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 335, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 338, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 337, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 389, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 339, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 344, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 342, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 341, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 344, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 340, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 343, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 389, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 345, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 350, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 348, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 350, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 349, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 389, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 354, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 353, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 352, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 354, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 351, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 358, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 355, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 362, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 362, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 359, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 366, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 365, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 364, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 363, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 370, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 371, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 377, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 378, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 384, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 380, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 384, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 379, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 382, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 384, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 381, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 388, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 387, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 386, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 388, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 385, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 390, "src": "103:2329:0", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [871]}, "id": 872, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 757, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 871, "linearizedBaseContracts": [871], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 767, "members": [{"constant": false, "id": 760, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 759, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 763, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 767, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 871, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 784, "members": [{"constant": false, "id": 770, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 769, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 775, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 778, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 784, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 782, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 781, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 767, "src": "1129:8:1"}, "referencedDeclaration": 767, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 871, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 794, "members": [{"constant": false, "id": 787, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 786, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 790, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 789, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 794, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 792, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 871, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 810, "members": [{"constant": false, "id": 797, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 796, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 800, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 799, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 803, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 806, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 805, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 809, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 810, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 808, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 871, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 812, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 814, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 816, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 818, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 820, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 822, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 824, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 826, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 828, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 830, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 832, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 834, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 836, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 838, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 840, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 842, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 844, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 846, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 848, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 850, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 849, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 852, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 851, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 854, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 853, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 856, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 855, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 858, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 857, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 860, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 859, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 862, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 861, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 864, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 863, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 866, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 865, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 868, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 867, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 870, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 869, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 872, "src": "70:3477:1", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "IERC20": [1094], "ISSVNetworkCore": [871], "SSVModules": [881], "SSVStorage": [951], "StorageData": [928]}, "id": 521, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 391, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 392, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 521, "sourceUnit": 952, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 520, "linearizedBaseContracts": [520], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 399, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 398, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 395, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 399, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, "typeName": {"id": 394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 393, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "141:10:2"}, "referencedDeclaration": 881, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 397, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 399, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 396, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 406, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 404, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 403, "id": 405, "nodeType": "Return", "src": "269:19:2"}]}, "id": 407, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 400, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 402, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 407, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 401, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 520, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 430, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 419, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 420, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 414, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 923, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1061, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 429, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 428, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 423, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 854, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 427, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 431, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 412, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 409, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 431, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 408, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 431, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 413, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 520, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 457, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 441, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 445, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$520", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$520", "typeString": "library CoreLib"}], "id": 444, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 443, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 447, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 433, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 436, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 439, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 923, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1093, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 456, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 455, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 450, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 854, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 454, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 458, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 434, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 433, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 458, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 432, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 435, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 520, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 484, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 466, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 461, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 475, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 474, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 465, "id": 473, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [477], "declarations": [{"constant": false, "id": 477, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 484, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 476, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 478, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 461, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 477, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 479, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 480, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 465, "id": 483, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 459, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 485, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 462, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 461, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 485, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 460, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 465, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 464, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 485, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 463, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 520, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 518, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 494, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 493, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 502, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 497, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 866, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 500, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 501, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 503, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$951_$", "typeString": "type(library SSVStorage)"}}, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 950, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$928_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 507, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 509, "indexExpression": {"id": 508, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 488, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 510, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 512, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 514, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 488, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, {"id": 515, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 513, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$881_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 517, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 519, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 488, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 519, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}, "typeName": {"id": 487, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 486, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "1826:10:2"}, "referencedDeclaration": 881, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 490, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 519, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 489, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 492, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 520, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 521, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [693], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVStorageProtocol": [1016], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 689, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 522, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 523, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 872, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 524, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 756, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 525, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 689, "sourceUnit": 1017, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 688, "linearizedBaseContracts": [688], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 528, "libraryName": {"id": 526, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 755, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 551, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 536, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 537, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 971, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 540, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 542, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 956, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 538, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 546, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 535, "id": 550, "nodeType": "Return", "src": "443:96:3"}]}, "id": 552, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 532, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 531, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 552, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 530, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 529, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "374:15:3"}, "referencedDeclaration": 993, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 534, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 552, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 533, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 688, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 590, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 561, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 560, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 616, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 563, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 564, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 971, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 568, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 567, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 552, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 571, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 572, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 574, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 956, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 577, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 576, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 575, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 581, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 582, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 555, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 584, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 585, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 589, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 591, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 555, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 591, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 554, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 553, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "578:15:3"}, "referencedDeclaration": 993, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 557, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 591, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 556, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 559, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 688, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 615, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 597, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 601, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 600, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 604, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 605, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 594, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 607, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 962, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 610, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 609, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 608, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 614, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 616, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 594, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 616, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 593, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 592, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "956:15:3"}, "referencedDeclaration": 993, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 596, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 688, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 643, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 624, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 628, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 626, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 631, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 962, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 634, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 635, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 636, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 619, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 639, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 623, "id": 642, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 644, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 620, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 619, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 644, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 618, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 617, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1141:15:3"}, "referencedDeclaration": 993, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 623, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 622, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 644, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 621, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 688, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 686, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 655, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 654, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 616, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 657, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 658, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 649, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 667, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 668, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 669, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 651, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 671, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 674, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 673, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 672, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 676, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 684, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 683, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 678, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 871, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$871_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 868, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 682, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 685, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 666, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 647, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 662, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 959, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 663, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 651, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 665, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 687, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 652, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 647, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 646, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 645, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1351:15:3"}, "referencedDeclaration": 993, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 649, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 648, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 651, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 687, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 650, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 653, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 688, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 689, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1168], "IERC20": [1094], "ISSVNetworkCore": [871], "SSVModules": [881], "SSVStorage": [951], "StorageData": [928]}, "id": 952, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 873, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 874, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 872, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 875, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 1169, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 876, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 952, "sourceUnit": 1095, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 881, "members": [{"id": 877, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 878, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 879, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 880, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 928, "members": [{"constant": false, "id": 886, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 885, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 883, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 884, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 891, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 890, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 888, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 896, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 895, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 893, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 894, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 902, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 901, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 899, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 898, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 881, "src": "1006:10:4"}, "referencedDeclaration": 881, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$881", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$881_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 900, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 906, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 904, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 905, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 913, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$794_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 912, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 909, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$794_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 911, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 910, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 794, "src": "1322:40:4"}, "referencedDeclaration": 794, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$794_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 919, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$784_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 918, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 915, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$784_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 917, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 916, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 784, "src": "1488:24:4"}, "referencedDeclaration": 784, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$784_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 923, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}, "typeName": {"id": 922, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 921, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1094, "src": "1599:6:4"}, "referencedDeclaration": 1094, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1094", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 927, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 928, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 926, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 925, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1686:16:4"}, "referencedDeclaration": 1100, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 952, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 951, "linearizedBaseContracts": [951], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 938, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 951, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 937, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 933, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 932, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 931, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 935, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 949, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [945], "declarations": [{"constant": false, "id": 945, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 949, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 944, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 947, "initialValue": {"id": 946, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 945, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 942, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 948, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 950, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 939, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 942, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 950, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 941, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 940, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 928, "src": "1891:11:4"}, "referencedDeclaration": 928, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$928_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 951, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 952, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1016], "StorageProtocol": [993]}, "id": 1017, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 953, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 993, "members": [{"constant": false, "id": 956, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 955, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 959, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 958, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 962, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 961, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 965, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 964, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 968, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 967, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 971, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 970, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 974, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 973, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 977, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 976, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 980, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 979, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 983, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 982, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 986, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 985, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 989, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 988, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 992, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 993, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 991, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1017, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1016, "linearizedBaseContracts": [1016], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1003, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1016, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 994, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1002, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 998, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 997, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 996, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 1000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1014, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1010], "declarations": [{"constant": false, "id": 1010, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1014, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1012, "initialValue": {"id": 1011, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1003, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1010, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1007, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1013, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1015, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 1004, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1008, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1007, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1015, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1006, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1005, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "1711:15:5"}, "referencedDeclaration": 993, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1016, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1017, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [693], "Types256": [755], "Types64": [706]}, "id": 756, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 690, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 693, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 756, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 691, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 706, "linearizedBaseContracts": [706], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 704, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 700, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 701, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 699, "id": 703, "nodeType": "Return", "src": "212:30:6"}]}, "id": 705, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 696, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 695, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 705, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 694, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 699, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 698, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 705, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 697, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 706, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 756, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 755, "linearizedBaseContracts": [755], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 734, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 714, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 717, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 718, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 720, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 713, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 724, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 728, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 727, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 754, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 730, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 725, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 712, "id": 733, "nodeType": "Return", "src": "425:50:6"}]}, "id": 735, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 709, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 708, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 735, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 707, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 712, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 711, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 735, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 710, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 755, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 753, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 743, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 744, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 742, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 750, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 751, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 741, "id": 752, "nodeType": "Return", "src": "638:12:6"}]}, "id": 754, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 738, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 737, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 754, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 736, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 741, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 740, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 754, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 755, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 756, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "DAO": [56], "DEDUCTED_DIGITS": [693], "IERC20": [1094], "ISSVDAO": [389], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVDAO": [297], "SSVModules": [881], "SSVStorage": [951], "SSVStorageProtocol": [1016], "StorageData": [928], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 57, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 57, "sourceUnit": 298, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 297, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 56, "linearizedBaseContracts": [56, 297, 389, 871], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "137:111:7", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "171:2:7", "nodeType": "VariableDeclaration", "scope": 22, "src": "147:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["147:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "147:15:7"}, "referencedDeclaration": 993, "src": "147:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "176:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "195:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "176:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "176:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "147:54:7"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "211:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "214:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "211:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "227:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "239:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "227:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "211:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "211:30:7"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "134:2:7"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "137:0:7"}, "scope": 56, "src": "123:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "306:43:7", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "338:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "316:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$56", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "321:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 116, "src": "316:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "316:26:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "316:26:7"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "263:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "294:3:7", "nodeType": "VariableDeclaration", "scope": 35, "src": "286:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "286:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "285:13:7"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "306:0:7"}, "scope": 56, "src": "254:95:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 54, "nodeType": "Block", "src": "415:106:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "449:2:7", "nodeType": "VariableDeclaration", "scope": 54, "src": "425:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["425:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "425:15:7"}, "referencedDeclaration": 993, "src": "425:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "454:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "473:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "454:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "454:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "425:54:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 48, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "496:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "499:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "496:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "512:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "496:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 47, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "489:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "489:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 53, "nodeType": "ExpressionStatement", "src": "489:25:7"}]}, "functionSelector": "23eb9a03", "id": 55, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_networkfee", "nameLocation": "364:26:7", "nodeType": "FunctionDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [], "src": "390:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 38, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 55, "src": "409:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 37, "name": "bool", "nodeType": "ElementaryTypeName", "src": "409:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "408:6:7"}, "scope": 56, "src": "355:166:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 57, "src": "94:429:7", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:479:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [520], "Counters": [1168], "DEDUCTED_DIGITS": [693], "IERC20": [1094], "ISSVDAO": [389], "ISSVNetworkCore": [871], "ProtocolLib": [688], "SSVDAO": [297], "SSVModules": [881], "SSVStorage": [951], "SSVStorageProtocol": [1016], "StorageData": [928], "StorageProtocol": [993], "Types256": [755], "Types64": [706]}, "id": 298, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 58, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 59, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 390, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 60, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 756, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 61, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 689, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 62, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 298, "sourceUnit": 521, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 63, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 389, "src": "233:7:8"}, "id": 64, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 297, "linearizedBaseContracts": [297, 389, 871], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 67, "libraryName": {"id": 65, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 706, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 66, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 70, "libraryName": {"id": 68, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 755, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 74, "libraryName": {"id": 71, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 688, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 73, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 72, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "332:15:8"}, "referencedDeclaration": 993, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 77, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 297, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 76, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [308], "body": {"id": 115, "nodeType": "Block", "src": "481:252:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 85, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 83, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "495:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 84, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "502:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "495:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 89, "nodeType": "IfStatement", "src": "491:32:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 86, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 816, "src": "512:9:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "512:11:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 88, "nodeType": "RevertStatement", "src": "505:18:8"}}, {"assignments": [92], "declarations": [{"constant": false, "id": 92, "mutability": "mutable", "name": "sp", "nameLocation": "558:2:8", "nodeType": "VariableDeclaration", "scope": 115, "src": "534:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 91, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 90, "name": "StorageProtocol", "nameLocations": ["534:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "534:15:8"}, "referencedDeclaration": 993, "src": "534:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 96, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 93, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "563:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 94, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "563:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 95, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "563:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "534:54:8"}, {"assignments": [98], "declarations": [{"constant": false, "id": 98, "mutability": "mutable", "name": "previousFee", "nameLocation": "605:11:8", "nodeType": "VariableDeclaration", "scope": 115, "src": "598:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 97, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "598:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 101, "initialValue": {"expression": {"id": 99, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, "src": "619:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "622:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 968, "src": "619:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "598:34:8"}, {"expression": {"arguments": [{"id": 105, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "663:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 102, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, "src": "643:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "646:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 591, "src": "643:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$993_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "643:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 107, "nodeType": "ExpressionStatement", "src": "643:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 109, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "700:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "712:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 705, "src": "700:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "700:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 112, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "722:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 108, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "682:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "682:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 114, "nodeType": "EmitStatement", "src": "677:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 116, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 81, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 80, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 79, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 116, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 78, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 82, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 297, "src": "424:309:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [314], "body": {"id": 171, "nodeType": "Block", "src": "806:447:8", "statements": [{"assignments": [124], "declarations": [{"constant": false, "id": 124, "mutability": "mutable", "name": "sp", "nameLocation": "840:2:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "816:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 123, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 122, "name": "StorageProtocol", "nameLocations": ["816:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 993, "src": "816:15:8"}, "referencedDeclaration": 993, "src": "816:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 128, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 125, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "845:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "864:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "845:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "845:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "816:54:8"}, {"assignments": [130], "declarations": [{"constant": false, "id": 130, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "888:12:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "881:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 129, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "881:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 134, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 131, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "903:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "910:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "903:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "903:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "881:37:8"}, {"assignments": [136], "declarations": [{"constant": false, "id": 136, "mutability": "mutable", "name": "networkBalance", "nameLocation": "936:14:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "929:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 135, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "929:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 140, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 137, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "953:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "956:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 644, "src": "953:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$993_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "953:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "929:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 141, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "993:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 142, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "1008:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "993:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 148, "nodeType": "IfStatement", "src": "989:88:8", "trueBody": {"id": 147, "nodeType": "Block", "src": "1024:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 144, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 826, "src": "1045:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1045:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 146, "nodeType": "RevertStatement", "src": "1038:28:8"}]}}, {"expression": {"id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 149, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, "src": "1087:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1090:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 974, "src": "1087:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 152, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "1103:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 153, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1120:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1103:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1087:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 156, "nodeType": "ExpressionStatement", "src": "1087:45:8"}, {"expression": {"arguments": [{"expression": {"id": 160, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1167:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1171:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1167:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 162, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "1179:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 157, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "1143:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$520_$", "typeString": "type(library CoreLib)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1151:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 431, "src": "1143:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1143:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 164, "nodeType": "ExpressionStatement", "src": "1143:43:8"}, {"eventCall": {"arguments": [{"id": 166, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118, "src": "1227:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 167, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1235:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1239:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1235:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 165, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 384, "src": "1202:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1202:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 170, "nodeType": "EmitStatement", "src": "1197:49:8"}]}, "functionSelector": "d2231741", "id": 172, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "748:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 120, "nodeType": "OverrideSpecifier", "overrides": [], "src": "797:8:8"}, "parameters": {"id": 119, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 118, "mutability": "mutable", "name": "amount", "nameLocation": "780:6:8", "nodeType": "VariableDeclaration", "scope": 172, "src": "772:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 117, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "772:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "771:16:8"}, "returnParameters": {"id": 121, "nodeType": "ParameterList", "parameters": [], "src": "806:0:8"}, "scope": 297, "src": "739:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [320], "body": {"id": 190, "nodeType": "Block", "src": "1336:136:8", "statements": [{"expression": {"id": 184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 178, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1346:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1365:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1346:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1346:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1372:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 989, "src": "1346:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 183, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1397:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1346:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 185, "nodeType": "ExpressionStatement", "src": "1346:61:8"}, {"eventCall": {"arguments": [{"id": 187, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1454:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 186, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 354, "src": "1422:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1422:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 189, "nodeType": "EmitStatement", "src": "1417:48:8"}]}, "functionSelector": "3631983f", "id": 191, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1268:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 176, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1327:8:8"}, "parameters": {"id": 175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 174, "mutability": "mutable", "name": "percentage", "nameLocation": "1306:10:8", "nodeType": "VariableDeclaration", "scope": 191, "src": "1299:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 173, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1299:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1298:19:8"}, "returnParameters": {"id": 177, "nodeType": "ParameterList", "parameters": [], "src": "1336:0:8"}, "scope": 297, "src": "1259:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [326], "body": {"id": 209, "nodeType": "Block", "src": "1558:144:8", "statements": [{"expression": {"id": 203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 197, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1568:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1587:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1568:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1568:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 201, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1594:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 983, "src": "1568:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 202, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1621:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1568:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 204, "nodeType": "ExpressionStatement", "src": "1568:66:8"}, {"eventCall": {"arguments": [{"id": 206, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1681:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 205, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "1649:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 207, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1649:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 208, "nodeType": "EmitStatement", "src": "1644:51:8"}]}, "functionSelector": "79e3e4e4", "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1487:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 195, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1549:8:8"}, "parameters": {"id": 194, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 193, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1525:13:8", "nodeType": "VariableDeclaration", "scope": 210, "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 192, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1518:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1517:22:8"}, "returnParameters": {"id": 196, "nodeType": "ParameterList", "parameters": [], "src": "1558:0:8"}, "scope": 297, "src": "1478:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [332], "body": {"id": 228, "nodeType": "Block", "src": "1788:144:8", "statements": [{"expression": {"id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 216, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "1798:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1817:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "1798:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1798:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1824:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 986, "src": "1798:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 221, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, "src": "1851:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1798:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 223, "nodeType": "ExpressionStatement", "src": "1798:66:8"}, {"eventCall": {"arguments": [{"id": 225, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 212, "src": "1911:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 224, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "1879:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1879:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 227, "nodeType": "EmitStatement", "src": "1874:51:8"}]}, "functionSelector": "eb608022", "id": 229, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1717:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 214, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1779:8:8"}, "parameters": {"id": 213, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 212, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1755:13:8", "nodeType": "VariableDeclaration", "scope": 229, "src": "1748:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 211, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1748:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1747:22:8"}, "returnParameters": {"id": 215, "nodeType": "ParameterList", "parameters": [], "src": "1788:0:8"}, "scope": 297, "src": "1708:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [338], "body": {"id": 255, "nodeType": "Block", "src": "2013:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 235, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2027:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 236, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "2036:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2027:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 242, "nodeType": "IfStatement", "src": "2023:106:8", "trueBody": {"id": 241, "nodeType": "Block", "src": "2067:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 238, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "2088:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2088:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 240, "nodeType": "RevertStatement", "src": "2081:37:8"}]}}, {"expression": {"id": 249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 243, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2139:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2158:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2139:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2139:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 247, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2165:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 977, "src": "2139:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 248, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2198:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2139:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 250, "nodeType": "ExpressionStatement", "src": "2139:65:8"}, {"eventCall": {"arguments": [{"id": 252, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "2253:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 251, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, "src": "2219:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2219:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 254, "nodeType": "EmitStatement", "src": "2214:46:8"}]}, "functionSelector": "6512447d", "id": 256, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1947:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 233, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2004:8:8"}, "parameters": {"id": 232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 231, "mutability": "mutable", "name": "blocks", "nameLocation": "1987:6:8", "nodeType": "VariableDeclaration", "scope": 256, "src": "1980:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 230, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1980:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1979:15:8"}, "returnParameters": {"id": 234, "nodeType": "ParameterList", "parameters": [], "src": "2013:0:8"}, "scope": 297, "src": "1938:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [344], "body": {"id": 276, "nodeType": "Block", "src": "2351:147:8", "statements": [{"expression": {"id": 270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 262, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2361:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2380:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2361:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2361:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2387:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 980, "src": "2361:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 267, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 258, "src": "2418:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2425:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 735, "src": "2418:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2418:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2361:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 271, "nodeType": "ExpressionStatement", "src": "2361:72:8"}, {"eventCall": {"arguments": [{"id": 273, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 258, "src": "2484:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 272, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "2448:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2448:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 275, "nodeType": "EmitStatement", "src": "2443:48:8"}]}, "functionSelector": "b4c9c408", "id": 277, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2282:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 260, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2342:8:8"}, "parameters": {"id": 259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 258, "mutability": "mutable", "name": "amount", "nameLocation": "2325:6:8", "nodeType": "VariableDeclaration", "scope": 277, "src": "2317:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 257, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2317:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2316:16:8"}, "returnParameters": {"id": 261, "nodeType": "ParameterList", "parameters": [], "src": "2351:0:8"}, "scope": 297, "src": "2273:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [350], "body": {"id": 295, "nodeType": "Block", "src": "2571:114:8", "statements": [{"expression": {"id": 289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 283, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "2581:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1016_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2600:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1015, "src": "2581:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$993_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2581:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$993_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 287, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2607:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 992, "src": "2581:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 288, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "2624:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2581:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 290, "nodeType": "ExpressionStatement", "src": "2581:49:8"}, {"eventCall": {"arguments": [{"id": 292, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "2671:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 291, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 388, "src": "2645:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2645:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 294, "nodeType": "EmitStatement", "src": "2640:38:8"}]}, "functionSelector": "e39c6744", "id": 296, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2513:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 281, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2562:8:8"}, "parameters": {"id": 280, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 279, "mutability": "mutable", "name": "maxFee", "nameLocation": "2545:6:8", "nodeType": "VariableDeclaration", "scope": 296, "src": "2538:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 278, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2538:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2537:15:8"}, "returnParameters": {"id": 282, "nodeType": "ParameterList", "parameters": [], "src": "2571:0:8"}, "scope": 297, "src": "2504:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 298, "src": "214:2473:8", "usedErrors": [812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870]}], "src": "45:2643:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1094]}, "id": 1095, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1018, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1019, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1094, "linearizedBaseContracts": [1094], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1020, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1028, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1022, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1021, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1024, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1026, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1028, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1029, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1037, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1036, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1031, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1030, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1033, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1032, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1035, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1037, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1038, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1043, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1042, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1041, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1043, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1094, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1044, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1051, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1046, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1051, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1094, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1052, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1061, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1054, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1059, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1061, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1058, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1094, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1062, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1071, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1064, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1065, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1071, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1094, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1072, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1081, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1077, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1074, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1073, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1076, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1079, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1078, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1094, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1082, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1093, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1089, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1083, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1086, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1088, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1087, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1092, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1091, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1093, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1090, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1094, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1095, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1168]}, "id": 1169, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1096, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1097, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1168, "linearizedBaseContracts": [1168], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1100, "members": [{"constant": false, "id": 1099, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1100, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1168, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1111, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1108, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1109, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1107, "id": 1110, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1112, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1104, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1103, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1112, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1101, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "844:7:10"}, "referencedDeclaration": 1100, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1106, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1112, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1105, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1168, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1125, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1124, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1118, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1120, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1123, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1126, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1126, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1114, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1113, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "964:7:10"}, "referencedDeclaration": 1100, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1117, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1168, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1153, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1133], "declarations": [{"constant": false, "id": 1133, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1153, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1136, "initialValue": {"expression": {"id": 1134, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1135, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1138, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1133, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1137, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1143, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1152, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1144, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1147, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1133, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1151, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1154, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1130, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1129, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1154, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1128, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1127, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1093:7:10"}, "referencedDeclaration": 1100, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1131, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1168, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1166, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1160, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1157, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1099, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1165, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1167, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1157, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1167, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1156, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1155, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1100, "src": "1324:7:10"}, "referencedDeclaration": 1100, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1100_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1159, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1168, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1169, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:429:7:-:0;;;123:125;;;;;;;;;;147:26;176:25;:23;;;;;:25;;:::i;:::-;147:54;;227:14;211:2;:13;;;:30;;;;;;;;;;;;;;;;;;137:111;94:429;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:429:7:-;;;;;;;", "srcmap-runtime": "94:429:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:309:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;355:166:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1259:213:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1938:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1478:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2273:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;739:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;254:95:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2504:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1708:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:309;502:1;495:3;:8;491:32;;512:11;;;;;;;;;;;;;;491:32;534:26;563:25;:23;:25::i;:::-;534:54;;598:18;619:2;:13;;;;;;;;;;;;598:34;;643:24;663:3;643:2;:19;;:24;;;;:::i;:::-;682:44;700:20;:11;:18;;;:20::i;:::-;722:3;682:44;;;;;;;:::i;:::-;;;;;;;;481:252;;424:309;:::o;355:166:7:-;409:4;425:26;454:25;:23;:25::i;:::-;425:54;;512:1;496:2;:13;;;;;;;;;;;;:17;;;489:25;;;;:::i;:::-;;415:106;355:166;:::o;1259:213:8:-;1397:10;1346:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1422:43;1454:10;1422:43;;;;;;:::i;:::-;;;;;;;;1259:213;:::o;1938:329::-;410:7;2027:38;;:6;:38;;;2023:106;;;2088:30;;;;;;;;;;;;;;2023:106;2198:6;2139:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2219:41;2253:6;2219:41;;;;;;:::i;:::-;;;;;;;;1938:329;:::o;1478:224::-;1621:13;1568:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1649:46;1681:13;1649:46;;;;;;:::i;:::-;;;;;;;;1478:224;:::o;2273:225::-;2418:15;:6;:13;:15::i;:::-;2361:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2448:43;2484:6;2448:43;;;;;;:::i;:::-;;;;;;;;2273:225;:::o;739:514::-;816:26;845:25;:23;:25::i;:::-;816:54;;881:19;903:15;:6;:13;:15::i;:::-;881:37;;929:21;953:25;:2;:23;:25::i;:::-;929:49;;1008:14;993:29;;:12;:29;;;989:88;;;1045:21;;;;;;;;;;;;;;989:88;1120:12;1103:14;:29;;;;:::i;:::-;1087:2;:13;;;:45;;;;;;;;;;;;;;;;;;1143:43;1167:10;1179:6;1143:23;:43::i;:::-;1202:44;1227:6;1235:10;1202:44;;;;;;;:::i;:::-;;;;;;;;806:447;;;739:514;:::o;254:95:7:-;316:4;:21;;;338:3;316:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;254:95;:::o;2504:181:8:-;2624:6;2581:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2645:33;2671:6;2645:33;;;;;;:::i;:::-;;;;;;;;2504:181;:::o;1708:224::-;1851:13;1798:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1879:46;1911:13;1879:46;;;;;;:::i;:::-;;;;;;;;1708:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:101::-;1488:7;1528:18;1521:5;1517:30;1506:41;;1452:101;;;:::o;1559:120::-;1631:23;1648:5;1631:23;:::i;:::-;1624:5;1621:34;1611:62;;1669:1;1666;1659:12;1611:62;1559:120;:::o;1685:137::-;1730:5;1768:6;1755:20;1746:29;;1784:32;1810:5;1784:32;:::i;:::-;1685:137;;;;:::o;1828:327::-;1886:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:119;;;1941:79;;:::i;:::-;1903:119;2061:1;2086:52;2130:7;2121:6;2110:9;2106:22;2086:52;:::i;:::-;2076:62;;2032:116;1828:327;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:180::-;2671:77;2668:1;2661:88;2768:4;2765:1;2758:15;2792:4;2789:1;2782:15;2809:115;2894:23;2911:5;2894:23;:::i;:::-;2889:3;2882:36;2809:115;;:::o;2930:218::-;3021:4;3059:2;3048:9;3044:18;3036:26;;3072:69;3138:1;3127:9;3123:17;3114:6;3072:69;:::i;:::-;2930:218;;;;:::o;3154:222::-;3247:4;3285:2;3274:9;3270:18;3262:26;;3298:71;3366:1;3355:9;3351:17;3342:6;3298:71;:::i;:::-;3154:222;;;;:::o;3382:180::-;3430:77;3427:1;3420:88;3527:4;3524:1;3517:15;3551:4;3548:1;3541:15;3568:208;3607:4;3627:19;3644:1;3627:19;:::i;:::-;3622:24;;3660:19;3677:1;3660:19;:::i;:::-;3655:24;;3703:1;3700;3696:9;3688:17;;3727:18;3721:4;3718:28;3715:54;;;3749:18;;:::i;:::-;3715:54;3568:208;;;;:::o;3782:126::-;3819:7;3859:42;3852:5;3848:54;3837:65;;3782:126;;;:::o;3914:96::-;3951:7;3980:24;3998:5;3980:24;:::i;:::-;3969:35;;3914:96;;;:::o;4016:118::-;4103:24;4121:5;4103:24;:::i;:::-;4098:3;4091:37;4016:118;;:::o;4140:332::-;4261:4;4299:2;4288:9;4284:18;4276:26;;4312:71;4380:1;4369:9;4365:17;4356:6;4312:71;:::i;:::-;4393:72;4461:2;4450:9;4446:18;4437:6;4393:72;:::i;:::-;4140:332;;;;;:::o;4478:194::-;4518:4;4538:20;4556:1;4538:20;:::i;:::-;4533:25;;4572:20;4590:1;4572:20;:::i;:::-;4567:25;;4616:1;4613;4609:9;4601:17;;4640:1;4634:4;4631:11;4628:37;;;4645:18;;:::i;:::-;4628:37;4478:194;;;;:::o;4678:410::-;4718:7;4741:20;4759:1;4741:20;:::i;:::-;4736:25;;4775:20;4793:1;4775:20;:::i;:::-;4770:25;;4830:1;4827;4823:9;4852:30;4870:11;4852:30;:::i;:::-;4841:41;;5031:1;5022:7;5018:15;5015:1;5012:22;4992:1;4985:9;4965:83;4942:139;;5061:18;;:::i;:::-;4942:139;4726:362;4678:410;;;;:::o;5094:169::-;5178:11;5212:6;5207:3;5200:19;5252:4;5247:3;5243:14;5228:29;;5094:169;;;;:::o;5269:168::-;5409:20;5405:1;5397:6;5393:14;5386:44;5269:168;:::o;5443:366::-;5585:3;5606:67;5670:2;5665:3;5606:67;:::i;:::-;5599:74;;5682:93;5771:3;5682:93;:::i;:::-;5800:2;5795:3;5791:12;5784:19;;5443:366;;;:::o;5815:419::-;5981:4;6019:2;6008:9;6004:18;5996:26;;6068:9;6062:4;6058:20;6054:1;6043:9;6039:17;6032:47;6096:131;6222:4;6096:131;:::i;:::-;6088:139;;5815:419;;;:::o;6240:180::-;6288:77;6285:1;6278:88;6385:4;6382:1;6375:15;6409:4;6406:1;6399:15;6426:185;6466:1;6483:20;6501:1;6483:20;:::i;:::-;6478:25;;6517:20;6535:1;6517:20;:::i;:::-;6512:25;;6556:1;6546:35;;6561:18;;:::i;:::-;6546:35;6603:1;6600;6596:9;6591:14;;6426:185;;;;:::o;6617:275::-;6656:7;6679:19;6696:1;6679:19;:::i;:::-;6674:24;;6712:19;6729:1;6712:19;:::i;:::-;6707:24;;6766:1;6763;6759:9;6788:29;6805:11;6788:29;:::i;:::-;6777:40;;6849:11;6840:7;6837:24;6827:58;;6865:18;;:::i;:::-;6827:58;6664:228;6617:275;;;;:::o;6898:205::-;6937:3;6956:19;6973:1;6956:19;:::i;:::-;6951:24;;6989:19;7006:1;6989:19;:::i;:::-;6984:24;;7031:1;7028;7024:9;7017:16;;7054:18;7049:3;7046:27;7043:53;;;7076:18;;:::i;:::-;7043:53;6898:205;;;;:::o;7109:332::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:71;7349:1;7338:9;7334:17;7325:6;7281:71;:::i;:::-;7362:72;7430:2;7419:9;7415:18;7406:6;7362:72;:::i;:::-;7109:332;;;;;:::o;7447:116::-;7517:21;7532:5;7517:21;:::i;:::-;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;7497:60;7447:116;:::o;7569:137::-;7623:5;7654:6;7648:13;7639:22;;7670:30;7694:5;7670:30;:::i;:::-;7569:137;;;;:::o;7712:345::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:61;8032:7;8023:6;8012:9;8008:22;7979:61;:::i;:::-;7969:71;;7925:125;7712:345;;;;:::o;8063:176::-;8095:1;8112:20;8130:1;8112:20;:::i;:::-;8107:25;;8146:20;8164:1;8146:20;:::i;:::-;8141:25;;8185:1;8175:35;;8190:18;;:::i;:::-;8175:35;8231:1;8228;8224:9;8219:14;;8063:176;;;;:::o;8245:172::-;8385:24;8381:1;8373:6;8369:14;8362:48;8245:172;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_networkfee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6107091760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61110580620001146000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b93565b6101bd565b005b6100c7610283565b6040516100d49190610bdb565b60405180910390f35b6100f760048036038101906100f29190610c36565b6102c7565b005b610113600480360381019061010e9190610c36565b610333565b005b61012f600480360381019061012a9190610c36565b6103f0565b005b61014b60048036038101906101469190610b93565b61045c565b005b61016760048036038101906101629190610b93565b6104d0565b005b610183600480360381019061017e9190610b93565b6105c3565b005b61019f600480360381019061019a9190610c36565b610631565b005b6101bb60048036038101906101b69190610c36565b61069d565b005b600081036101f7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610201610709565b905060008160000160109054906101000a900467ffffffffffffffff169050610233838361074590919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102678267ffffffffffffffff166107db565b84604051610276929190610c72565b60405180910390a1505050565b60008061028e610709565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16116102c3576102c2610c9b565b5b5090565b806102d0610709565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516103289190610cd9565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff161015610384576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061038d610709565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103e59190610cd9565b60405180910390a150565b806103f9610709565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104519190610cd9565b60405180910390a150565b610465816107fd565b61046d610709565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104c59190610cf4565b60405180910390a150565b60006104da610709565b905060006104e7836107fd565b905060006104f483610877565b90508067ffffffffffffffff168267ffffffffffffffff161115610544576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105509190610d3e565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105843385610911565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516105b5929190610dbb565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105fc9190610cf4565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b5050505050565b8061063a610709565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106929190610cd9565b60405180910390a150565b806106a6610709565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106fe9190610cd9565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61073c9190610de4565b90508091505090565b61074e826109f4565b61075782610a4d565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506107ad816107fd565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107f69190610e18565b9050919050565b600062989680680100000000000000006108179190610e18565b821115610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090610eb7565b60405180910390fd5b6298968061086683610ac2565b6108709190610f06565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108d39190610d3e565b6108dd9190610f37565b6108e79190610f37565b8260010160009054906101000a900467ffffffffffffffff1661090a9190610f74565b9050919050565b610919610b1c565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610977929190610fb0565b6020604051808303816000875af1158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611005565b6109f0576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109fd81610877565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a8e9190610de4565b610a989190610f37565b8260000160189054906101000a900467ffffffffffffffff16610abb9190610f74565b9050919050565b6000806298968083610ad49190611032565b14610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906110af565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b4f9190610de4565b90508091505090565b600080fd5b6000819050919050565b610b7081610b5d565b8114610b7b57600080fd5b50565b600081359050610b8d81610b67565b92915050565b600060208284031215610ba957610ba8610b58565b5b6000610bb784828501610b7e565b91505092915050565b60008115159050919050565b610bd581610bc0565b82525050565b6000602082019050610bf06000830184610bcc565b92915050565b600067ffffffffffffffff82169050919050565b610c1381610bf6565b8114610c1e57600080fd5b50565b600081359050610c3081610c0a565b92915050565b600060208284031215610c4c57610c4b610b58565b5b6000610c5a84828501610c21565b91505092915050565b610c6c81610b5d565b82525050565b6000604082019050610c876000830185610c63565b610c946020830184610c63565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610cd381610bf6565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b6000602082019050610d096000830184610c63565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d4982610bf6565b9150610d5483610bf6565b9250828203905067ffffffffffffffff811115610d7457610d73610d0f565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610da582610d7a565b9050919050565b610db581610d9a565b82525050565b6000604082019050610dd06000830185610c63565b610ddd6020830184610dac565b9392505050565b6000610def82610b5d565b9150610dfa83610b5d565b9250828203905081811115610e1257610e11610d0f565b5b92915050565b6000610e2382610b5d565b9150610e2e83610b5d565b9250828202610e3c81610b5d565b91508282048414831517610e5357610e52610d0f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610ea1601283610e5a565b9150610eac82610e6b565b602082019050919050565b60006020820190508181036000830152610ed081610e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610f1182610b5d565b9150610f1c83610b5d565b925082610f2c57610f2b610ed7565b5b828204905092915050565b6000610f4282610bf6565b9150610f4d83610bf6565b9250828202610f5b81610bf6565b9150808214610f6d57610f6c610d0f565b5b5092915050565b6000610f7f82610bf6565b9150610f8a83610bf6565b9250828201905067ffffffffffffffff811115610faa57610fa9610d0f565b5b92915050565b6000604082019050610fc56000830185610dac565b610fd26020830184610c63565b9392505050565b610fe281610bc0565b8114610fed57600080fd5b50565b600081519050610fff81610fd9565b92915050565b60006020828403121561101b5761101a610b58565b5b600061102984828501610ff0565b91505092915050565b600061103d82610b5d565b915061104883610b5d565b92508261105857611057610ed7565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000611099601683610e5a565b91506110a482611063565b602082019050919050565b600060208201905081810360008301526110c88161108c565b905091905056fea26469706673582212205582eee75e0232e9307857cd1e8f8677bccbfc875c97c164d03068c3d05d54b764736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b93565b6101bd565b005b6100c7610283565b6040516100d49190610bdb565b60405180910390f35b6100f760048036038101906100f29190610c36565b6102c7565b005b610113600480360381019061010e9190610c36565b610333565b005b61012f600480360381019061012a9190610c36565b6103f0565b005b61014b60048036038101906101469190610b93565b61045c565b005b61016760048036038101906101629190610b93565b6104d0565b005b610183600480360381019061017e9190610b93565b6105c3565b005b61019f600480360381019061019a9190610c36565b610631565b005b6101bb60048036038101906101b69190610c36565b61069d565b005b600081036101f7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610201610709565b905060008160000160109054906101000a900467ffffffffffffffff169050610233838361074590919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102678267ffffffffffffffff166107db565b84604051610276929190610c72565b60405180910390a1505050565b60008061028e610709565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16116102c3576102c2610c9b565b5b5090565b806102d0610709565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516103289190610cd9565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff161015610384576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061038d610709565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103e59190610cd9565b60405180910390a150565b806103f9610709565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104519190610cd9565b60405180910390a150565b610465816107fd565b61046d610709565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104c59190610cf4565b60405180910390a150565b60006104da610709565b905060006104e7836107fd565b905060006104f483610877565b90508067ffffffffffffffff168267ffffffffffffffff161115610544576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105509190610d3e565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105843385610911565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516105b5929190610dbb565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105fc9190610cf4565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b5050505050565b8061063a610709565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106929190610cd9565b60405180910390a150565b806106a6610709565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106fe9190610cd9565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61073c9190610de4565b90508091505090565b61074e826109f4565b61075782610a4d565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506107ad816107fd565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107f69190610e18565b9050919050565b600062989680680100000000000000006108179190610e18565b821115610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090610eb7565b60405180910390fd5b6298968061086683610ac2565b6108709190610f06565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108d39190610d3e565b6108dd9190610f37565b6108e79190610f37565b8260010160009054906101000a900467ffffffffffffffff1661090a9190610f74565b9050919050565b610919610b1c565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610977929190610fb0565b6020604051808303816000875af1158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190611005565b6109f0576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109fd81610877565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a8e9190610de4565b610a989190610f37565b8260000160189054906101000a900467ffffffffffffffff16610abb9190610f74565b9050919050565b6000806298968083610ad49190611032565b14610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906110af565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b4f9190610de4565b90508091505090565b600080fd5b6000819050919050565b610b7081610b5d565b8114610b7b57600080fd5b50565b600081359050610b8d81610b67565b92915050565b600060208284031215610ba957610ba8610b58565b5b6000610bb784828501610b7e565b91505092915050565b60008115159050919050565b610bd581610bc0565b82525050565b6000602082019050610bf06000830184610bcc565b92915050565b600067ffffffffffffffff82169050919050565b610c1381610bf6565b8114610c1e57600080fd5b50565b600081359050610c3081610c0a565b92915050565b600060208284031215610c4c57610c4b610b58565b5b6000610c5a84828501610c21565b91505092915050565b610c6c81610b5d565b82525050565b6000604082019050610c876000830185610c63565b610c946020830184610c63565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610cd381610bf6565b82525050565b6000602082019050610cee6000830184610cca565b92915050565b6000602082019050610d096000830184610c63565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d4982610bf6565b9150610d5483610bf6565b9250828203905067ffffffffffffffff811115610d7457610d73610d0f565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610da582610d7a565b9050919050565b610db581610d9a565b82525050565b6000604082019050610dd06000830185610c63565b610ddd6020830184610dac565b9392505050565b6000610def82610b5d565b9150610dfa83610b5d565b9250828203905081811115610e1257610e11610d0f565b5b92915050565b6000610e2382610b5d565b9150610e2e83610b5d565b9250828202610e3c81610b5d565b91508282048414831517610e5357610e52610d0f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610ea1601283610e5a565b9150610eac82610e6b565b602082019050919050565b60006020820190508181036000830152610ed081610e94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610f1182610b5d565b9150610f1c83610b5d565b925082610f2c57610f2b610ed7565b5b828204905092915050565b6000610f4282610bf6565b9150610f4d83610bf6565b9250828202610f5b81610bf6565b9150808214610f6d57610f6c610d0f565b5b5092915050565b6000610f7f82610bf6565b9150610f8a83610bf6565b9250828201905067ffffffffffffffff811115610faa57610fa9610d0f565b5b92915050565b6000604082019050610fc56000830185610dac565b610fd26020830184610c63565b9392505050565b610fe281610bc0565b8114610fed57600080fd5b50565b600081519050610fff81610fd9565b92915050565b60006020828403121561101b5761101a610b58565b5b600061102984828501610ff0565b91505092915050565b600061103d82610b5d565b915061104883610b5d565b92508261105857611057610ed7565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000611099601683610e5a565b91506110a482611063565b602082019050919050565b600060208201905081810360008301526110c88161108c565b905091905056fea26469706673582212205582eee75e0232e9307857cd1e8f8677bccbfc875c97c164d03068c3d05d54b764736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2473:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2473:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:309;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1259:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1938:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1478:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2273:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;739:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2504:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1708:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:309;502:1;495:3;:8;491:32;;512:11;;;;;;;;;;;;;;491:32;534:26;563:25;:23;:25::i;:::-;534:54;;598:18;619:2;:13;;;;;;;;;;;;598:34;;643:24;663:3;643:2;:19;;:24;;;;:::i;:::-;682:44;700:20;:11;:18;;;:20::i;:::-;722:3;682:44;;;;;;;:::i;:::-;;;;;;;;481:252;;424:309;:::o;1259:213::-;1397:10;1346:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1422:43;1454:10;1422:43;;;;;;:::i;:::-;;;;;;;;1259:213;:::o;1938:329::-;410:7;2027:38;;:6;:38;;;2023:106;;;2088:30;;;;;;;;;;;;;;2023:106;2198:6;2139:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2219:41;2253:6;2219:41;;;;;;:::i;:::-;;;;;;;;1938:329;:::o;1478:224::-;1621:13;1568:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1649:46;1681:13;1649:46;;;;;;:::i;:::-;;;;;;;;1478:224;:::o;2273:225::-;2418:15;:6;:13;:15::i;:::-;2361:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2448:43;2484:6;2448:43;;;;;;:::i;:::-;;;;;;;;2273:225;:::o;739:514::-;816:26;845:25;:23;:25::i;:::-;816:54;;881:19;903:15;:6;:13;:15::i;:::-;881:37;;929:21;953:25;:2;:23;:25::i;:::-;929:49;;1008:14;993:29;;:12;:29;;;989:88;;;1045:21;;;;;;;;;;;;;;989:88;1120:12;1103:14;:29;;;;:::i;:::-;1087:2;:13;;;:45;;;;;;;;;;;;;;;;;;1143:43;1167:10;1179:6;1143:23;:43::i;:::-;1202:44;1227:6;1235:10;1202:44;;;;;;;:::i;:::-;;;;;;;;806:447;;;739:514;:::o;2504:181::-;2624:6;2581:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2645:33;2671:6;2645:33;;;;;;:::i;:::-;;;;;;;;2504:181;:::o;1708:224::-;1851:13;1798:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1879:46;1911:13;1879:46;;;;;;:::i;:::-;;;;;;;;1708:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610faa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a91565b61016d565b005b6100c360048036038101906100be9190610afe565b610233565b005b6100df60048036038101906100da9190610afe565b61029f565b005b6100fb60048036038101906100f69190610afe565b61035c565b005b61011760048036038101906101129190610a91565b6103c8565b005b610133600480360381019061012e9190610a91565b61043c565b005b61014f600480360381019061014a9190610afe565b61052f565b005b61016b60048036038101906101669190610afe565b61059b565b005b600081036101a7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101b1610607565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e3838361064390919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102178267ffffffffffffffff166106d9565b84604051610226929190610b3a565b60405180910390a1505050565b8061023c610607565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102949190610b72565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102f0576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102f9610607565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103519190610b72565b60405180910390a150565b80610365610607565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103bd9190610b72565b60405180910390a150565b6103d1816106fb565b6103d9610607565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104319190610b8d565b60405180910390a150565b6000610446610607565b90506000610453836106fb565b9050600061046083610775565b90508067ffffffffffffffff168267ffffffffffffffff1611156104b0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104bc9190610bd7565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104f0338561080f565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610521929190610c54565b60405180910390a150505050565b80610538610607565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105909190610b72565b60405180910390a150565b806105a4610607565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105fc9190610b72565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61063a9190610c7d565b90508091505090565b61064c826108f2565b6106558261094b565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506106ab816106fb565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106f49190610cb1565b9050919050565b600062989680680100000000000000006107159190610cb1565b821115610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e90610d50565b60405180910390fd5b62989680610764836109c0565b61076e9190610d9f565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107d19190610bd7565b6107db9190610dd0565b6107e59190610dd0565b8260010160009054906101000a900467ffffffffffffffff166108089190610e0d565b9050919050565b610817610a1a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610875929190610e49565b6020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190610eaa565b6108ee576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108fb81610775565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff164361098c9190610c7d565b6109969190610dd0565b8260000160189054906101000a900467ffffffffffffffff166109b99190610e0d565b9050919050565b60008062989680836109d29190610ed7565b14610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0990610f54565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a4d9190610c7d565b90508091505090565b600080fd5b6000819050919050565b610a6e81610a5b565b8114610a7957600080fd5b50565b600081359050610a8b81610a65565b92915050565b600060208284031215610aa757610aa6610a56565b5b6000610ab584828501610a7c565b91505092915050565b600067ffffffffffffffff82169050919050565b610adb81610abe565b8114610ae657600080fd5b50565b600081359050610af881610ad2565b92915050565b600060208284031215610b1457610b13610a56565b5b6000610b2284828501610ae9565b91505092915050565b610b3481610a5b565b82525050565b6000604082019050610b4f6000830185610b2b565b610b5c6020830184610b2b565b9392505050565b610b6c81610abe565b82525050565b6000602082019050610b876000830184610b63565b92915050565b6000602082019050610ba26000830184610b2b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610be282610abe565b9150610bed83610abe565b9250828203905067ffffffffffffffff811115610c0d57610c0c610ba8565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3e82610c13565b9050919050565b610c4e81610c33565b82525050565b6000604082019050610c696000830185610b2b565b610c766020830184610c45565b9392505050565b6000610c8882610a5b565b9150610c9383610a5b565b9250828203905081811115610cab57610caa610ba8565b5b92915050565b6000610cbc82610a5b565b9150610cc783610a5b565b9250828202610cd581610a5b565b91508282048414831517610cec57610ceb610ba8565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d3a601283610cf3565b9150610d4582610d04565b602082019050919050565b60006020820190508181036000830152610d6981610d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610daa82610a5b565b9150610db583610a5b565b925082610dc557610dc4610d70565b5b828204905092915050565b6000610ddb82610abe565b9150610de683610abe565b9250828202610df481610abe565b9150808214610e0657610e05610ba8565b5b5092915050565b6000610e1882610abe565b9150610e2383610abe565b9250828201905067ffffffffffffffff811115610e4357610e42610ba8565b5b92915050565b6000604082019050610e5e6000830185610c45565b610e6b6020830184610b2b565b9392505050565b60008115159050919050565b610e8781610e72565b8114610e9257600080fd5b50565b600081519050610ea481610e7e565b92915050565b600060208284031215610ec057610ebf610a56565b5b6000610ece84828501610e95565b91505092915050565b6000610ee282610a5b565b9150610eed83610a5b565b925082610efd57610efc610d70565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f3e601683610cf3565b9150610f4982610f08565b602082019050919050565b60006020820190508181036000830152610f6d81610f31565b905091905056fea26469706673582212207f91e7f76ecfbbbcde72577f1f75c5674ea9bbba4843e9f279b9d44bdcb9f09864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a91565b61016d565b005b6100c360048036038101906100be9190610afe565b610233565b005b6100df60048036038101906100da9190610afe565b61029f565b005b6100fb60048036038101906100f69190610afe565b61035c565b005b61011760048036038101906101129190610a91565b6103c8565b005b610133600480360381019061012e9190610a91565b61043c565b005b61014f600480360381019061014a9190610afe565b61052f565b005b61016b60048036038101906101669190610afe565b61059b565b005b600081036101a7576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101b1610607565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e3838361064390919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102178267ffffffffffffffff166106d9565b84604051610226929190610b3a565b60405180910390a1505050565b8061023c610607565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102949190610b72565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102f0576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102f9610607565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103519190610b72565b60405180910390a150565b80610365610607565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103bd9190610b72565b60405180910390a150565b6103d1816106fb565b6103d9610607565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104319190610b8d565b60405180910390a150565b6000610446610607565b90506000610453836106fb565b9050600061046083610775565b90508067ffffffffffffffff168267ffffffffffffffff1611156104b0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104bc9190610bd7565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104f0338561080f565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610521929190610c54565b60405180910390a150505050565b80610538610607565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105909190610b72565b60405180910390a150565b806105a4610607565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105fc9190610b72565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61063a9190610c7d565b90508091505090565b61064c826108f2565b6106558261094b565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506106ab816106fb565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106f49190610cb1565b9050919050565b600062989680680100000000000000006107159190610cb1565b821115610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e90610d50565b60405180910390fd5b62989680610764836109c0565b61076e9190610d9f565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107d19190610bd7565b6107db9190610dd0565b6107e59190610dd0565b8260010160009054906101000a900467ffffffffffffffff166108089190610e0d565b9050919050565b610817610a1a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610875929190610e49565b6020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190610eaa565b6108ee576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108fb81610775565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff164361098c9190610c7d565b6109969190610dd0565b8260000160189054906101000a900467ffffffffffffffff166109b99190610e0d565b9050919050565b60008062989680836109d29190610ed7565b14610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0990610f54565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a4d9190610c7d565b90508091505090565b600080fd5b6000819050919050565b610a6e81610a5b565b8114610a7957600080fd5b50565b600081359050610a8b81610a65565b92915050565b600060208284031215610aa757610aa6610a56565b5b6000610ab584828501610a7c565b91505092915050565b600067ffffffffffffffff82169050919050565b610adb81610abe565b8114610ae657600080fd5b50565b600081359050610af881610ad2565b92915050565b600060208284031215610b1457610b13610a56565b5b6000610b2284828501610ae9565b91505092915050565b610b3481610a5b565b82525050565b6000604082019050610b4f6000830185610b2b565b610b5c6020830184610b2b565b9392505050565b610b6c81610abe565b82525050565b6000602082019050610b876000830184610b63565b92915050565b6000602082019050610ba26000830184610b2b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610be282610abe565b9150610bed83610abe565b9250828203905067ffffffffffffffff811115610c0d57610c0c610ba8565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3e82610c13565b9050919050565b610c4e81610c33565b82525050565b6000604082019050610c696000830185610b2b565b610c766020830184610c45565b9392505050565b6000610c8882610a5b565b9150610c9383610a5b565b9250828203905081811115610cab57610caa610ba8565b5b92915050565b6000610cbc82610a5b565b9150610cc783610a5b565b9250828202610cd581610a5b565b91508282048414831517610cec57610ceb610ba8565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d3a601283610cf3565b9150610d4582610d04565b602082019050919050565b60006020820190508181036000830152610d6981610d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610daa82610a5b565b9150610db583610a5b565b925082610dc557610dc4610d70565b5b828204905092915050565b6000610ddb82610abe565b9150610de683610abe565b9250828202610df481610abe565b9150808214610e0657610e05610ba8565b5b5092915050565b6000610e1882610abe565b9150610e2383610abe565b9250828201905067ffffffffffffffff811115610e4357610e42610ba8565b5b92915050565b6000604082019050610e5e6000830185610c45565b610e6b6020830184610b2b565b9392505050565b60008115159050919050565b610e8781610e72565b8114610e9257600080fd5b50565b600081519050610ea481610e7e565b92915050565b600060208284031215610ec057610ebf610a56565b5b6000610ece84828501610e95565b91505092915050565b6000610ee282610a5b565b9150610eed83610a5b565b925082610efd57610efc610d70565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f3e601683610cf3565b9150610f4982610f08565b602082019050919050565b60006020820190508181036000830152610f6d81610f31565b905091905056fea26469706673582212207f91e7f76ecfbbbcde72577f1f75c5674ea9bbba4843e9f279b9d44bdcb9f09864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [2234]}, "id": 2235, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2120, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 2234, "linearizedBaseContracts": [2234], "name": "ISSVNetworkCore", "nameLocation": "80:15:0", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 2130, "members": [{"constant": false, "id": 2123, "mutability": "mutable", "name": "block", "nameLocation": "343:5:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "336:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2122, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2126, "mutability": "mutable", "name": "index", "nameLocation": "461:5:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "454:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2125, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2129, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "587:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2128, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:0", "nodeType": "StructDefinition", "scope": 2234, "src": "248:360:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 2147, "members": [{"constant": false, "id": 2133, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "755:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2132, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2136, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "903:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2135, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2139, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "976:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2138, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2142, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1051:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2141, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2146, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1129:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 2145, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2144, "name": "Snapshot", "nameLocations": ["1129:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2130, "src": "1129:8:0"}, "referencedDeclaration": 2130, "src": "1129:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:0", "nodeType": "StructDefinition", "scope": 2234, "src": "657:496:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 2157, "members": [{"constant": false, "id": 2150, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1320:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2149, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2153, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1417:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2152, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2156, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1526:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2155, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:0", "nodeType": "StructDefinition", "scope": 2234, "src": "1224:331:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 2173, "members": [{"constant": false, "id": 2160, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1694:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2159, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2163, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1792:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2162, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2166, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1883:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2165, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2169, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1968:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2168, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2172, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "2033:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2171, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:0", "nodeType": "StructDefinition", "scope": 2234, "src": "1612:443:0", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 2175, "name": "CallerNotOwner", "nameLocation": "2119:14:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2174, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:0"}, "src": "2113:23:0"}, {"errorSelector": "8c6e5d71", "id": 2177, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2176, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:0"}, "src": "2155:29:0"}, {"errorSelector": "732f9413", "id": 2179, "name": "FeeTooLow", "nameLocation": "2209:9:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2178, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:0"}, "src": "2203:18:0"}, {"errorSelector": "958065d9", "id": 2181, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2180, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:0"}, "src": "2240:32:0"}, {"errorSelector": "1d226c30", "id": 2183, "name": "NoFeeDeclared", "nameLocation": "2297:13:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2182, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:0"}, "src": "2291:22:0"}, {"errorSelector": "97e4b518", "id": 2185, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:0"}, "src": "2332:35:0"}, {"errorSelector": "961e3e8c", "id": 2187, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2186, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:0"}, "src": "2386:29:0"}, {"errorSelector": "f4d678b8", "id": 2189, "name": "InsufficientBalance", "nameLocation": "2440:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2188, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:0"}, "src": "2434:28:0"}, {"errorSelector": "8d09a73e", "id": 2191, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:0"}, "src": "2481:31:0"}, {"errorSelector": "e51315d2", "id": 2193, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2192, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:0"}, "src": "2531:30:0"}, {"errorSelector": "2feda3c1", "id": 2195, "name": "IncorrectValidatorState", "nameLocation": "2586:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2194, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:0"}, "src": "2580:32:0"}, {"errorSelector": "60300a8d", "id": 2197, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:0"}, "src": "2631:31:0"}, {"errorSelector": "637297a4", "id": 2199, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2198, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:0"}, "src": "2681:31:0"}, {"errorSelector": "38186224", "id": 2201, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2200, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:0"}, "src": "2731:33:0"}, {"errorSelector": "3babafd2", "id": 2203, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2202, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:0"}, "src": "2783:30:0"}, {"errorSelector": "95a0cf33", "id": 2205, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2204, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:0"}, "src": "2832:28:0"}, {"errorSelector": "185e2b16", "id": 2207, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2206, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:0"}, "src": "2879:29:0"}, {"errorSelector": "12e04c87", "id": 2209, "name": "IncorrectClusterState", "nameLocation": "2933:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2208, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:0"}, "src": "2927:30:0"}, {"errorSelector": "dd020e25", "id": 2211, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2210, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:0"}, "src": "2976:30:0"}, {"errorSelector": "6e6c9cac", "id": 2213, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2212, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:0"}, "src": "3025:37:0"}, {"errorSelector": "6df5ab76", "id": 2215, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2214, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:0"}, "src": "3081:29:0"}, {"errorSelector": "045c4b02", "id": 2217, "name": "TokenTransferFailed", "nameLocation": "3135:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2216, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:0"}, "src": "3129:28:0"}, {"errorSelector": "c81272f8", "id": 2219, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2218, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:0"}, "src": "3176:32:0"}, {"errorSelector": "410a2b6c", "id": 2221, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2220, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:0"}, "src": "3227:30:0"}, {"errorSelector": "ea8e4eb5", "id": 2223, "name": "NotAuthorized", "nameLocation": "3282:13:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2222, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:0"}, "src": "3276:22:0"}, {"errorSelector": "a5a1ff5d", "id": 2225, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2224, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:0"}, "src": "3317:31:0"}, {"errorSelector": "289c9494", "id": 2227, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2226, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:0"}, "src": "3367:30:0"}, {"errorSelector": "8f9195fb", "id": 2229, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2228, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:0"}, "src": "3416:33:0"}, {"errorSelector": "91aa3017", "id": 2231, "name": "MaxValueExceeded", "nameLocation": "3474:16:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2230, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:0"}, "src": "3468:25:0"}, {"errorSelector": "cd4e6167", "id": 2233, "name": "FeeTooHigh", "nameLocation": "3518:10:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2232, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:0"}, "src": "3512:19:0"}], "scope": 2235, "src": "70:3477:0", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:3503:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [2234], "ISSVOperators": [1458]}, "id": 1459, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1324, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1325, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1459, "sourceUnit": 2235, "src": "70:31:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1326, "name": "ISSVNetworkCore", "nameLocations": ["130:15:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 2234, "src": "130:15:1"}, "id": 1327, "nodeType": "InheritanceSpecifier", "src": "130:15:1"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1458, "linearizedBaseContracts": [1458, 2234], "name": "ISSVOperators", "nameLocation": "113:13:1", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1328, "nodeType": "StructuredDocumentation", "src": "152:136:1", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1337, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1333, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1330, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "319:24:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1329, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:1", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1332, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "345:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1331, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:1"}, "returnParameters": {"id": 1336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1335, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "376:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:1"}, "scope": 1458, "src": "293:91:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1338, "nodeType": "StructuredDocumentation", "src": "390:103:1", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1343, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1340, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:1", "nodeType": "VariableDeclaration", "scope": 1343, "src": "522:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:1"}, "returnParameters": {"id": 1342, "nodeType": "ParameterList", "parameters": [], "src": "549:0:1"}, "scope": 1458, "src": "498:52:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1344, "nodeType": "StructuredDocumentation", "src": "556:152:1", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1351, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1346, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:1", "nodeType": "VariableDeclaration", "scope": 1351, "src": "743:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1345, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1348, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:1", "nodeType": "VariableDeclaration", "scope": 1351, "src": "762:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1347, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:1"}, "returnParameters": {"id": 1350, "nodeType": "ParameterList", "parameters": [], "src": "791:0:1"}, "scope": 1458, "src": "713:79:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1352, "nodeType": "StructuredDocumentation", "src": "798:136:1", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1359, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1354, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:1", "nodeType": "VariableDeclaration", "scope": 1359, "src": "967:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1353, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1356, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:1", "nodeType": "VariableDeclaration", "scope": 1359, "src": "986:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:1"}, "returnParameters": {"id": 1358, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:1"}, "scope": 1458, "src": "939:69:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1360, "nodeType": "StructuredDocumentation", "src": "1014:88:1", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1365, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1362, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:1", "nodeType": "VariableDeclaration", "scope": 1365, "src": "1135:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1361, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:1"}, "returnParameters": {"id": 1364, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:1"}, "scope": 1458, "src": "1107:56:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1366, "nodeType": "StructuredDocumentation", "src": "1169:96:1", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1371, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1368, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:1", "nodeType": "VariableDeclaration", "scope": 1371, "src": "1305:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:1"}, "returnParameters": {"id": 1370, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:1"}, "scope": 1458, "src": "1270:63:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1372, "nodeType": "StructuredDocumentation", "src": "1339:135:1", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1379, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1377, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1374, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:1", "nodeType": "VariableDeclaration", "scope": 1379, "src": "1506:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1373, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1376, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:1", "nodeType": "VariableDeclaration", "scope": 1379, "src": "1525:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:1"}, "returnParameters": {"id": 1378, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:1"}, "scope": 1458, "src": "1479:68:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1380, "nodeType": "StructuredDocumentation", "src": "1553:154:1", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1387, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1382, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:1", "nodeType": "VariableDeclaration", "scope": 1387, "src": "1746:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1381, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1384, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:1", "nodeType": "VariableDeclaration", "scope": 1387, "src": "1765:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1383, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:1"}, "returnParameters": {"id": 1386, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:1"}, "scope": 1458, "src": "1712:83:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1388, "nodeType": "StructuredDocumentation", "src": "1801:92:1", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1393, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1390, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:1", "nodeType": "VariableDeclaration", "scope": 1393, "src": "1935:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1389, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:1"}, "returnParameters": {"id": 1392, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:1"}, "scope": 1458, "src": "1898:65:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1394, "nodeType": "StructuredDocumentation", "src": "1969:317:1", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1404, "name": "OperatorAdded", "nameLocation": "2297:13:1", "nodeType": "EventDefinition", "parameters": {"id": 1403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1396, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2311:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1395, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1398, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2338:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1397, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1400, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2361:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1399, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:1", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1402, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2378:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:1"}, "src": "2291:100:1"}, {"anonymous": false, "documentation": {"id": 1405, "nodeType": "StructuredDocumentation", "src": "2397:103:1", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1409, "name": "OperatorRemoved", "nameLocation": "2511:15:1", "nodeType": "EventDefinition", "parameters": {"id": 1408, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1407, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:1", "nodeType": "VariableDeclaration", "scope": 1409, "src": "2527:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1406, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:1"}, "src": "2505:49:1"}, {"anonymous": false, "documentation": {"id": 1410, "nodeType": "StructuredDocumentation", "src": "2560:179:1", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1416, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:1", "nodeType": "EventDefinition", "parameters": {"id": 1415, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1412, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:1", "nodeType": "VariableDeclaration", "scope": 1416, "src": "2775:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1411, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1414, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:1", "nodeType": "VariableDeclaration", "scope": 1416, "src": "2802:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1413, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:1"}, "src": "2744:79:1"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1426, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:1", "nodeType": "EventDefinition", "parameters": {"id": 1425, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1418, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2854:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1417, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1420, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2877:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1419, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1422, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2904:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1421, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1424, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2925:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1423, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:1"}, "src": "2828:110:1"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1432, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:1", "nodeType": "EventDefinition", "parameters": {"id": 1431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1428, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:1", "nodeType": "VariableDeclaration", "scope": 1432, "src": "2982:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1427, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1430, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:1", "nodeType": "VariableDeclaration", "scope": 1432, "src": "3005:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1429, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:1"}, "src": "2944:88:1"}, {"anonymous": false, "documentation": {"id": 1433, "nodeType": "StructuredDocumentation", "src": "3037:192:1", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1443, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:1", "nodeType": "EventDefinition", "parameters": {"id": 1442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1435, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3260:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1434, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1437, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3283:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1436, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1439, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3310:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1441, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3331:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1440, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:1"}, "src": "3234:110:1"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1451, "name": "OperatorWithdrawn", "nameLocation": "3355:17:1", "nodeType": "EventDefinition", "parameters": {"id": 1450, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1445, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3373:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1444, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1447, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3396:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1446, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1449, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3423:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1448, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:1"}, "src": "3349:89:1"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 1457, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:1", "nodeType": "EventDefinition", "parameters": {"id": 1456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1453, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:1", "nodeType": "VariableDeclaration", "scope": 1457, "src": "3476:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1452, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1455, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:1", "nodeType": "VariableDeclaration", "scope": 1457, "src": "3499:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1454, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:1"}, "src": "3443:82:1"}], "scope": 1459, "src": "103:3424:1", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:3483:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "IERC20": [2312], "ISSVNetworkCore": [2234], "SSVModules": [1842], "SSVStorage": [1912], "StorageData": [1889]}, "id": 1590, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1460, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1461, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1590, "sourceUnit": 1913, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1589, "linearizedBaseContracts": [1589], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 1468, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 1467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1464, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 1468, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, "typeName": {"id": 1463, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1462, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "141:10:2"}, "referencedDeclaration": 1842, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1466, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 1468, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1465, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 1475, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 1473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 1472, "id": 1474, "nodeType": "Return", "src": "269:19:2"}]}, "id": 1476, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1469, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 1472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1476, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1470, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 1589, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1499, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 1491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 1488, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1478, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1489, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1480, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1483, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1486, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1884, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2279, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 1490, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1498, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 1497, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1492, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2217, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1496, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 1500, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1478, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 1500, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1477, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1480, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 1500, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1479, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 1482, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 1589, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1526, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 1518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 1510, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 1514, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$1589", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$1589", "typeString": "library CoreLib"}], "id": 1513, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1512, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1516, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1502, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1505, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1884, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2311, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1525, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 1524, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1519, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2217, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1523, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 1527, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1502, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 1527, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1501, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 1504, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 1589, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1553, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1535, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1530, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 1537, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1536, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1544, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 1543, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 1541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1534, "id": 1542, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [1546], "declarations": [{"constant": false, "id": 1546, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 1553, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1547, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1530, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 1546, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 1548, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1549, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1546, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1534, "id": 1552, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 1528, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 1554, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1531, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1530, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 1554, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1529, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 1534, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1533, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1554, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1532, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 1589, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1587, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 1563, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1562, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1571, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1566, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2229, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1570, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1572, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1863, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 1578, "indexExpression": {"id": 1577, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1557, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1579, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1581, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 1583, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1557, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, {"id": 1584, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1582, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1842_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 1585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1586, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 1588, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1557, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, "typeName": {"id": 1556, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1555, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "1826:10:2"}, "referencedDeclaration": 1842, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1559, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1558, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 1561, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 1589, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1590, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "OperatorLib": [1832], "SSVModules": [1842], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 1833, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1591, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1592, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 2235, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1593, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 1913, "src": "114:26:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 1594, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 1978, "src": "141:34:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 1595, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 2045, "src": "176:21:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1832, "linearizedBaseContracts": [1832], "name": "OperatorLib", "nameLocation": "207:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 1598, "libraryName": {"id": 1596, "name": "Types64", "nameLocations": ["231:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "231:7:3"}, "nodeType": "UsingForDirective", "src": "225:25:3", "typeName": {"id": 1597, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 1651, "nodeType": "Block", "src": "336:285:3", "statements": [{"assignments": [1605], "declarations": [{"constant": false, "id": 1605, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:3", "nodeType": "VariableDeclaration", "scope": 1651, "src": "346:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1619, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1608, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1607, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1606, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:3", "typeDescriptions": {}}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1611, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "392:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "392:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1613, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "392:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1615, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1616, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "419:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "419:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:3"}, {"expression": {"id": 1626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1620, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "442:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "442:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1624, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "442:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1625, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1605, "src": "469:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1627, "nodeType": "ExpressionStatement", "src": "442:39:3"}, {"expression": {"id": 1637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1628, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "491:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1631, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "491:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:3", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "491:25:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1633, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1605, "src": "520:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1634, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "535:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1635, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "535:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1638, "nodeType": "ExpressionStatement", "src": "491:67:3"}, {"expression": {"id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1639, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "568:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "568:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "568:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 1646, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1645, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1644, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:3", "typeDescriptions": {}}}, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1650, "nodeType": "ExpressionStatement", "src": "568:46:3"}]}, "id": 1652, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1602, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1601, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:3", "nodeType": "VariableDeclaration", "scope": 1652, "src": "280:40:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1600, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1599, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:3", "296:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "280:24:3"}, "referencedDeclaration": 2147, "src": "280:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:3"}, "returnParameters": {"id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "336:0:3"}, "scope": 1832, "src": "256:365:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1705, "nodeType": "Block", "src": "705:285:3", "statements": [{"assignments": [1659], "declarations": [{"constant": false, "id": 1659, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:3", "nodeType": "VariableDeclaration", "scope": 1705, "src": "715:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1658, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1673, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1662, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1661, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1660, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:3", "typeDescriptions": {}}}, "id": 1664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1665, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "761:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1666, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "761:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "761:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1669, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1670, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "788:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "788:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:3"}, {"expression": {"id": 1680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1674, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "811:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1677, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "811:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1678, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "811:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1679, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "838:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1681, "nodeType": "ExpressionStatement", "src": "811:39:3"}, {"expression": {"id": 1691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1682, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "860:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1685, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "860:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:3", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "860:25:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1687, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "889:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1688, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "904:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1689, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "904:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1692, "nodeType": "ExpressionStatement", "src": "860:67:3"}, {"expression": {"id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1693, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "937:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1696, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "937:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1697, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "937:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 1700, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1698, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:3", "typeDescriptions": {}}}, "id": 1702, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1704, "nodeType": "ExpressionStatement", "src": "937:46:3"}]}, "id": 1706, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1655, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:3", "nodeType": "VariableDeclaration", "scope": 1706, "src": "653:41:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1654, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1653, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:3", "669:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "653:24:3"}, "referencedDeclaration": 2147, "src": "653:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:3"}, "returnParameters": {"id": 1657, "nodeType": "ParameterList", "parameters": [], "src": "705:0:3"}, "scope": 1832, "src": "627:363:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1734, "nodeType": "Block", "src": "1072:179:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1716, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1712, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "1086:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1713, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "1086:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1714, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "1086:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1722, "nodeType": "IfStatement", "src": "1082:79:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1717, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1123:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:3", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2187, "src": "1123:36:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1721, "nodeType": "RevertStatement", "src": "1116:45:3"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1723, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "1175:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1724, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:3", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 2139, "src": "1175:14:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1725, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1733, "nodeType": "IfStatement", "src": "1171:73:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1728, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1212:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:3", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2175, "src": "1212:30:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1731, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1732, "nodeType": "RevertStatement", "src": "1205:39:3"}}]}, "id": 1735, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1709, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:3", "nodeType": "VariableDeclaration", "scope": 1735, "src": "1016:40:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1708, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1707, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:3", "1032:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1016:24:3"}, "referencedDeclaration": 2147, "src": "1016:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:3"}, "returnParameters": {"id": 1711, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:3"}, "scope": 1832, "src": "996:255:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1830, "nodeType": "Block", "src": "1485:831:3", "statements": [{"body": {"id": 1828, "nodeType": "Block", "src": "1537:773:3", "statements": [{"assignments": [1760], "declarations": [{"constant": false, "id": 1760, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:3", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1551:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1764, "initialValue": {"baseExpression": {"id": 1761, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1738, "src": "1571:11:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 1763, "indexExpression": {"id": 1762, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "1583:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:3"}, {"assignments": [1769], "declarations": [{"constant": false, "id": 1769, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:3", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1599:41:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1768, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1767, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:3", "1615:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1599:24:3"}, "referencedDeclaration": 2147, "src": "1599:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1774, "initialValue": {"baseExpression": {"expression": {"id": 1770, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1745, "src": "1643:1:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1771, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:3", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1643:11:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1773, "indexExpression": {"id": 1772, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1760, "src": "1655:10:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:3"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1775, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1684:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1776, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "1684:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "1684:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1817, "nodeType": "IfStatement", "src": "1680:507:3", "trueBody": {"id": 1816, "nodeType": "Block", "src": "1714:473:3", "statements": [{"expression": {"arguments": [{"id": 1781, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1749:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 1780, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1706, "src": "1732:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$2147_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1783, "nodeType": "ExpressionStatement", "src": "1732:26:3"}, {"condition": {"id": 1785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:3", "subExpression": {"id": 1784, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "1781:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 1796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1793, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1924:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1794, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "1924:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1795, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1742, "src": "1951:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1797, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1798, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1974:18:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1974:23:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1800, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:3", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1926, "src": "1974:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1809, "nodeType": "IfStatement", "src": "1898:233:3", "trueBody": {"id": 1808, "nodeType": "Block", "src": "2045:86:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1803, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "2074:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:3", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2215, "src": "2074:36:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1807, "nodeType": "RevertStatement", "src": "2067:45:3"}]}}, "id": 1810, "nodeType": "IfStatement", "src": "1776:355:3", "trueBody": {"id": 1792, "nodeType": "Block", "src": "1805:87:3", "statements": [{"expression": {"id": 1790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1786, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1827:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1788, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "1827:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1789, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1742, "src": "1854:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1791, "nodeType": "ExpressionStatement", "src": "1827:46:3"}]}}, {"expression": {"id": 1814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1811, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1750, "src": "2148:8:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1812, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "2160:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2160:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1815, "nodeType": "ExpressionStatement", "src": "2148:24:3"}]}}, {"expression": {"id": 1822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1818, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1748, "src": "2201:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 1819, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "2217:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1820, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2217:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "2217:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1823, "nodeType": "ExpressionStatement", "src": "2201:39:3"}, {"id": 1827, "nodeType": "UncheckedBlock", "src": "2254:46:3", "statements": [{"expression": {"id": 1825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:3", "subExpression": {"id": 1824, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "2284:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1826, "nodeType": "ExpressionStatement", "src": "2282:3:3"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1755, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "1511:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1756, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1738, "src": "1515:11:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:3", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1829, "initializationExpression": {"assignments": [1753], "declarations": [{"constant": false, "id": 1753, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:3", "nodeType": "VariableDeclaration", "scope": 1829, "src": "1500:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1752, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1754, "nodeType": "VariableDeclarationStatement", "src": "1500:9:3"}, "nodeType": "ForStatement", "src": "1495:815:3"}]}, "id": 1831, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1746, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1738, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1291:27:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1736, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1737, "nodeType": "ArrayTypeName", "src": "1291:8:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1740, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1328:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1739, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1742, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1365:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1741, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1745, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1401:21:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1744, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1743, "name": "StorageData", "nameLocations": ["1401:11:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1401:11:3"}, "referencedDeclaration": 1889, "src": "1401:11:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:3"}, "returnParameters": {"id": 1751, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1748, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1447:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1747, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1750, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1468:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1749, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:3"}, "scope": 1832, "src": "1257:1059:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1833, "src": "199:2119:3", "usedErrors": []}], "src": "45:2274:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2118], "IERC20": [2312], "ISSVNetworkCore": [2234], "SSVModules": [1842], "SSVStorage": [1912], "StorageData": [1889]}, "id": 1913, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1834, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1835, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2235, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1836, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2119, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1837, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2313, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1842, "members": [{"id": 1838, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 1839, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 1840, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 1841, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 1889, "members": [{"constant": false, "id": 1847, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1846, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1844, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1845, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1852, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1851, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1849, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1850, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1857, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1856, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1854, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1855, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1863, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1862, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1860, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1859, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "1006:10:4"}, "referencedDeclaration": 1842, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1861, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1868, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 1867, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1865, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1866, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1874, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 1873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1870, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1872, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1871, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2157, "src": "1322:40:4"}, "referencedDeclaration": 2157, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 1880, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 1879, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1876, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1878, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1877, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1488:24:4"}, "referencedDeclaration": 2147, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 1884, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}, "typeName": {"id": 1883, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1882, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2312, "src": "1599:6:4"}, "referencedDeclaration": 2312, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1888, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1887, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1886, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1686:16:4"}, "referencedDeclaration": 2050, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 1913, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1912, "linearizedBaseContracts": [1912], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1899, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 1912, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 1894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 1893, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1895, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1891, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 1896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1910, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [1906], "declarations": [{"constant": false, "id": 1906, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 1910, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1905, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1908, "initialValue": {"id": 1907, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1899, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1906, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 1903, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 1909, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 1911, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1900, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1903, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 1911, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1901, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1891:11:4"}, "referencedDeclaration": 1889, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 1912, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1913, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1977], "StorageProtocol": [1954]}, "id": 1978, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1914, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 1954, "members": [{"constant": false, "id": 1917, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1916, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1920, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1919, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1922, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1926, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1925, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1929, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1928, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1932, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1931, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1935, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1934, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1938, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1937, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1941, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1940, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1944, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1943, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1946, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1950, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1949, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1953, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1952, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1978, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1977, "linearizedBaseContracts": [1977], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1964, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1977, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1955, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1958, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1957, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 1961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1962, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1975, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1971], "declarations": [{"constant": false, "id": 1971, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1973, "initialValue": {"id": 1972, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1964, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1971, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1968, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1974, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1976, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1968, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1976, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1967, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1966, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "1711:15:5"}, "referencedDeclaration": 1954, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1977, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1978, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1982], "Types256": [2044], "Types64": [1995]}, "id": 2045, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1979, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 1982, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 2045, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1980, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1995, "linearizedBaseContracts": [1995], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1993, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1989, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1984, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1990, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1988, "id": 1992, "nodeType": "Return", "src": "212:30:6"}]}, "id": 1994, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1985, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1984, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 1994, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1983, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 1988, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1987, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1994, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1986, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 1995, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2045, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2044, "linearizedBaseContracts": [2044], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2023, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2003, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1997, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2008, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2004, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 2005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2007, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 2011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 2002, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2012, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2013, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2017, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1997, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2016, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2043, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2018, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2019, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2015, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2014, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 2021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2001, "id": 2022, "nodeType": "Return", "src": "425:50:6"}]}, "id": 2024, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1997, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1996, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 2001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2000, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2024, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1999, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 2044, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2042, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2032, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2033, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2035, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 2037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 2031, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2039, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 2040, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2030, "id": 2041, "nodeType": "Return", "src": "638:12:6"}]}, "id": 2043, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2026, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 2043, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 2030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2029, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2043, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 2044, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2045, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol": {"AST": {"absolutePath": "contracts/modules/Operators.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "ISSVOperators": [1458], "OperatorLib": [1832], "Operators": [467], "SSVModules": [1842], "SSVOperators": [1322], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 468, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "./SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 468, "sourceUnit": 1323, "src": "70:28:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVOperators", "nameLocations": ["122:12:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1322, "src": "122:12:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "122:12:7"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 467, "linearizedBaseContracts": [467, 1322, 1458, 2234], "name": "Operators", "nameLocation": "109:9:7", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 7, "libraryName": {"id": 5, "name": "Types64", "nameLocations": ["147:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "147:7:7"}, "nodeType": "UsingForDirective", "src": "141:25:7", "typeName": {"id": 6, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "159:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 10, "libraryName": {"id": 8, "name": "Types256", "nameLocations": ["177:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2044, "src": "177:8:7"}, "nodeType": "UsingForDirective", "src": "171:27:7", "typeName": {"id": 9, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "190:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": true, "id": 13, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "228:20:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "204:58:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 11, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "204:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 12, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "251:11:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 16, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "292:16:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "268:49:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 14, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "268:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 15, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "311:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "id": 19, "mutability": "mutable", "name": "opIds", "nameLocation": "333:5:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "324:14:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 17, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "324:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 18, "nodeType": "ArrayTypeName", "src": "324:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"anonymous": false, "eventSelector": "d383b8aaba2a09f55ee97f5c05603f3331c5041795f02062b610d674a0b4fa23", "id": 25, "name": "Declared", "nameLocation": "351:8:7", "nodeType": "EventDefinition", "parameters": {"id": 24, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 21, "indexed": false, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "367:13:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "360:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 20, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "360:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 23, "indexed": false, "mutability": "mutable", "name": "operatorFee", "nameLocation": "389:11:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "382:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "382:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "359:42:7"}, "src": "345:57:7"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 31, "name": "AssertionFailed", "nameLocation": "413:15:7", "nodeType": "EventDefinition", "parameters": {"id": 30, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 27, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "436:10:7", "nodeType": "VariableDeclaration", "scope": 31, "src": "429:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 26, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "429:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 29, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "453:13:7", "nodeType": "VariableDeclaration", "scope": 31, "src": "448:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 28, "name": "bool", "nodeType": "ElementaryTypeName", "src": "448:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "428:39:7"}, "src": "407:61:7"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 37, "name": "AssertionFailed", "nameLocation": "479:15:7", "nodeType": "EventDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "502:10:7", "nodeType": "VariableDeclaration", "scope": 37, "src": "495:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "495:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 35, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "521:17:7", "nodeType": "VariableDeclaration", "scope": 37, "src": "514:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 34, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "514:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "494:45:7"}, "src": "473:67:7"}, {"body": {"id": 88, "nodeType": "Block", "src": "560:383:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "594:2:7", "nodeType": "VariableDeclaration", "scope": 88, "src": "570:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["570:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "570:15:7"}, "referencedDeclaration": 1954, "src": "570:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "599:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "618:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "599:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "599:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "570:54:7"}, {"expression": {"id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 47, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "634:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "637:30:7", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1938, "src": "634:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "670:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "634:42:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 52, "nodeType": "ExpressionStatement", "src": "634:42:7"}, {"expression": {"id": 62, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 53, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "686:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 55, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "689:28:7", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1941, "src": "686:31:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "728:19:7", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "720:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 56, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "720:7:7", "typeDescriptions": {}}}, "id": 59, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "720:28:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 60, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "749:6:7", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "720:35:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 61, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "720:37:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "686:71:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 63, "nodeType": "ExpressionStatement", "src": "686:71:7"}, {"expression": {"id": 68, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 64, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "767:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 66, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "770:26:7", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1926, "src": "767:29:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "799:3:7", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "767:35:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 69, "nodeType": "ExpressionStatement", "src": "767:35:7"}, {"expression": {"id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 70, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "812:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 72, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "815:24:7", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "812:27:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 73, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "842:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "812:36:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 75, "nodeType": "ExpressionStatement", "src": "812:36:7"}, {"expression": {"id": 80, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 76, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "858:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 78, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "861:24:7", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1947, "src": "858:27:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 79, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "888:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "858:36:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 81, "nodeType": "ExpressionStatement", "src": "858:36:7"}, {"expression": {"id": 86, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 82, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "904:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 84, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "907:22:7", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "904:25:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 85, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "932:4:7", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "904:32:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 87, "nodeType": "ExpressionStatement", "src": "904:32:7"}]}, "id": 89, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 38, "nodeType": "ParameterList", "parameters": [], "src": "557:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [], "src": "560:0:7"}, "scope": 467, "src": "546:397:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 190, "nodeType": "Block", "src": "1026:685:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 97, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1044:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 98, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1054:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "1044:16:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 99, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1064:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1044:21:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 101, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1069:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 103, "indexExpression": {"hexValue": "30", "id": 102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1079:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1069:12:7", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1085:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1069:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1044:42:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d707479", "id": 107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1088:36:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_52323bfacae2d46ad95362a3f84efcbab98d07c44e0583b100be130c0ead6aa1", "typeString": "literal_string \"invalid publicKey: cannot be empty\""}, "value": "invalid publicKey: cannot be empty"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_52323bfacae2d46ad95362a3f84efcbab98d07c44e0583b100be130c0ead6aa1", "typeString": "literal_string \"invalid publicKey: cannot be empty\""}], "id": 96, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1036:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1036:89:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 109, "nodeType": "ExpressionStatement", "src": "1036:89:7"}, {"assignments": [111], "declarations": [{"constant": false, "id": 111, "mutability": "mutable", "name": "maxValue", "nameLocation": "1144:8:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1136:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 117, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 112, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1155:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1160:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "1155:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 115, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1165:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1155:25:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1136:44:7"}, {"assignments": [119], "declarations": [{"constant": false, "id": 119, "mutability": "mutable", "name": "minN", "nameLocation": "1199:4:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1191:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 118, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1191:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 128, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 124, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 122, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"id": 120, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, "src": "1207:20:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 121, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1230:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1207:38:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1248:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1207:42:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 125, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1206:44:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 126, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1253:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1206:62:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1191:77:7"}, {"assignments": [130], "declarations": [{"constant": false, "id": 130, "mutability": "mutable", "name": "maxN", "nameLocation": "1286:4:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1278:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 129, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1278:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 135, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 131, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1293:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1312:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1293:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1293:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1319:14:7", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "1293:40:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1278:55:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 137, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1352:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 138, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, "src": "1358:4:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1352:10:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 140, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1366:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 141, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1372:4:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1366:10:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1352:24:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6665652076616c7565206578636565646564", "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1378:20:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a51ee487fe866a42b13c7acac85929a08319a272860e19d98ea1ac064bc44a4d", "typeString": "literal_string \"fee value exceeded\""}, "value": "fee value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a51ee487fe866a42b13c7acac85929a08319a272860e19d98ea1ac064bc44a4d", "typeString": "literal_string \"fee value exceeded\""}], "id": 136, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1344:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1344:55:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 146, "nodeType": "ExpressionStatement", "src": "1344:55:7"}, {"expression": {"id": 151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 147, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1409:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 148, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1415:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 149, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1421:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1415:21:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1409:27:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 152, "nodeType": "ExpressionStatement", "src": "1409:27:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 154, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1455:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1466:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1455:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 157, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1473:12:7", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1455:30:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 161, "indexExpression": {"arguments": [{"id": 159, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1496:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 158, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1486:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1486:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1455:52:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1511:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1455:57:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f70657261746f7220657869737473", "id": 164, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1514:17:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_42ec98d22e5cf0566e8f166392b2c5b8262db2d3e45e64bdac31141dbe7ecfd4", "typeString": "literal_string \"Operator exists\""}, "value": "Operator exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_42ec98d22e5cf0566e8f166392b2c5b8262db2d3e45e64bdac31141dbe7ecfd4", "typeString": "literal_string \"Operator exists\""}], "id": 153, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1447:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1447:85:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 166, "nodeType": "ExpressionStatement", "src": "1447:85:7"}, {"clauses": [{"block": {"id": 181, "nodeType": "Block", "src": "1613:47:7", "statements": [{"expression": {"arguments": [{"id": 178, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1638:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 175, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "1627:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1633:4:7", "memberName": "push", "nodeType": "MemberAccess", "src": "1627:10:7", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1627:22:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 180, "nodeType": "ExpressionStatement", "src": "1627:22:7"}]}, "errorName": "", "id": 182, "nodeType": "TryCatchClause", "parameters": {"id": 174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 173, "mutability": "mutable", "name": "operatorId", "nameLocation": "1601:10:7", "nodeType": "VariableDeclaration", "scope": 182, "src": "1594:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1594:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1593:19:7"}, "src": "1585:75:7"}, {"block": {"id": 187, "nodeType": "Block", "src": "1667:38:7", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1688:5:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 183, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1681:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1681:13:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 186, "nodeType": "ExpressionStatement", "src": "1681:13:7"}]}, "errorName": "", "id": 188, "nodeType": "TryCatchClause", "src": "1661:44:7"}], "externalCall": {"arguments": [{"id": 169, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1569:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 170, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1580:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 167, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1547:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1552:16:7", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 620, "src": "1547:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint256) external returns (uint64)"}}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1547:37:7", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 189, "nodeType": "TryStatement", "src": "1543:162:7"}]}, "functionSelector": "0a3d0123", "id": 191, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "958:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 94, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 91, "mutability": "mutable", "name": "publicKey", "nameLocation": "995:9:7", "nodeType": "VariableDeclaration", "scope": 191, "src": "980:24:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 90, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "980:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 93, "mutability": "mutable", "name": "fee", "nameLocation": "1014:3:7", "nodeType": "VariableDeclaration", "scope": 191, "src": "1006:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 92, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1006:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "979:39:7"}, "returnParameters": {"id": 95, "nodeType": "ParameterList", "parameters": [], "src": "1026:0:7"}, "scope": 467, "src": "949:762:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 215, "nodeType": "Block", "src": "1801:124:7", "statements": [{"expression": {"id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 198, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1811:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 199, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1824:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 202, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "1844:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1850:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "1844:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1837:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1837:6:7", "typeDescriptions": {}}}, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1837:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1824:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1811:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 207, "nodeType": "ExpressionStatement", "src": "1811:46:7"}, {"expression": {"arguments": [{"id": 211, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1894:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 212, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1906:11:7", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 208, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1868:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1873:20:7", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 789, "src": "1868:25:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1868:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 214, "nodeType": "ExpressionStatement", "src": "1868:50:7"}]}, "functionSelector": "60e7474e", "id": 216, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "1726:27:7", "nodeType": "FunctionDefinition", "parameters": {"id": 196, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 193, "mutability": "mutable", "name": "operatorId", "nameLocation": "1761:10:7", "nodeType": "VariableDeclaration", "scope": 216, "src": "1754:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 192, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1754:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 195, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1781:11:7", "nodeType": "VariableDeclaration", "scope": 216, "src": "1773:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 194, "name": "address", "nodeType": "ElementaryTypeName", "src": "1773:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1753:40:7"}, "returnParameters": {"id": 197, "nodeType": "ParameterList", "parameters": [], "src": "1801:0:7"}, "scope": 467, "src": "1717:208:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 279, "nodeType": "Block", "src": "1992:464:7", "statements": [{"expression": {"id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 221, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2002:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 222, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2015:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 225, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2035:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2041:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2035:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 224, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2028:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2028:6:7", "typeDescriptions": {}}}, "id": 227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2028:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2015:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2002:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 230, "nodeType": "ExpressionStatement", "src": "2002:46:7"}, {"assignments": [233], "declarations": [{"constant": false, "id": 233, "mutability": "mutable", "name": "operator", "nameLocation": "2076:8:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2059:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 232, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 231, "name": "Operator", "nameLocations": ["2059:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "2059:8:7"}, "referencedDeclaration": 2147, "src": "2059:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 240, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 234, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "2087:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2098:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "2087:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2087:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 237, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2105:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2087:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 239, "indexExpression": {"id": 238, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2115:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2087:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2059:67:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 242, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, "src": "2144:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2153:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2144:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2162:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "2144:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2171:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2144:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2174:26:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 241, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2136:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2136:65:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 249, "nodeType": "ExpressionStatement", "src": "2136:65:7"}, {"assignments": [251], "declarations": [{"constant": false, "id": 251, "mutability": "mutable", "name": "fee", "nameLocation": "2219:3:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2212:10:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 250, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2212:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 254, "initialValue": {"expression": {"id": 252, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, "src": "2225:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2234:3:7", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2225:12:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2212:25:7"}, {"assignments": [256], "declarations": [{"constant": false, "id": 256, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "2255:13:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2248:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 255, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2248:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 269, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 257, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2272:3:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 258, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2279:16:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 259, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "2298:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2317:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "2298:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2298:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2324:22:7", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "2298:48:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2279:67:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 264, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2278:69:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2272:75:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 266, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2271:77:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 267, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2363:16:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2271:108:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2248:131:7"}, {"expression": {"arguments": [{"id": 273, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2414:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 274, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, "src": "2426:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2440:6:7", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "2426:20:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2426:22:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 270, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2390:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2395:18:7", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 931, "src": "2390:23:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2390:59:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 278, "nodeType": "ExpressionStatement", "src": "2390:59:7"}]}, "functionSelector": "0f5baea8", "id": 280, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "1940:25:7", "nodeType": "FunctionDefinition", "parameters": {"id": 219, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 218, "mutability": "mutable", "name": "operatorId", "nameLocation": "1973:10:7", "nodeType": "VariableDeclaration", "scope": 280, "src": "1966:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 217, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1966:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1965:19:7"}, "returnParameters": {"id": 220, "nodeType": "ParameterList", "parameters": [], "src": "1992:0:7"}, "scope": 467, "src": "1931:525:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 301, "nodeType": "Block", "src": "2523:109:7", "statements": [{"expression": {"id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 285, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2533:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 286, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2546:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 289, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2566:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2572:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2566:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 288, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2559:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 287, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2559:6:7", "typeDescriptions": {}}}, "id": 291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2559:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2546:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2533:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 294, "nodeType": "ExpressionStatement", "src": "2533:46:7"}, {"expression": {"arguments": [{"id": 298, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2614:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 295, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2590:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2595:18:7", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1041, "src": "2590:23:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2590:35:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 300, "nodeType": "ExpressionStatement", "src": "2590:35:7"}]}, "functionSelector": "45a5605a", "id": 302, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "2471:25:7", "nodeType": "FunctionDefinition", "parameters": {"id": 283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 282, "mutability": "mutable", "name": "operatorId", "nameLocation": "2504:10:7", "nodeType": "VariableDeclaration", "scope": 302, "src": "2497:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 281, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2497:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2496:19:7"}, "returnParameters": {"id": 284, "nodeType": "ParameterList", "parameters": [], "src": "2523:0:7"}, "scope": 467, "src": "2462:170:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 323, "nodeType": "Block", "src": "2695:105:7", "statements": [{"expression": {"id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 307, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2705:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 308, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2718:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 311, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2738:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2744:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2738:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 310, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2731:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 309, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2731:6:7", "typeDescriptions": {}}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2731:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2718:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2705:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 316, "nodeType": "ExpressionStatement", "src": "2705:46:7"}, {"expression": {"arguments": [{"id": 320, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2782:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 317, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2762:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2767:14:7", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 726, "src": "2762:19:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2762:31:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 322, "nodeType": "ExpressionStatement", "src": "2762:31:7"}]}, "functionSelector": "36058dc4", "id": 324, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "2647:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 304, "mutability": "mutable", "name": "operatorId", "nameLocation": "2676:10:7", "nodeType": "VariableDeclaration", "scope": 324, "src": "2669:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 303, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2669:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2668:19:7"}, "returnParameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "2695:0:7"}, "scope": 467, "src": "2638:162:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 365, "nodeType": "Block", "src": "2930:278:7", "statements": [{"expression": {"id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 329, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "2940:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 330, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "2953:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 333, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2973:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2979:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2973:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 332, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2966:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2966:6:7", "typeDescriptions": {}}}, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2966:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2953:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2940:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 338, "nodeType": "ExpressionStatement", "src": "2940:46:7"}, {"assignments": [341], "declarations": [{"constant": false, "id": 341, "mutability": "mutable", "name": "operator", "nameLocation": "3014:8:7", "nodeType": "VariableDeclaration", "scope": 365, "src": "2997:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 340, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 339, "name": "Operator", "nameLocations": ["2997:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "2997:8:7"}, "referencedDeclaration": 2147, "src": "2997:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 348, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 342, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3025:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3025:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3025:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 345, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3043:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3025:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 347, "indexExpression": {"id": 346, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3053:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3025:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2997:67:7"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 349, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3080:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 350, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3089:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3080:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 351, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3098:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "3080:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3107:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3080:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 354, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3079:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 355, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3113:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 356, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3122:11:7", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "3113:20:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3079:54:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 364, "nodeType": "IfStatement", "src": "3075:126:7", "trueBody": {"eventCall": {"arguments": [{"id": 359, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3168:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 360, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3180:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 361, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3189:11:7", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "3180:20:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 358, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [31, 37], "referencedDeclaration": 31, "src": "3152:15:7", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3152:49:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 363, "nodeType": "EmitStatement", "src": "3147:54:7"}}]}, "functionSelector": "22ca0bed", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "2868:35:7", "nodeType": "FunctionDefinition", "parameters": {"id": 327, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 326, "mutability": "mutable", "name": "operatorId", "nameLocation": "2911:10:7", "nodeType": "VariableDeclaration", "scope": 366, "src": "2904:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 325, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2904:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2903:19:7"}, "returnParameters": {"id": 328, "nodeType": "ParameterList", "parameters": [], "src": "2930:0:7"}, "scope": 467, "src": "2859:349:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 427, "nodeType": "Block", "src": "3284:497:7", "statements": [{"expression": {"id": 385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 371, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3294:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3307:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 373, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3312:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 376, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3333:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3339:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "3333:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3326:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 374, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3326:6:7", "typeDescriptions": {}}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3326:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3349:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3326:24:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 381, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3325:26:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3312:39:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 383, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3311:41:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3307:45:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3294:58:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 386, "nodeType": "ExpressionStatement", "src": "3294:58:7"}, {"assignments": [389], "declarations": [{"constant": false, "id": 389, "mutability": "mutable", "name": "operator", "nameLocation": "3380:8:7", "nodeType": "VariableDeclaration", "scope": 427, "src": "3363:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 388, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 387, "name": "Operator", "nameLocations": ["3363:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "3363:8:7"}, "referencedDeclaration": 2147, "src": "3363:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 396, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 390, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3391:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3402:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3391:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3391:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3409:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3391:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 395, "indexExpression": {"id": 394, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3419:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3391:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3363:67:7"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 397, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "3507:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3516:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3507:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 399, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3525:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "3507:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3534:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3507:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 402, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3506:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 403, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3553:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3564:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3553:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3553:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 406, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3571:25:7", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "3553:43:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 408, "indexExpression": {"id": 407, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3597:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3553:55:7", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 409, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3609:17:7", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "3553:73:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3630:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3553:78:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 412, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3552:80:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3506:126:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 426, "nodeType": "IfStatement", "src": "3441:334:7", "trueBody": {"id": 425, "nodeType": "Block", "src": "3643:132:7", "statements": [{"eventCall": {"arguments": [{"id": 415, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3678:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3690:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3701:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3690:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3690:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3708:25:7", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "3690:43:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 421, "indexExpression": {"id": 420, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3734:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3690:55:7", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3746:17:7", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "3690:73:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 414, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [31, 37], "referencedDeclaration": 37, "src": "3662:15:7", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3662:102:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 424, "nodeType": "EmitStatement", "src": "3657:107:7"}]}}]}, "functionSelector": "9d5ceb91", "id": 428, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "3223:34:7", "nodeType": "FunctionDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "3265:10:7", "nodeType": "VariableDeclaration", "scope": 428, "src": "3258:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3258:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3257:19:7"}, "returnParameters": {"id": 370, "nodeType": "ParameterList", "parameters": [], "src": "3284:0:7"}, "scope": 467, "src": "3214:567:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 465, "nodeType": "Block", "src": "3850:197:7", "statements": [{"body": {"id": 463, "nodeType": "Block", "src": "3899:142:7", "statements": [{"assignments": [445], "declarations": [{"constant": false, "id": 445, "mutability": "mutable", "name": "operator", "nameLocation": "3930:8:7", "nodeType": "VariableDeclaration", "scope": 463, "src": "3913:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 444, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 443, "name": "Operator", "nameLocations": ["3913:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "3913:8:7"}, "referencedDeclaration": 2147, "src": "3913:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 454, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 446, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3941:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3952:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3941:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3941:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 449, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3959:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3941:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 453, "indexExpression": {"baseExpression": {"id": 450, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3969:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 452, "indexExpression": {"id": 451, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3975:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3969:8:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3941:37:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3913:65:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 456, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 445, "src": "3999:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 457, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4008:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3999:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 458, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4017:7:7", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "3999:25:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4028:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3999:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 455, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3992:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3992:38:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 462, "nodeType": "ExpressionStatement", "src": "3992:38:7"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 436, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3876:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 437, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3880:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3886:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "3880:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3876:16:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 464, "initializationExpression": {"assignments": [434], "declarations": [{"constant": false, "id": 434, "mutability": "mutable", "name": "i", "nameLocation": "3873:1:7", "nodeType": "VariableDeclaration", "scope": 464, "src": "3865:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3865:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 435, "nodeType": "VariableDeclarationStatement", "src": "3865:9:7"}, "loopExpression": {"expression": {"id": 441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3894:3:7", "subExpression": {"id": 440, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3894:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 442, "nodeType": "ExpressionStatement", "src": "3894:3:7"}, "nodeType": "ForStatement", "src": "3860:181:7"}]}, "functionSelector": "e7780e00", "id": 466, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "3796:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 429, "nodeType": "ParameterList", "parameters": [], "src": "3825:2:7"}, "returnParameters": {"id": 432, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 431, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 466, "src": "3844:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 430, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3844:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3843:6:7"}, "scope": 467, "src": "3787:260:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 468, "src": "100:3949:7", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:4005:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "ISSVOperators": [1458], "OperatorLib": [1832], "SSVModules": [1842], "SSVOperators": [1322], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 1323, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 469, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 470, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1459, "src": "70:41:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 471, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 2045, "src": "112:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 472, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1913, "src": "145:37:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 473, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1978, "src": "183:45:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 474, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1833, "src": "229:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 475, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1590, "src": "268:34:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 476, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 2119, "src": "304:52:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 477, "name": "ISSVOperators", "nameLocations": ["383:13:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1458, "src": "383:13:8"}, "id": 478, "nodeType": "InheritanceSpecifier", "src": "383:13:8"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1322, "linearizedBaseContracts": [1322, 1458, 2234], "name": "SSVOperators", "nameLocation": "367:12:8", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 481, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:8", "nodeType": "VariableDeclaration", "scope": 1322, "src": "403:58:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 479, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:8", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 484, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:8", "nodeType": "VariableDeclaration", "scope": 1322, "src": "467:49:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 482, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 487, "libraryName": {"id": 485, "name": "Types256", "nameLocations": ["529:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2044, "src": "529:8:8"}, "nodeType": "UsingForDirective", "src": "523:27:8", "typeName": {"id": 486, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 490, "libraryName": {"id": 488, "name": "Types64", "nameLocations": ["561:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "561:7:8"}, "nodeType": "UsingForDirective", "src": "555:25:8", "typeName": {"id": 489, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 494, "libraryName": {"id": 491, "name": "Counters", "nameLocations": ["591:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2118, "src": "591:8:8"}, "nodeType": "UsingForDirective", "src": "585:36:8", "typeName": {"id": 493, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 492, "name": "Counters.Counter", "nameLocations": ["604:8:8", "613:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "604:16:8"}, "referencedDeclaration": 2050, "src": "604:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 498, "libraryName": {"id": 495, "name": "OperatorLib", "nameLocations": ["632:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1832, "src": "632:11:8"}, "nodeType": "UsingForDirective", "src": "626:31:8", "typeName": {"id": 497, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 496, "name": "Operator", "nameLocations": ["648:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "648:8:8"}, "referencedDeclaration": 2147, "src": "648:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1337], "body": {"id": 619, "nodeType": "Block", "src": "881:895:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 508, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "895:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 509, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "902:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "895:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 511, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "907:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 512, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "913:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "907:26:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "895:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 521, "nodeType": "IfStatement", "src": "891:103:8", "trueBody": {"id": 520, "nodeType": "Block", "src": "935:59:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 515, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "956:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "972:9:8", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 2179, "src": "956:25:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "956:27:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 519, "nodeType": "RevertStatement", "src": "949:34:8"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 522, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1007:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 523, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1013:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1032:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1013:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1013:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1039:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "1013:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1007:46:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 534, "nodeType": "IfStatement", "src": "1003:112:8", "trueBody": {"id": 533, "nodeType": "Block", "src": "1055:60:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 528, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1076:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1092:10:8", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 2233, "src": "1076:26:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1076:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 532, "nodeType": "RevertStatement", "src": "1069:35:8"}]}}, {"assignments": [537], "declarations": [{"constant": false, "id": 537, "mutability": "mutable", "name": "s", "nameLocation": "1145:1:8", "nodeType": "VariableDeclaration", "scope": 619, "src": "1125:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 536, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 535, "name": "StorageData", "nameLocations": ["1125:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1125:11:8"}, "referencedDeclaration": 1889, "src": "1125:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 541, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 538, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1149:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1160:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1149:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1149:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1125:41:8"}, {"assignments": [543], "declarations": [{"constant": false, "id": 543, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1185:8:8", "nodeType": "VariableDeclaration", "scope": 619, "src": "1177:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 542, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1177:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 547, "initialValue": {"arguments": [{"id": 545, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1206:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 544, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1196:9:8", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1196:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1177:39:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 548, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1230:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1232:12:8", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1230:14:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 551, "indexExpression": {"id": 550, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "1245:8:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1230:24:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1258:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1230:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 559, "nodeType": "IfStatement", "src": "1226:81:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 554, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1268:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1284:21:8", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 2227, "src": "1268:37:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1268:39:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 558, "nodeType": "RevertStatement", "src": "1261:46:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 560, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1318:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1320:14:8", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 1888, "src": "1318:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1335:9:8", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2076, "src": "1318:26:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2050_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2050_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 566, "nodeType": "ExpressionStatement", "src": "1318:28:8"}, {"expression": {"id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 567, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1356:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 570, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1368:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 571, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1370:14:8", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 1888, "src": "1368:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 572, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1385:7:8", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2062, "src": "1368:24:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2050_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2050_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1368:26:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1361:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 568, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1361:6:8", "typeDescriptions": {}}}, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1361:34:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1356:39:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 576, "nodeType": "ExpressionStatement", "src": "1356:39:8"}, {"expression": {"id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 577, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1405:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 580, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1407:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1405:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 581, "indexExpression": {"id": 579, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1417:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1405:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 583, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1453:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1457:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1453:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 589, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "1527:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 588, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1520:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 587, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1520:6:8", "typeDescriptions": {}}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1520:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1549:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1561:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 585, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1487:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1503:8:8", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2130, "src": "1487:24:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$2130_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1513:5:8", "1542:5:8", "1552:7:8"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1487:77:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1594:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 596, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1614:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1618:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "1614:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 598, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1614:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1653:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 582, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2147, "src": "1423:8:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$2147_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 600, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1446:5:8", "1477:8:8", "1578:14:8", "1609:3:8", "1640:11:8"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1423:246:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1405:264:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 602, "nodeType": "ExpressionStatement", "src": "1405:264:8"}, {"expression": {"id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 603, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1679:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1681:12:8", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1679:14:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 607, "indexExpression": {"id": 605, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "1694:8:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1679:24:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 608, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1706:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1679:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 610, "nodeType": "ExpressionStatement", "src": "1679:29:8"}, {"eventCall": {"arguments": [{"id": 612, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1738:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1742:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1746:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1742:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 615, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1754:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 616, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1765:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 611, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1404, "src": "1724:13:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1724:45:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 618, "nodeType": "EmitStatement", "src": "1719:50:8"}]}, "functionSelector": "ff212c5c", "id": 620, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 504, "nodeType": "OverrideSpecifier", "overrides": [], "src": "852:8:8"}, "parameters": {"id": 503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 500, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "804:24:8", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 499, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 502, "mutability": "mutable", "name": "fee", "nameLocation": "838:3:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "830:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 501, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "830:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "803:39:8"}, "returnParameters": {"id": 507, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 506, "mutability": "mutable", "name": "id", "nameLocation": "877:2:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "870:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 505, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "870:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "869:11:8"}, "scope": 1322, "src": "778:998:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1343], "body": {"id": 725, "nodeType": "Block", "src": "1843:738:8", "statements": [{"assignments": [628], "declarations": [{"constant": false, "id": 628, "mutability": "mutable", "name": "s", "nameLocation": "1873:1:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "1853:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 627, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 626, "name": "StorageData", "nameLocations": ["1853:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1853:11:8"}, "referencedDeclaration": 1889, "src": "1853:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 632, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 629, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1877:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1888:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1877:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1877:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1853:41:8"}, {"assignments": [635], "declarations": [{"constant": false, "id": 635, "mutability": "mutable", "name": "operator", "nameLocation": "1920:8:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "1904:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 634, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 633, "name": "Operator", "nameLocations": ["1904:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1904:8:8"}, "referencedDeclaration": 2147, "src": "1904:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 640, "initialValue": {"baseExpression": {"expression": {"id": 636, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "1931:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 637, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1933:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1931:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 639, "indexExpression": {"id": 638, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "1943:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1931:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1904:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 641, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "1964:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1973:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "1964:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1964:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 645, "nodeType": "ExpressionStatement", "src": "1964:21:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 646, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "1996:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 648, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2005:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "1996:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1996:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 650, "nodeType": "ExpressionStatement", "src": "1996:25:8"}, {"assignments": [652], "declarations": [{"constant": false, "id": 652, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2038:14:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "2031:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 651, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2031:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 656, "initialValue": {"expression": {"expression": {"id": 653, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2055:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2064:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2055:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2073:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "2055:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2031:49:8"}, {"expression": {"id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 657, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2091:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2100:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2091:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2109:5:8", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "2091:23:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 662, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2117:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2091:27:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 664, "nodeType": "ExpressionStatement", "src": "2091:27:8"}, {"expression": {"id": 671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 665, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2128:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 668, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2137:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2128:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 669, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2146:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "2128:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2156:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2128:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 672, "nodeType": "ExpressionStatement", "src": "2128:29:8"}, {"expression": {"id": 677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 673, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2167:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2176:14:8", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "2167:23:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 676, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2167:27:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 678, "nodeType": "ExpressionStatement", "src": "2167:27:8"}, {"expression": {"id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 679, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2204:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 681, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2213:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2204:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 682, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2219:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2204:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 684, "nodeType": "ExpressionStatement", "src": "2204:16:8"}, {"condition": {"expression": {"id": 685, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2235:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2244:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2235:20:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 700, "nodeType": "IfStatement", "src": "2231:132:8", "trueBody": {"id": 699, "nodeType": "Block", "src": "2257:106:8", "statements": [{"expression": {"id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 687, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2271:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 689, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2280:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2271:20:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2294:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2271:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 692, "nodeType": "ExpressionStatement", "src": "2271:28:8"}, {"expression": {"id": 697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2313:39:8", "subExpression": {"baseExpression": {"expression": {"id": 693, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "2320:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 694, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2322:18:8", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2320:20:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 696, "indexExpression": {"id": 695, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2341:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2320:32:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 698, "nodeType": "ExpressionStatement", "src": "2313:39:8"}]}}, {"expression": {"id": 707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 701, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "2372:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 704, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2374:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2372:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 705, "indexExpression": {"id": 703, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2384:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2372:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 706, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2398:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2372:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 708, "nodeType": "ExpressionStatement", "src": "2372:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 709, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "2421:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2438:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2421:18:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 720, "nodeType": "IfStatement", "src": "2417:116:8", "trueBody": {"id": 719, "nodeType": "Block", "src": "2441:92:8", "statements": [{"expression": {"arguments": [{"id": 713, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2486:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 714, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "2498:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2513:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "2498:21:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2498:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 712, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "2455:30:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2455:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 718, "nodeType": "ExpressionStatement", "src": "2455:67:8"}]}}, {"eventCall": {"arguments": [{"id": 722, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2563:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 721, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1409, "src": "2547:15:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2547:27:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 724, "nodeType": "EmitStatement", "src": "2542:32:8"}]}, "functionSelector": "2e168e0e", "id": 726, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1791:14:8", "nodeType": "FunctionDefinition", "overrides": {"id": 624, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1834:8:8"}, "parameters": {"id": 623, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 622, "mutability": "mutable", "name": "operatorId", "nameLocation": "1813:10:8", "nodeType": "VariableDeclaration", "scope": 726, "src": "1806:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 621, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1806:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1805:19:8"}, "returnParameters": {"id": 625, "nodeType": "ParameterList", "parameters": [], "src": "1843:0:8"}, "scope": 1322, "src": "1782:799:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1351], "body": {"id": 788, "nodeType": "Block", "src": "2666:407:8", "statements": [{"assignments": [735], "declarations": [{"constant": false, "id": 735, "mutability": "mutable", "name": "s", "nameLocation": "2696:1:8", "nodeType": "VariableDeclaration", "scope": 788, "src": "2676:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 734, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 733, "name": "StorageData", "nameLocations": ["2676:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "2676:11:8"}, "referencedDeclaration": 1889, "src": "2676:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 739, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 736, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "2700:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2711:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "2700:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2700:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2676:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 740, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2727:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 743, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2729:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2727:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 744, "indexExpression": {"id": 742, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2739:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2727:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2751:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "2727:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2727:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 747, "nodeType": "ExpressionStatement", "src": "2727:36:8"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 748, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "2778:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 751, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2801:1:8", "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": 750, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2793:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 749, "name": "address", "nodeType": "ElementaryTypeName", "src": "2793:7:8", "typeDescriptions": {}}}, "id": 752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2793:10:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2778:25:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 773, "nodeType": "Block", "src": "2879:67:8", "statements": [{"expression": {"id": 771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 764, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2893:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 767, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2895:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2893:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 768, "indexExpression": {"id": 766, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2905:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2893:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 769, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2917:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2893:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2931:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2893:42:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 772, "nodeType": "ExpressionStatement", "src": "2893:42:8"}]}, "id": 774, "nodeType": "IfStatement", "src": "2774:172:8", "trueBody": {"id": 763, "nodeType": "Block", "src": "2805:68:8", "statements": [{"expression": {"id": 761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 754, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2819:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 757, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2821:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2819:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 758, "indexExpression": {"id": 756, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2831:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2819:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 759, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2843:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2819:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2857:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2819:43:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 762, "nodeType": "ExpressionStatement", "src": "2819:43:8"}]}}, {"expression": {"id": 781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 775, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2956:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 778, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2958:18:8", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2956:20:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 779, "indexExpression": {"id": 777, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2977:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2956:32:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 780, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "2991:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2956:46:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 782, "nodeType": "ExpressionStatement", "src": "2956:46:8"}, {"eventCall": {"arguments": [{"id": 784, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "3042:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 785, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "3054:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 783, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1416, "src": "3017:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3017:49:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 787, "nodeType": "EmitStatement", "src": "3012:54:8"}]}, "functionSelector": "c90a7eab", "id": 789, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2596:20:8", "nodeType": "FunctionDefinition", "parameters": {"id": 731, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 728, "mutability": "mutable", "name": "operatorId", "nameLocation": "2624:10:8", "nodeType": "VariableDeclaration", "scope": 789, "src": "2617:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 727, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2617:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 730, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2644:11:8", "nodeType": "VariableDeclaration", "scope": 789, "src": "2636:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 729, "name": "address", "nodeType": "ElementaryTypeName", "src": "2636:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2616:40:8"}, "returnParameters": {"id": 732, "nodeType": "ParameterList", "parameters": [], "src": "2666:0:8"}, "scope": 1322, "src": "2587:486:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1359], "body": {"id": 930, "nodeType": "Block", "src": "3157:1226:8", "statements": [{"assignments": [799], "declarations": [{"constant": false, "id": 799, "mutability": "mutable", "name": "s", "nameLocation": "3187:1:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3167:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 798, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 797, "name": "StorageData", "nameLocations": ["3167:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "3167:11:8"}, "referencedDeclaration": 1889, "src": "3167:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 803, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 800, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3191:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3202:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3191:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3191:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3167:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 804, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "3218:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3220:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3218:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 808, "indexExpression": {"id": 806, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "3230:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3218:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3242:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "3218:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3218:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 811, "nodeType": "ExpressionStatement", "src": "3218:36:8"}, {"assignments": [814], "declarations": [{"constant": false, "id": 814, "mutability": "mutable", "name": "sp", "nameLocation": "3289:2:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3265:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 813, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 812, "name": "StorageProtocol", "nameLocations": ["3265:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "3265:15:8"}, "referencedDeclaration": 1954, "src": "3265:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 818, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 815, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "3294:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3313:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "3294:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3294:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3265:54:8"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 819, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3334:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3341:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3334:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 822, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3346:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 823, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "3352:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3346:26:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3334:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 829, "nodeType": "IfStatement", "src": "3330:62:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 826, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2179, "src": "3381:9:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 827, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3381:11:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 828, "nodeType": "RevertStatement", "src": "3374:18:8"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 830, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3406:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 831, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "3412:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 832, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3415:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "3412:17:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3406:23:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 837, "nodeType": "IfStatement", "src": "3402:48:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 834, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "3438:10:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3438:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 836, "nodeType": "RevertStatement", "src": "3431:19:8"}}, {"assignments": [839], "declarations": [{"constant": false, "id": 839, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3468:11:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3461:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 838, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 845, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 840, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "3482:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 841, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3484:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3482:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 843, "indexExpression": {"id": 842, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "3494:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3482:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 844, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3506:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "3482:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3461:48:8"}, {"assignments": [847], "declarations": [{"constant": false, "id": 847, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3526:9:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3519:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 846, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3519:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 851, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 848, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3538:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3542:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "3538:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3538:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3519:31:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 852, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3565:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 853, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3580:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3565:24:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 859, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3658:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3671:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3658:14:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 862, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3676:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3691:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3676:16:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3658:34:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 870, "nodeType": "IfStatement", "src": "3654:95:8", "trueBody": {"id": 869, "nodeType": "Block", "src": "3694:55:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 866, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "3715:21:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3715:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 868, "nodeType": "RevertStatement", "src": "3708:30:8"}]}}, "id": 871, "nodeType": "IfStatement", "src": "3561:188:8", "trueBody": {"id": 858, "nodeType": "Block", "src": "3591:57:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 855, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2219, "src": "3612:23:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3612:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 857, "nodeType": "RevertStatement", "src": "3605:32:8"}]}}, {"assignments": [873], "declarations": [{"constant": false, "id": 873, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3854:13:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3847:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 872, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3847:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 884, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 874, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3871:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 875, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3886:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 876, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "3905:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 877, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3908:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "3905:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3886:44:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 879, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3885:46:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3871:60:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 881, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3870:62:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 882, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3935:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3870:81:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3847:104:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 885, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3966:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 886, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 873, "src": "3978:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3966:25:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 891, "nodeType": "IfStatement", "src": "3962:63:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 888, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2181, "src": "4000:23:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4000:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 890, "nodeType": "RevertStatement", "src": "3993:32:8"}}, {"expression": {"id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 892, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "4036:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 895, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4038:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "4036:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 896, "indexExpression": {"id": 894, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "4064:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4036:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 898, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "4116:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 901, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4146:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4152:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4146:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 900, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4139:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 899, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4139:6:8", "typeDescriptions": {}}}, "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4139:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 904, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4165:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4168:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "4165:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4139:53:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 909, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4213:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4219:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4213:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 908, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4206:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 907, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4206:6:8", "typeDescriptions": {}}}, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4206:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 912, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4232:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 913, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4235:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "4232:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4206:53:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 915, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4262:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 916, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4265:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1947, "src": "4262:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4206:83:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 897, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2157, "src": "4078:24:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 918, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4078:221:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "4036:263:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 920, "nodeType": "ExpressionStatement", "src": "4036:263:8"}, {"eventCall": {"arguments": [{"expression": {"id": 922, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4334:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4338:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "4334:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 924, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "4346:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 925, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4358:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4364:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "4358:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 927, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "4372:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 921, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4314:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 928, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4314:62:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 929, "nodeType": "EmitStatement", "src": "4309:67:8"}]}, "functionSelector": "b317c35f", "id": 931, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "3088:18:8", "nodeType": "FunctionDefinition", "overrides": {"id": 795, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3148:8:8"}, "parameters": {"id": 794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 791, "mutability": "mutable", "name": "operatorId", "nameLocation": "3114:10:8", "nodeType": "VariableDeclaration", "scope": 931, "src": "3107:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 790, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3107:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "fee", "nameLocation": "3134:3:8", "nodeType": "VariableDeclaration", "scope": 931, "src": "3126:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3126:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3106:32:8"}, "returnParameters": {"id": 796, "nodeType": "ParameterList", "parameters": [], "src": "3157:0:8"}, "scope": 1322, "src": "3079:1304:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1365], "body": {"id": 1040, "nodeType": "Block", "src": "4454:926:8", "statements": [{"assignments": [939], "declarations": [{"constant": false, "id": 939, "mutability": "mutable", "name": "s", "nameLocation": "4484:1:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4464:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 938, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 937, "name": "StorageData", "nameLocations": ["4464:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "4464:11:8"}, "referencedDeclaration": 1889, "src": "4464:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 943, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "4488:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4499:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "4488:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4488:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4464:41:8"}, {"assignments": [946], "declarations": [{"constant": false, "id": 946, "mutability": "mutable", "name": "operator", "nameLocation": "4531:8:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4515:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 945, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 944, "name": "Operator", "nameLocations": ["4515:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "4515:8:8"}, "referencedDeclaration": 2147, "src": "4515:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 951, "initialValue": {"baseExpression": {"expression": {"id": 947, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "4542:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 948, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4544:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "4542:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 950, "indexExpression": {"id": 949, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "4554:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4542:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4515:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 952, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "4575:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4584:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "4575:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4575:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 956, "nodeType": "ExpressionStatement", "src": "4575:21:8"}, {"assignments": [959], "declarations": [{"constant": false, "id": 959, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4639:16:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4607:48:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 958, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 957, "name": "OperatorFeeChangeRequest", "nameLocations": ["4607:24:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2157, "src": "4607:24:8"}, "referencedDeclaration": 2157, "src": "4607:24:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 964, "initialValue": {"baseExpression": {"expression": {"id": 960, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "4658:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 961, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4660:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "4658:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 963, "indexExpression": {"id": 962, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "4686:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4658:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4607:90:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 965, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4712:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4729:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "4712:34:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4750:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4712:39:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 972, "nodeType": "IfStatement", "src": "4708:67:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 969, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2183, "src": "4760:13:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 970, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4760:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 971, "nodeType": "RevertStatement", "src": "4753:22:8"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 973, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4803:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4809:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4803:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 975, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4821:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 976, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4838:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "4821:34:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4803:52:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 978, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4859:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4865:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4859:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 980, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4877:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4894:15:8", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 2156, "src": "4877:32:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4859:50:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4803:106:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 988, "nodeType": "IfStatement", "src": "4786:194:8", "trueBody": {"id": 987, "nodeType": "Block", "src": "4920:60:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 984, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2185, "src": "4941:26:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4941:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 986, "nodeType": "RevertStatement", "src": "4934:35:8"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 989, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4994:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 990, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5011:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "4994:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5015:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "4994:27:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4994:29:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 993, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "5026:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5045:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "5026:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5026:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5052:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "5026:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4994:72:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1001, "nodeType": "IfStatement", "src": "4990:97:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 998, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "5075:10:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5075:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1000, "nodeType": "RevertStatement", "src": "5068:19:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1002, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5098:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1004, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5107:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "5098:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5098:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1006, "nodeType": "ExpressionStatement", "src": "5098:25:8"}, {"expression": {"id": 1012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1007, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5133:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1009, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5142:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "5133:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1010, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "5148:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5165:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "5148:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5133:35:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1013, "nodeType": "ExpressionStatement", "src": "5133:35:8"}, {"expression": {"id": 1020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1014, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "5178:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5180:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5178:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1018, "indexExpression": {"id": 1016, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5190:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5178:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1019, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5204:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5178:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1021, "nodeType": "ExpressionStatement", "src": "5178:34:8"}, {"expression": {"id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5223:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1022, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "5230:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5232:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5230:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1025, "indexExpression": {"id": 1024, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5258:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5230:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1027, "nodeType": "ExpressionStatement", "src": "5223:46:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1029, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5305:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5309:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "5305:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1031, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5317:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1032, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5329:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5335:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "5329:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1034, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "5343:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1035, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5360:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "5343:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5364:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "5343:27:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5343:29:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1028, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1443, "src": "5285:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5285:88:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1039, "nodeType": "EmitStatement", "src": "5280:93:8"}]}, "functionSelector": "8932cee0", "id": 1041, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4398:18:8", "nodeType": "FunctionDefinition", "overrides": {"id": 935, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4445:8:8"}, "parameters": {"id": 934, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 933, "mutability": "mutable", "name": "operatorId", "nameLocation": "4424:10:8", "nodeType": "VariableDeclaration", "scope": 1041, "src": "4417:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 932, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4417:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4416:19:8"}, "returnParameters": {"id": 936, "nodeType": "ParameterList", "parameters": [], "src": "4454:0:8"}, "scope": 1322, "src": "4389:991:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1371], "body": {"id": 1085, "nodeType": "Block", "src": "5458:333:8", "statements": [{"assignments": [1049], "declarations": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "s", "nameLocation": "5488:1:8", "nodeType": "VariableDeclaration", "scope": 1085, "src": "5468:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1048, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1047, "name": "StorageData", "nameLocations": ["5468:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "5468:11:8"}, "referencedDeclaration": 1889, "src": "5468:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1053, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1050, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "5492:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5503:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "5492:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5468:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1054, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5519:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1057, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5521:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5519:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1058, "indexExpression": {"id": 1056, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5531:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5519:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5543:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "5519:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5519:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1061, "nodeType": "ExpressionStatement", "src": "5519:36:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1062, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5570:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1063, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5572:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5570:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1065, "indexExpression": {"id": 1064, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5598:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5570:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1066, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5610:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "5570:57:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5631:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5570:62:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1072, "nodeType": "IfStatement", "src": "5566:90:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1069, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2183, "src": "5641:13:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5641:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1071, "nodeType": "RevertStatement", "src": "5634:22:8"}}, {"expression": {"id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5667:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1073, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5674:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1074, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5676:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5674:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1076, "indexExpression": {"id": 1075, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5702:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5674:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1078, "nodeType": "ExpressionStatement", "src": "5667:46:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1080, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5761:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5765:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "5761:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1082, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5773:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1079, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1432, "src": "5729:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5729:55:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1084, "nodeType": "EmitStatement", "src": "5724:60:8"}]}, "functionSelector": "23d68a6d", "id": 1086, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5395:25:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1045, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5449:8:8"}, "parameters": {"id": 1044, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1043, "mutability": "mutable", "name": "operatorId", "nameLocation": "5428:10:8", "nodeType": "VariableDeclaration", "scope": 1086, "src": "5421:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1042, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5421:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5420:19:8"}, "returnParameters": {"id": 1046, "nodeType": "ParameterList", "parameters": [], "src": "5458:0:8"}, "scope": 1322, "src": "5386:405:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1379], "body": {"id": 1170, "nodeType": "Block", "src": "5874:599:8", "statements": [{"assignments": [1096], "declarations": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "s", "nameLocation": "5904:1:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "5884:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1095, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1094, "name": "StorageData", "nameLocations": ["5884:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "5884:11:8"}, "referencedDeclaration": 1889, "src": "5884:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1100, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1097, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "5908:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5919:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "5908:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5908:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5884:41:8"}, {"assignments": [1103], "declarations": [{"constant": false, "id": 1103, "mutability": "mutable", "name": "operator", "nameLocation": "5951:8:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "5935:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1101, "name": "Operator", "nameLocations": ["5935:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "5935:8:8"}, "referencedDeclaration": 2147, "src": "5935:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1108, "initialValue": {"baseExpression": {"expression": {"id": 1104, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "5962:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1105, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5964:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5962:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1107, "indexExpression": {"id": 1106, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "5974:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5962:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5935:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1109, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "5995:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1111, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6004:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "5995:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5995:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1113, "nodeType": "ExpressionStatement", "src": "5995:21:8"}, {"assignments": [1115], "declarations": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6034:12:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "6027:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1114, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6027:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1119, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1116, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "6049:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6053:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "6049:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6049:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6027:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1120, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6075:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1121, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6091:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6100:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "6091:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6075:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1127, "nodeType": "IfStatement", "src": "6071:64:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1124, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "6112:21:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6112:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1126, "nodeType": "RevertStatement", "src": "6105:30:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1128, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6146:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6155:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "6146:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6146:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1132, "nodeType": "ExpressionStatement", "src": "6146:25:8"}, {"expression": {"id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1133, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6181:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1135, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6190:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "6181:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1136, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6196:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6181:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1138, "nodeType": "ExpressionStatement", "src": "6181:27:8"}, {"expression": {"id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1139, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6218:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6220:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "6218:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1143, "indexExpression": {"id": 1141, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6230:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6218:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1144, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6244:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6218:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1146, "nodeType": "ExpressionStatement", "src": "6218:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1147, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6267:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1148, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6269:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "6267:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1150, "indexExpression": {"id": 1149, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6295:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6267:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6307:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "6267:57:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6328:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6267:62:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1160, "nodeType": "IfStatement", "src": "6263:126:8", "trueBody": {"expression": {"id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6343:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1154, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6350:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6352:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "6350:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1157, "indexExpression": {"id": 1156, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6378:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6350:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "ExpressionStatement", "src": "6343:46:8"}}, {"eventCall": {"arguments": [{"expression": {"id": 1162, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6424:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6428:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "6424:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1164, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6436:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1165, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6448:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6454:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "6448:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1167, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "6462:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1161, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1443, "src": "6404:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6404:62:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1169, "nodeType": "EmitStatement", "src": "6399:67:8"}]}, "functionSelector": "190d82e4", "id": 1171, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5806:17:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1092, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5865:8:8"}, "parameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1088, "mutability": "mutable", "name": "operatorId", "nameLocation": "5831:10:8", "nodeType": "VariableDeclaration", "scope": 1171, "src": "5824:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1087, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5824:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1090, "mutability": "mutable", "name": "fee", "nameLocation": "5851:3:8", "nodeType": "VariableDeclaration", "scope": 1171, "src": "5843:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5843:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5823:32:8"}, "returnParameters": {"id": 1093, "nodeType": "ParameterList", "parameters": [], "src": "5874:0:8"}, "scope": 1322, "src": "5797:676:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1387], "body": {"id": 1184, "nodeType": "Block", "src": "6566:62:8", "statements": [{"expression": {"arguments": [{"id": 1180, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1173, "src": "6602:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1181, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6614:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1179, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "6576:25:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6576:45:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1183, "nodeType": "ExpressionStatement", "src": "6576:45:8"}]}, "functionSelector": "35f63767", "id": 1185, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6488:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1177, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6557:8:8"}, "parameters": {"id": 1176, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1173, "mutability": "mutable", "name": "operatorId", "nameLocation": "6520:10:8", "nodeType": "VariableDeclaration", "scope": 1185, "src": "6513:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6513:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1175, "mutability": "mutable", "name": "amount", "nameLocation": "6540:6:8", "nodeType": "VariableDeclaration", "scope": 1185, "src": "6532:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6532:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6512:35:8"}, "returnParameters": {"id": 1178, "nodeType": "ParameterList", "parameters": [], "src": "6566:0:8"}, "scope": 1322, "src": "6479:149:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1393], "body": {"id": 1196, "nodeType": "Block", "src": "6708:57:8", "statements": [{"expression": {"arguments": [{"id": 1192, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "6744:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6756:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1191, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "6718:25:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6718:40:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1195, "nodeType": "ExpressionStatement", "src": "6718:40:8"}]}, "functionSelector": "4bc93b64", "id": 1197, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6643:27:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1189, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6699:8:8"}, "parameters": {"id": 1188, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1187, "mutability": "mutable", "name": "operatorId", "nameLocation": "6678:10:8", "nodeType": "VariableDeclaration", "scope": 1197, "src": "6671:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1186, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6671:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6670:19:8"}, "returnParameters": {"id": 1190, "nodeType": "ParameterList", "parameters": [], "src": "6708:0:8"}, "scope": 1322, "src": "6634:131:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1297, "nodeType": "Block", "src": "6874:753:8", "statements": [{"assignments": [1206], "declarations": [{"constant": false, "id": 1206, "mutability": "mutable", "name": "s", "nameLocation": "6904:1:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "6884:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1205, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1204, "name": "StorageData", "nameLocations": ["6884:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "6884:11:8"}, "referencedDeclaration": 1889, "src": "6884:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1210, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1207, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "6908:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6919:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "6908:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6908:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6884:41:8"}, {"assignments": [1213], "declarations": [{"constant": false, "id": 1213, "mutability": "mutable", "name": "operator", "nameLocation": "6951:8:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "6935:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1212, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1211, "name": "Operator", "nameLocations": ["6935:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "6935:8:8"}, "referencedDeclaration": 2147, "src": "6935:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1218, "initialValue": {"baseExpression": {"expression": {"id": 1214, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "6962:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6964:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "6962:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1217, "indexExpression": {"id": 1216, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "6974:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6962:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6935:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1219, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "6995:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7004:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "6995:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6995:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1223, "nodeType": "ExpressionStatement", "src": "6995:21:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1224, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7027:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1226, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7036:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "7027:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7027:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1228, "nodeType": "ExpressionStatement", "src": "7027:25:8"}, {"assignments": [1230], "declarations": [{"constant": false, "id": 1230, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "7070:15:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "7063:22:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1229, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7063:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1231, "nodeType": "VariableDeclarationStatement", "src": "7063:22:8"}, {"assignments": [1233], "declarations": [{"constant": false, "id": 1233, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "7102:12:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "7095:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1232, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7095:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1237, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1234, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7117:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7124:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "7117:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7117:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "7095:37:8"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1238, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7147:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7157:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7147:11:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1241, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7162:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1242, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7171:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7162:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7180:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7162:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7190:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7162:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7147:44:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1254, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7271:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7280:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7271:10:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1257, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7285:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7294:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7285:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7303:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7285:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1260, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1233, "src": "7314:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7285:41:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7271:55:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1271, "nodeType": "Block", "src": "7389:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1268, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2189, "src": "7410:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7410:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1270, "nodeType": "RevertStatement", "src": "7403:28:8"}]}, "id": 1272, "nodeType": "IfStatement", "src": "7267:175:8", "trueBody": {"id": 1267, "nodeType": "Block", "src": "7328:55:8", "statements": [{"expression": {"id": 1265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1263, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7342:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1264, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1233, "src": "7360:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7342:30:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1266, "nodeType": "ExpressionStatement", "src": "7342:30:8"}]}}, "id": 1273, "nodeType": "IfStatement", "src": "7143:299:8", "trueBody": {"id": 1253, "nodeType": "Block", "src": "7193:68:8", "statements": [{"expression": {"id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1247, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7207:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1248, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7225:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7234:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7225:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7243:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7225:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7207:43:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1252, "nodeType": "ExpressionStatement", "src": "7207:43:8"}]}}, {"expression": {"id": 1280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1274, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7452:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1277, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7461:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7452:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1278, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7470:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7452:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1279, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7481:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7452:44:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1281, "nodeType": "ExpressionStatement", "src": "7452:44:8"}, {"expression": {"id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1282, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "7507:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7509:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "7507:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1286, "indexExpression": {"id": 1284, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "7519:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7507:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1287, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7533:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7507:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1289, "nodeType": "ExpressionStatement", "src": "7507:34:8"}, {"expression": {"arguments": [{"id": 1291, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "7583:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1292, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7595:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7611:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "7595:22:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7595:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1290, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7552:30:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7552:68:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1296, "nodeType": "ExpressionStatement", "src": "7552:68:8"}]}, "id": 1298, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6805:25:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1202, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1199, "mutability": "mutable", "name": "operatorId", "nameLocation": "6838:10:8", "nodeType": "VariableDeclaration", "scope": 1298, "src": "6831:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6831:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1201, "mutability": "mutable", "name": "amount", "nameLocation": "6858:6:8", "nodeType": "VariableDeclaration", "scope": 1298, "src": "6850:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1200, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6850:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6830:35:8"}, "returnParameters": {"id": 1203, "nodeType": "ParameterList", "parameters": [], "src": "6874:0:8"}, "scope": 1322, "src": "6796:831:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1320, "nodeType": "Block", "src": "7716:124:8", "statements": [{"expression": {"arguments": [{"expression": {"id": 1308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7750:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7754:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "7750:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1310, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "7762:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1305, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "7726:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1589_$", "typeString": "type(library CoreLib)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7734:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1500, "src": "7726:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7726:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "7726:43:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1314, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7802:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7806:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "7802:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1316, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1300, "src": "7814:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1317, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "7826:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1313, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1451, "src": "7784:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7784:49:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1319, "nodeType": "EmitStatement", "src": "7779:54:8"}]}, "id": 1321, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7642:30:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1303, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1300, "mutability": "mutable", "name": "operatorId", "nameLocation": "7680:10:8", "nodeType": "VariableDeclaration", "scope": 1321, "src": "7673:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1299, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7673:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1302, "mutability": "mutable", "name": "amount", "nameLocation": "7700:6:8", "nodeType": "VariableDeclaration", "scope": 1321, "src": "7692:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1301, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7692:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7672:35:8"}, "returnParameters": {"id": 1304, "nodeType": "ParameterList", "parameters": [], "src": "7716:0:8"}, "scope": 1322, "src": "7633:207:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1323, "src": "358:7484:8", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:7798:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2312]}, "id": 2313, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2236, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2237, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2312, "linearizedBaseContracts": [2312], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2238, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2246, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 2245, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2240, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2239, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2242, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2241, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2244, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 2247, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2255, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 2254, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2249, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2248, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2251, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2250, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2253, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2252, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 2256, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2261, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 2260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2259, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2261, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 2312, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2262, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2269, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2264, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 2269, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2263, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2269, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 2312, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2270, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2279, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2275, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2272, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2271, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2274, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2273, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 2278, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2277, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2276, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 2312, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2280, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2289, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2285, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2282, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2281, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2284, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2283, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 2288, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2287, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 2312, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2290, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2299, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2292, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2291, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2294, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2297, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2296, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 2312, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2300, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2311, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2302, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2301, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2304, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2306, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 2310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2309, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2308, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 2312, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2313, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2118]}, "id": 2119, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2046, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2047, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2118, "linearizedBaseContracts": [2118], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2050, "members": [{"constant": false, "id": 2049, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 2050, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 2118, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 2061, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 2058, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2053, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2057, "id": 2060, "nodeType": "Return", "src": "911:21:10"}]}, "id": 2062, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2054, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2053, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 2062, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2052, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2051, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "844:7:10"}, "referencedDeclaration": 2050, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 2057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2056, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2062, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 2118, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2075, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 2074, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 2072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2068, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2065, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2071, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2073, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 2076, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2066, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2065, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 2076, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2064, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2063, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "964:7:10"}, "referencedDeclaration": 2050, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 2067, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 2118, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2103, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [2083], "declarations": [{"constant": false, "id": 2083, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 2103, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2082, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2086, "initialValue": {"expression": {"id": 2084, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2085, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2088, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2089, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2091, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2087, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2093, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 2102, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 2100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2094, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2096, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2097, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2101, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 2104, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2079, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 2104, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2078, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2077, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1093:7:10"}, "referencedDeclaration": 2050, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 2081, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 2118, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2116, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 2114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2110, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2107, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2115, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 2117, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2108, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2107, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 2117, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2106, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2105, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1324:7:10"}, "referencedDeclaration": 2050, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 2109, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 2118, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2119, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol:Operators": {"srcmap": "100:3949:7:-:0;;;546:397;;;;;;;;;;570:26;599:25;:23;;;;;:25;;:::i;:::-;570:54;;670:6;634:2;:33;;;:42;;;;;;;;;;;;;;;;;;720:37;728:19;720:35;;;;;:37;;:::i;:::-;686:2;:31;;;:71;;;;;;;;;;;;;;;;;;799:3;767:2;:29;;;:35;;;;;;;;;;;;;;;;;;842:6;812:2;:27;;;:36;;;;;;;;;;;;;;;;;;888:6;858:2;:27;;;:36;;;;;;;;;;;;;;;;;;932:4;904:2;:25;;;:32;;;;;;;;;;;;;;;;;;560:383;100:3949;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;488:169::-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:410::-;516:7;539:20;557:1;539:20;:::i;:::-;534:25;;573:20;591:1;573:20;:::i;:::-;568:25;;628:1;625;621:9;650:30;668:11;650:30;:::i;:::-;639:41;;829:1;820:7;816:15;813:1;810:22;790:1;783:9;763:83;740:139;;859:18;;:::i;:::-;740:139;524:362;476:410;;;;:::o;892:169::-;976:11;1010:6;1005:3;998:19;1050:4;1045:3;1041:14;1026:29;;892:169;;;;:::o;1067:168::-;1207:20;1203:1;1195:6;1191:14;1184:44;1067:168;:::o;1241:366::-;1383:3;1404:67;1468:2;1463:3;1404:67;:::i;:::-;1397:74;;1480:93;1569:3;1480:93;:::i;:::-;1598:2;1593:3;1589:12;1582:19;;1241:366;;;:::o;1613:419::-;1779:4;1817:2;1806:9;1802:18;1794:26;;1866:9;1860:4;1856:20;1852:1;1841:9;1837:17;1830:47;1894:131;2020:4;1894:131;:::i;:::-;1886:139;;1613:419;;;:::o;2038:180::-;2086:77;2083:1;2076:88;2183:4;2180:1;2173:15;2207:4;2204:1;2197:15;2224:185;2264:1;2281:20;2299:1;2281:20;:::i;:::-;2276:25;;2315:20;2333:1;2315:20;:::i;:::-;2310:25;;2354:1;2344:35;;2359:18;;:::i;:::-;2344:35;2401:1;2398;2394:9;2389:14;;2224:185;;;;:::o;2415:176::-;2447:1;2464:20;2482:1;2464:20;:::i;:::-;2459:25;;2498:20;2516:1;2498:20;:::i;:::-;2493:25;;2537:1;2527:35;;2542:18;;:::i;:::-;2527:35;2583:1;2580;2576:9;2571:14;;2415:176;;;;:::o;2597:172::-;2737:24;2733:1;2725:6;2721:14;2714:48;2597:172;:::o;2775:366::-;2917:3;2938:67;3002:2;2997:3;2938:67;:::i;:::-;2931:74;;3014:93;3103:3;3014:93;:::i;:::-;3132:2;3127:3;3123:12;3116:19;;2775:366;;;:::o;3147:419::-;3313:4;3351:2;3340:9;3336:18;3328:26;;3400:9;3394:4;3390:20;3386:1;3375:9;3371:17;3364:47;3428:131;3554:4;3428:131;:::i;:::-;3420:139;;3147:419;;;:::o;100:3949:7:-;;;;;;;", "srcmap-runtime": "100:3949:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;949:762;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1931:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:676:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2859:349:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5386:405:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6479:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2638:162:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2462:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:131:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1717:208:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4389:991:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3214:567:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3079:1304:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2587:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3787:260:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:998:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:762:7;1064:1;1044:9;;:16;;:21;;:42;;;;;1085:1;1069:17;;:9;;1079:1;1069:12;;;;;;;:::i;:::-;;;;;;;;;;:17;;;;;1044:42;1036:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;1136:16;105:10:6;1155:7:7;:25;;;;:::i;:::-;1136:44;;1191:12;105:10:6;1248:1:7;105:10:6;251:11:7;1207:38;;;;;;:::i;:::-;:42;;;;:::i;:::-;1206:62;;;;:::i;:::-;1191:77;;1278:12;1293:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1278:55;;;;1358:4;1352:3;:10;:24;;;;;1372:4;1366:3;:10;1352:24;1344:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10:6;1415:3:7;:21;;;;:::i;:::-;1409:27;;1511:1;1455:17;:15;:17::i;:::-;:30;;:52;1496:9;;1486:20;;;;;;;:::i;:::-;;;;;;;;1455:52;;;;;;;;;;;;;;;;;;;;;:57;;;1447:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;1547:4;:21;;;1569:9;;1580:3;1547:37;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1543:162;;1688:5;1681:13;;;;:::i;:::-;;1543:162;;;1627:5;1638:10;1627:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:75;1543:162;1026:685;;;949:762;;;:::o;1931:525::-;2035:5;:12;;;;2015:10;:33;;;;:::i;:::-;2002:46;;2059:25;2087:17;:15;:17::i;:::-;:27;;:39;2115:10;2087:39;;;;;;;;;;;;;;;2059:67;;2171:1;2144:8;:17;;:23;;;;;;;;;;;;:28;;;2136:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2212:10;2225:8;:12;;;;;;;;;;;;2212:25;;2248:20;311:6;2298:25;:23;:25::i;:::-;:48;;;;;;;;;;;;311:6;2279:67;;;;:::i;:::-;2272:3;:75;;;;:::i;:::-;2271:108;;;;:::i;:::-;2248:131;;2390:4;:23;;;2414:10;2426:22;:13;:20;;;:22::i;:::-;2390:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1992:464;;;1931:525;:::o;5797:676:8:-;5884:21;5908:17;:15;:17::i;:::-;5884:41;;5935:24;5962:1;:11;;:23;5974:10;5962:23;;;;;;;;;;;;;;;5935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:21;:8;:19;:21::i;:::-;6027:19;6049:12;:3;:10;:12::i;:::-;6027:34;;6091:8;:12;;;6075:28;;:12;:28;;;6071:64;;6112:23;;;;;;;;;;;;;;6071:64;6146:25;:8;:23;:25::i;:::-;6196:12;6181:8;:12;;:27;;;;;;;;;;;6244:8;6218:1;:11;;:23;6230:10;6218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:1;6267;:27;;:39;6295:10;6267:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6263:126;;6350:1;:27;;:39;6378:10;6350:39;;;;;;;;;;;;;;;;6343:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6263:126;6436:10;6404:62;;6424:10;6404:62;;;6448:12;6462:3;6404:62;;;;;;;:::i;:::-;;;;;;;;5874:599;;;5797:676;;:::o;2859:349:7:-;2973:5;:12;;;;2953:10;:33;;;;:::i;:::-;2940:46;;2997:25;3025:17;:15;:17::i;:::-;:27;;:39;3053:10;3025:39;;;;;;;;;;;;;;;2997:67;;3107:1;3080:8;:17;;:23;;;;;;;;;;;;:28;;;3079:54;;;;;3113:8;:20;;;;;;;;;;;;3079:54;3075:126;;;3152:49;3168:10;3180:8;:20;;;;;;;;;;;;3152:49;;;;;;;:::i;:::-;;;;;;;;3075:126;2930:278;2859:349;:::o;5386:405:8:-;5468:21;5492:17;:15;:17::i;:::-;5468:41;;5519:36;:1;:11;;:23;5531:10;5519:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5631:1;5570;:27;;:39;5598:10;5570:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5566:90;;5641:15;;;;;;;;;;;;;;5566:90;5674:1;:27;;:39;5702:10;5674:39;;;;;;;;;;;;;;;;5667:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:10;5729:55;;5761:10;5729:55;;;;;;;;;;;;5458:333;5386:405;:::o;1782:799::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2235:8;:20;;;2231:132;;;2294:5;2271:8;:20;;:28;;;;;;;;;;;2320:1;:20;;:32;2341:10;2320:32;;;;;;;;;;;;;;;;2313:39;;;;;;;;;;;2231:132;2398:8;2372:1;:11;;:23;2384:10;2372:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:1;2421:14;:18;;;2417:116;;;2455:67;2486:10;2498:23;:14;:21;;;:23::i;:::-;2455:30;:67::i;:::-;2417:116;2563:10;2547:27;;;;;;;;;;;;1843:738;;;1782:799;:::o;6479:149::-;6576:45;6602:10;6614:6;6576:25;:45::i;:::-;6479:149;;:::o;2638:162:7:-;2738:5;:12;;;;2718:10;:33;;;;:::i;:::-;2705:46;;2762:4;:19;;;2782:10;2762:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:162;:::o;2462:170::-;2566:5;:12;;;;2546:10;:33;;;;:::i;:::-;2533:46;;2590:4;:23;;;2614:10;2590:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2462:170;:::o;6634:131:8:-;6718:40;6744:10;6756:1;6718:25;:40::i;:::-;6634:131;:::o;1717:208:7:-;1844:5;:12;;;;1824:10;:33;;;;:::i;:::-;1811:46;;1868:4;:25;;;1894:10;1906:11;1868:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:208;;:::o;4389:991:8:-;4464:21;4488:17;:15;:17::i;:::-;4464:41;;4515:24;4542:1;:11;;:23;4554:10;4542:23;;;;;;;;;;;;;;;4515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:21;:8;:19;:21::i;:::-;4607:48;4658:1;:27;;:39;4686:10;4658:39;;;;;;;;;;;;;;;4607:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4750:1;4712:16;:34;;;:39;;;4708:67;;4760:15;;;;;;;;;;;;;;4708:67;4821:16;:34;;;4803:52;;:15;:52;:106;;;;4877:16;:32;;;4859:50;;:15;:50;4803:106;4786:194;;;4941:28;;;;;;;;;;;;;;4786:194;5026:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4994:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4990:97;;;5075:12;;;;;;;;;;;;;;4990:97;5098:25;:8;:23;:25::i;:::-;5148:16;:20;;;5133:8;:12;;:35;;;;;;;;;;;5204:8;5178:1;:11;;:23;5190:10;5178:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5230:1;:27;;:39;5258:10;5230:39;;;;;;;;;;;;;;;;5223:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:10;5285:88;;5305:10;5285:88;;;5329:12;5343:29;:16;:20;;;:27;;;:29::i;:::-;5285:88;;;;;;;:::i;:::-;;;;;;;;4454:926;;;4389:991;:::o;3214:567:7:-;3349:1;3333:5;:12;;;;3326:24;;;;:::i;:::-;3312:10;:39;;;;:::i;:::-;3307:1;:45;;;;:::i;:::-;3294:58;;3363:25;3391:17;:15;:17::i;:::-;:27;;:39;3419:10;3391:39;;;;;;;;;;;;;;;3363:67;;3534:1;3507:8;:17;;:23;;;;;;;;;;;;:28;;;3506:126;;;;;3630:1;3553:17;:15;:17::i;:::-;:43;;:55;3597:10;3553:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;3506:126;3441:334;;;3662:102;3678:10;3690:17;:15;:17::i;:::-;:43;;:55;3734:10;3690:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;3662:102;;;;;;;:::i;:::-;;;;;;;;3441:334;3284:497;3214:567;:::o;3079:1304:8:-;3167:21;3191:17;:15;:17::i;:::-;3167:41;;3218:36;:1;:11;;:23;3230:10;3218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3265:26;3294:25;:23;:25::i;:::-;3265:54;;3341:1;3334:3;:8;;:38;;;;;450:11;3346:26;;:3;:26;3334:38;3330:62;;;3381:11;;;;;;;;;;;;;;3330:62;3412:2;:17;;;;;;;;;;;;3406:23;;:3;:23;3402:48;;;3438:12;;;;;;;;;;;;;;3402:48;3461:18;3482:1;:11;;:23;3494:10;3482:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3461:48;;3519:16;3538:12;:3;:10;:12::i;:::-;3519:31;;3580:9;3565:24;;:11;:24;;;3561:188;;3612:25;;;;;;;;;;;;;;3561:188;3671:1;3658:9;:14;;;;:34;;;;;3691:1;3676:11;:16;;;3658:34;3654:95;;;3715:23;;;;;;;;;;;;;;3654:95;3847:20;510:6;3905:2;:25;;;;;;;;;;;;510:6;3886:44;;;;:::i;:::-;3871:11;:60;;;;:::i;:::-;3870:81;;;;:::i;:::-;3847:104;;3978:13;3966:25;;:9;:25;;;3962:63;;;4000:25;;;;;;;;;;;;;;3962:63;4078:221;;;;;;;;4116:9;4078:221;;;;;;4165:2;:27;;;;;;;;;;;;4146:15;4139:53;;;;:::i;:::-;4078:221;;;;;;4262:2;:27;;;;;;;;;;;;4232:2;:27;;;;;;;;;;;;4213:15;4206:53;;;;:::i;:::-;:83;;;;:::i;:::-;4078:221;;;;;4036:1;:27;;:39;4064:10;4036:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4346:10;4314:62;;4334:10;4314:62;;;4358:12;4372:3;4314:62;;;;;;;:::i;:::-;;;;;;;;3157:1226;;;;;3079:1304;;:::o;2587:486::-;2676:21;2700:17;:15;:17::i;:::-;2676:41;;2727:36;:1;:11;;:23;2739:10;2727:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2801:1;2778:25;;:11;:25;;;2774:172;;2857:5;2819:1;:11;;:23;2831:10;2819:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2774:172;;;2931:4;2893:1;:11;;:23;2905:10;2893:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2774:172;2991:11;2956:1;:20;;:32;2977:10;2956:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3042:10;3017:49;;;3054:11;3017:49;;;;;;:::i;:::-;;;;;;;;2666:407;2587:486;;:::o;3787:260:7:-;3844:4;3865:9;3860:181;3880:5;:12;;;;3876:1;:16;3860:181;;;3913:25;3941:17;:15;:17::i;:::-;:27;;:37;3969:5;3975:1;3969:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3941:37;;;;;;;;;;;;;;;3913:65;;4028:1;3999:8;:17;;:25;;;;;;;;;;;;:30;;;3992:38;;;;:::i;:::-;;3899:142;3894:3;;;;;:::i;:::-;;;;3860:181;;;;3787:260;:::o;778:998:8:-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;996:255:3:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;7633:207:8:-;7726:43;7750:10;7762:6;7726:23;:43::i;:::-;7814:10;7784:49;;7802:10;7784:49;;;7826:6;7784:49;;;;;;:::i;:::-;;;;;;;;7633:207;;:::o;6796:831::-;6884:21;6908:17;:15;:17::i;:::-;6884:41;;6935:24;6962:1;:11;;:23;6974:10;6962:23;;;;;;;;;;;;;;;6935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6995:21;:8;:19;:21::i;:::-;7027:25;:8;:23;:25::i;:::-;7063:22;7095:19;7117:15;:6;:13;:15::i;:::-;7095:37;;7157:1;7147:6;:11;:44;;;;;7190:1;7162:8;:17;;;:25;;;:29;;;7147:44;7143:299;;;7225:8;:17;;;:25;;;7207:43;;7143:299;;;7280:1;7271:6;:10;:55;;;;;7314:12;7285:41;;:8;:17;;;:25;;;:41;;;;7271:55;7267:175;;;7360:12;7342:30;;7267:175;;;7410:21;;;;;;;;;;;;;;7267:175;7143:299;7481:15;7452:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7533:8;7507:1;:11;;:23;7519:10;7507:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:68;7583:10;7595:24;:15;:22;;;:24::i;:::-;7552:30;:68::i;:::-;6874:753;;;;6796:831;;:::o;945:123:10:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:11:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:77::-;1311:7;1340:5;1329:16;;1274:77;;;:::o;1357:122::-;1430:24;1448:5;1430:24;:::i;:::-;1423:5;1420:35;1410:63;;1469:1;1466;1459:12;1410:63;1357:122;:::o;1485:139::-;1531:5;1569:6;1556:20;1547:29;;1585:33;1612:5;1585:33;:::i;:::-;1485:139;;;;:::o;1630:672::-;1709:6;1717;1725;1774:2;1762:9;1753:7;1749:23;1745:32;1742:119;;;1780:79;;:::i;:::-;1742:119;1928:1;1917:9;1913:17;1900:31;1958:18;1950:6;1947:30;1944:117;;;1980:79;;:::i;:::-;1944:117;2093:64;2149:7;2140:6;2129:9;2125:22;2093:64;:::i;:::-;2075:82;;;;1871:296;2206:2;2232:53;2277:7;2268:6;2257:9;2253:22;2232:53;:::i;:::-;2222:63;;2177:118;1630:672;;;;;:::o;2308:101::-;2344:7;2384:18;2377:5;2373:30;2362:41;;2308:101;;;:::o;2415:120::-;2487:23;2504:5;2487:23;:::i;:::-;2480:5;2477:34;2467:62;;2525:1;2522;2515:12;2467:62;2415:120;:::o;2541:137::-;2586:5;2624:6;2611:20;2602:29;;2640:32;2666:5;2640:32;:::i;:::-;2541:137;;;;:::o;2684:327::-;2742:6;2791:2;2779:9;2770:7;2766:23;2762:32;2759:119;;;2797:79;;:::i;:::-;2759:119;2917:1;2942:52;2986:7;2977:6;2966:9;2962:22;2942:52;:::i;:::-;2932:62;;2888:116;2684:327;;;;:::o;3017:472::-;3084:6;3092;3141:2;3129:9;3120:7;3116:23;3112:32;3109:119;;;3147:79;;:::i;:::-;3109:119;3267:1;3292:52;3336:7;3327:6;3316:9;3312:22;3292:52;:::i;:::-;3282:62;;3238:116;3393:2;3419:53;3464:7;3455:6;3444:9;3440:22;3419:53;:::i;:::-;3409:63;;3364:118;3017:472;;;;;:::o;3495:126::-;3532:7;3572:42;3565:5;3561:54;3550:65;;3495:126;;;:::o;3627:96::-;3664:7;3693:24;3711:5;3693:24;:::i;:::-;3682:35;;3627:96;;;:::o;3729:122::-;3802:24;3820:5;3802:24;:::i;:::-;3795:5;3792:35;3782:63;;3841:1;3838;3831:12;3782:63;3729:122;:::o;3857:139::-;3903:5;3941:6;3928:20;3919:29;;3957:33;3984:5;3957:33;:::i;:::-;3857:139;;;;:::o;4002:472::-;4069:6;4077;4126:2;4114:9;4105:7;4101:23;4097:32;4094:119;;;4132:79;;:::i;:::-;4094:119;4252:1;4277:52;4321:7;4312:6;4301:9;4297:22;4277:52;:::i;:::-;4267:62;;4223:116;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;4002:472;;;;;:::o;4480:90::-;4514:7;4557:5;4550:13;4543:21;4532:32;;4480:90;;;:::o;4576:109::-;4657:21;4672:5;4657:21;:::i;:::-;4652:3;4645:34;4576:109;;:::o;4691:210::-;4778:4;4816:2;4805:9;4801:18;4793:26;;4829:65;4891:1;4880:9;4876:17;4867:6;4829:65;:::i;:::-;4691:210;;;;:::o;4907:115::-;4992:23;5009:5;4992:23;:::i;:::-;4987:3;4980:36;4907:115;;:::o;5028:218::-;5119:4;5157:2;5146:9;5142:18;5134:26;;5170:69;5236:1;5225:9;5221:17;5212:6;5170:69;:::i;:::-;5028:218;;;;:::o;5252:180::-;5300:77;5297:1;5290:88;5397:4;5394:1;5387:15;5421:4;5418:1;5411:15;5438:169;5522:11;5556:6;5551:3;5544:19;5596:4;5591:3;5587:14;5572:29;;5438:169;;;;:::o;5613:221::-;5753:34;5749:1;5741:6;5737:14;5730:58;5822:4;5817:2;5809:6;5805:15;5798:29;5613:221;:::o;5840:366::-;5982:3;6003:67;6067:2;6062:3;6003:67;:::i;:::-;5996:74;;6079:93;6168:3;6079:93;:::i;:::-;6197:2;6192:3;6188:12;6181:19;;5840:366;;;:::o;6212:419::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6465:9;6459:4;6455:20;6451:1;6440:9;6436:17;6429:47;6493:131;6619:4;6493:131;:::i;:::-;6485:139;;6212:419;;;:::o;6637:180::-;6685:77;6682:1;6675:88;6782:4;6779:1;6772:15;6806:4;6803:1;6796:15;6823:410;6863:7;6886:20;6904:1;6886:20;:::i;:::-;6881:25;;6920:20;6938:1;6920:20;:::i;:::-;6915:25;;6975:1;6972;6968:9;6997:30;7015:11;6997:30;:::i;:::-;6986:41;;7176:1;7167:7;7163:15;7160:1;7157:22;7137:1;7130:9;7110:83;7087:139;;7206:18;;:::i;:::-;7087:139;6871:362;6823:410;;;;:::o;7239:191::-;7279:3;7298:20;7316:1;7298:20;:::i;:::-;7293:25;;7332:20;7350:1;7332:20;:::i;:::-;7327:25;;7375:1;7372;7368:9;7361:16;;7396:3;7393:1;7390:10;7387:36;;;7403:18;;:::i;:::-;7387:36;7239:191;;;;:::o;7436:194::-;7476:4;7496:20;7514:1;7496:20;:::i;:::-;7491:25;;7530:20;7548:1;7530:20;:::i;:::-;7525:25;;7574:1;7571;7567:9;7559:17;;7598:1;7592:4;7589:11;7586:37;;;7603:18;;:::i;:::-;7586:37;7436:194;;;;:::o;7636:180::-;7684:77;7681:1;7674:88;7781:4;7778:1;7771:15;7805:4;7802:1;7795:15;7822:185;7862:1;7879:20;7897:1;7879:20;:::i;:::-;7874:25;;7913:20;7931:1;7913:20;:::i;:::-;7908:25;;7952:1;7942:35;;7957:18;;:::i;:::-;7942:35;7999:1;7996;7992:9;7987:14;;7822:185;;;;:::o;8013:168::-;8153:20;8149:1;8141:6;8137:14;8130:44;8013:168;:::o;8187:366::-;8329:3;8350:67;8414:2;8409:3;8350:67;:::i;:::-;8343:74;;8426:93;8515:3;8426:93;:::i;:::-;8544:2;8539:3;8535:12;8528:19;;8187:366;;;:::o;8559:419::-;8725:4;8763:2;8752:9;8748:18;8740:26;;8812:9;8806:4;8802:20;8798:1;8787:9;8783:17;8776:47;8840:131;8966:4;8840:131;:::i;:::-;8832:139;;8559:419;;;:::o;8984:147::-;9085:11;9122:3;9107:18;;8984:147;;;;:::o;9137:146::-;9234:6;9229:3;9224;9211:30;9275:1;9266:6;9261:3;9257:16;9250:27;9137:146;;;:::o;9311:327::-;9425:3;9446:88;9527:6;9522:3;9446:88;:::i;:::-;9439:95;;9544:56;9593:6;9588:3;9581:5;9544:56;:::i;:::-;9625:6;9620:3;9616:16;9609:23;;9311:327;;;;;:::o;9644:291::-;9784:3;9806:103;9905:3;9896:6;9888;9806:103;:::i;:::-;9799:110;;9926:3;9919:10;;9644:291;;;;;:::o;9941:165::-;10081:17;10077:1;10069:6;10065:14;10058:41;9941:165;:::o;10112:366::-;10254:3;10275:67;10339:2;10334:3;10275:67;:::i;:::-;10268:74;;10351:93;10440:3;10351:93;:::i;:::-;10469:2;10464:3;10460:12;10453:19;;10112:366;;;:::o;10484:419::-;10650:4;10688:2;10677:9;10673:18;10665:26;;10737:9;10731:4;10727:20;10723:1;10712:9;10708:17;10701:47;10765:131;10891:4;10765:131;:::i;:::-;10757:139;;10484:419;;;:::o;10909:168::-;10992:11;11026:6;11021:3;11014:19;11066:4;11061:3;11057:14;11042:29;;10909:168;;;;:::o;11083:102::-;11124:6;11175:2;11171:7;11166:2;11159:5;11155:14;11151:28;11141:38;;11083:102;;;:::o;11213:314::-;11309:3;11330:70;11393:6;11388:3;11330:70;:::i;:::-;11323:77;;11410:56;11459:6;11454:3;11447:5;11410:56;:::i;:::-;11491:29;11513:6;11491:29;:::i;:::-;11486:3;11482:39;11475:46;;11213:314;;;;;:::o;11533:118::-;11620:24;11638:5;11620:24;:::i;:::-;11615:3;11608:37;11533:118;;:::o;11657:439::-;11806:4;11844:2;11833:9;11829:18;11821:26;;11893:9;11887:4;11883:20;11879:1;11868:9;11864:17;11857:47;11921:86;12002:4;11993:6;11985;11921:86;:::i;:::-;11913:94;;12017:72;12085:2;12074:9;12070:18;12061:6;12017:72;:::i;:::-;11657:439;;;;;;:::o;12102:141::-;12158:5;12189:6;12183:13;12174:22;;12205:32;12231:5;12205:32;:::i;:::-;12102:141;;;;:::o;12249:349::-;12318:6;12367:2;12355:9;12346:7;12342:23;12338:32;12335:119;;;12373:79;;:::i;:::-;12335:119;12493:1;12518:63;12573:7;12564:6;12553:9;12549:22;12518:63;:::i;:::-;12508:73;;12464:127;12249:349;;;;:::o;12604:180::-;12652:77;12649:1;12642:88;12749:4;12746:1;12739:15;12773:4;12770:1;12763:15;12790:173;12821:1;12838:19;12855:1;12838:19;:::i;:::-;12833:24;;12871:19;12888:1;12871:19;:::i;:::-;12866:24;;12909:1;12899:35;;12914:18;;:::i;:::-;12899:35;12955:1;12952;12948:9;12943:14;;12790:173;;;;:::o;12969:174::-;13109:26;13105:1;13097:6;13093:14;13086:50;12969:174;:::o;13149:366::-;13291:3;13312:67;13376:2;13371:3;13312:67;:::i;:::-;13305:74;;13388:93;13477:3;13388:93;:::i;:::-;13506:2;13501:3;13497:12;13490:19;;13149:366;;;:::o;13521:419::-;13687:4;13725:2;13714:9;13710:18;13702:26;;13774:9;13768:4;13764:20;13760:1;13749:9;13745:17;13738:47;13802:131;13928:4;13802:131;:::i;:::-;13794:139;;13521:419;;;:::o;13946:205::-;13985:3;14004:19;14021:1;14004:19;:::i;:::-;13999:24;;14037:19;14054:1;14037:19;:::i;:::-;14032:24;;14079:1;14076;14072:9;14065:16;;14102:18;14097:3;14094:27;14091:53;;;14124:18;;:::i;:::-;14091:53;13946:205;;;;:::o;14157:275::-;14196:7;14219:19;14236:1;14219:19;:::i;:::-;14214:24;;14252:19;14269:1;14252:19;:::i;:::-;14247:24;;14306:1;14303;14299:9;14328:29;14345:11;14328:29;:::i;:::-;14317:40;;14389:11;14380:7;14377:24;14367:58;;14405:18;;:::i;:::-;14367:58;14204:228;14157:275;;;;:::o;14438:182::-;14477:1;14494:19;14511:1;14494:19;:::i;:::-;14489:24;;14527:19;14544:1;14527:19;:::i;:::-;14522:24;;14565:1;14555:35;;14570:18;;:::i;:::-;14555:35;14612:1;14609;14605:9;14600:14;;14438:182;;;;:::o;14626:328::-;14745:4;14783:2;14772:9;14768:18;14760:26;;14796:69;14862:1;14851:9;14847:17;14838:6;14796:69;:::i;:::-;14875:72;14943:2;14932:9;14928:18;14919:6;14875:72;:::i;:::-;14626:328;;;;;:::o;14960:332::-;15081:4;15119:2;15108:9;15104:18;15096:26;;15132:71;15200:1;15189:9;15185:17;15176:6;15132:71;:::i;:::-;15213:72;15281:2;15270:9;15266:18;15257:6;15213:72;:::i;:::-;14960:332;;;;;:::o;15298:316::-;15411:4;15449:2;15438:9;15434:18;15426:26;;15462:69;15528:1;15517:9;15513:17;15504:6;15462:69;:::i;:::-;15541:66;15603:2;15592:9;15588:18;15579:6;15541:66;:::i;:::-;15298:316;;;;;:::o;15620:118::-;15707:24;15725:5;15707:24;:::i;:::-;15702:3;15695:37;15620:118;;:::o;15744:328::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15914:69;15980:1;15969:9;15965:17;15956:6;15914:69;:::i;:::-;15993:72;16061:2;16050:9;16046:18;16037:6;15993:72;:::i;:::-;15744:328;;;;;:::o;16078:208::-;16117:4;16137:19;16154:1;16137:19;:::i;:::-;16132:24;;16170:19;16187:1;16170:19;:::i;:::-;16165:24;;16213:1;16210;16206:9;16198:17;;16237:18;16231:4;16228:28;16225:54;;;16259:18;;:::i;:::-;16225:54;16078:208;;;;:::o;16292:324::-;16409:4;16447:2;16436:9;16432:18;16424:26;;16460:69;16526:1;16515:9;16511:17;16502:6;16460:69;:::i;:::-;16539:70;16605:2;16594:9;16590:18;16581:6;16539:70;:::i;:::-;16292:324;;;;;:::o;16622:222::-;16715:4;16753:2;16742:9;16738:18;16730:26;;16766:71;16834:1;16823:9;16819:17;16810:6;16766:71;:::i;:::-;16622:222;;;;:::o;16850:233::-;16889:3;16912:24;16930:5;16912:24;:::i;:::-;16903:33;;16958:66;16951:5;16948:77;16945:103;;17028:18;;:::i;:::-;16945:103;17075:1;17068:5;17064:13;17057:20;;16850:233;;;:::o;17089:168::-;17229:20;17225:1;17217:6;17213:14;17206:44;17089:168;:::o;17263:366::-;17405:3;17426:67;17490:2;17485:3;17426:67;:::i;:::-;17419:74;;17502:93;17591:3;17502:93;:::i;:::-;17620:2;17615:3;17611:12;17604:19;;17263:366;;;:::o;17635:419::-;17801:4;17839:2;17828:9;17824:18;17816:26;;17888:9;17882:4;17878:20;17874:1;17863:9;17859:17;17852:47;17916:131;18042:4;17916:131;:::i;:::-;17908:139;;17635:419;;;:::o;18060:93::-;18096:7;18136:10;18129:5;18125:22;18114:33;;18060:93;;;:::o;18159:200::-;18198:4;18218:19;18235:1;18218:19;:::i;:::-;18213:24;;18251:19;18268:1;18251:19;:::i;:::-;18246:24;;18294:1;18291;18287:9;18279:17;;18318:10;18312:4;18309:20;18306:46;;;18332:18;;:::i;:::-;18306:46;18159:200;;;;:::o;18365:222::-;18458:4;18496:2;18485:9;18481:18;18473:26;;18509:71;18577:1;18566:9;18562:17;18553:6;18509:71;:::i;:::-;18365:222;;;;:::o;18593:176::-;18625:1;18642:20;18660:1;18642:20;:::i;:::-;18637:25;;18676:20;18694:1;18676:20;:::i;:::-;18671:25;;18715:1;18705:35;;18720:18;;:::i;:::-;18705:35;18761:1;18758;18754:9;18749:14;;18593:176;;;;:::o;18775:172::-;18915:24;18911:1;18903:6;18899:14;18892:48;18775:172;:::o;18953:366::-;19095:3;19116:67;19180:2;19175:3;19116:67;:::i;:::-;19109:74;;19192:93;19281:3;19192:93;:::i;:::-;19310:2;19305:3;19301:12;19294:19;;18953:366;;;:::o;19325:419::-;19491:4;19529:2;19518:9;19514:18;19506:26;;19578:9;19572:4;19568:20;19564:1;19553:9;19549:17;19542:47;19606:131;19732:4;19606:131;:::i;:::-;19598:139;;19325:419;;;:::o;19750:332::-;19871:4;19909:2;19898:9;19894:18;19886:26;;19922:71;19990:1;19979:9;19975:17;19966:6;19922:71;:::i;:::-;20003:72;20071:2;20060:9;20056:18;20047:6;20003:72;:::i;:::-;19750:332;;;;;:::o;20088:116::-;20158:21;20173:5;20158:21;:::i;:::-;20151:5;20148:32;20138:60;;20194:1;20191;20184:12;20138:60;20088:116;:::o;20210:137::-;20264:5;20295:6;20289:13;20280:22;;20311:30;20335:5;20311:30;:::i;:::-;20210:137;;;;:::o;20353:345::-;20420:6;20469:2;20457:9;20448:7;20444:23;20440:32;20437:119;;;20475:79;;:::i;:::-;20437:119;20595:1;20620:61;20673:7;20664:6;20653:9;20649:22;20620:61;:::i;:::-;20610:71;;20566:125;20353:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxAllowedFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorFee\",\"type\":\"uint64\"}],\"name\":\"Declared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"helper_createOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506000620000296200015660201b62002be71760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062000077670de0b6b3a76400006200019460201b62002c231760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050620004cf565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6200018b9190620002b5565b90508091505090565b60006298968068010000000000000000620001b09190620002f0565b821115620001f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ec906200039c565b60405180910390fd5b629896806200020a836200021d60201b60201c565b620002169190620003ed565b9050919050565b600080629896808362000231919062000425565b1462000274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026b90620004ad565b60405180910390fd5b819050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620002c2826200027c565b9150620002cf836200027c565b9250828203905081811115620002ea57620002e962000286565b5b92915050565b6000620002fd826200027c565b91506200030a836200027c565b92508282026200031a816200027c565b9150828204841483151762000334576200033362000286565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000620003846012836200033b565b915062000391826200034c565b602082019050919050565b60006020820190508181036000830152620003b78162000375565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003fa826200027c565b915062000407836200027c565b9250826200041a5762000419620003be565b5b828204905092915050565b600062000432826200027c565b91506200043f836200027c565b925082620004525762000451620003be565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000620004956016836200033b565b9150620004a2826200045d565b602082019050919050565b60006020820190508181036000830152620004c88162000486565b9050919050565b61405080620004df6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806345a5605a116100a25780639d5ceb91116100715780639d5ceb9114610260578063b317c35f1461027c578063c90a7eab14610298578063e7780e00146102b4578063ff212c5c146102d25761010b565b806345a5605a146101f05780634bc93b641461020c57806360e7474e146102285780638932cee0146102445761010b565b806323d68a6d116100de57806323d68a6d146101805780632e168e0e1461019c57806335f63767146101b857806336058dc4146101d45761010b565b80630a3d0123146101105780630f5baea81461012c578063190d82e41461014857806322ca0bed14610164575b600080fd5b61012a60048036038101906101259190613523565b610302565b005b610146600480360381019061014191906135c3565b610600565b005b610162600480360381019061015d91906135f0565b610792565b005b61017e600480360381019061017991906135c3565b610c79565b005b61019a600480360381019061019591906135c3565b610d4f565b005b6101b660048036038101906101b191906135c3565b611051565b005b6101d260048036038101906101cd91906135f0565b6114e6565b005b6101ee60048036038101906101e991906135c3565b6114f4565b005b61020a600480360381019061020591906135c3565b611575565b005b610226600480360381019061022191906135c3565b6115f6565b005b610242600480360381019061023d919061368e565b611604565b005b61025e600480360381019061025991906135c3565b611688565b005b61027a600480360381019061027591906135c3565b611cc6565b005b610296600480360381019061029191906135f0565b611e2e565b005b6102b260048036038101906102ad919061368e565b6123e4565b005b6102bc612706565b6040516102c991906136e9565b60405180910390f35b6102ec60048036038101906102e79190613523565b6127d5565b6040516102f99190613713565b60405180910390f35b600083839050141580156103595750600060f81b8383600081811061032a5761032961372e565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f906137e0565b60405180910390fd5b600062989680680100000000000000006103b2919061382f565b90506000629896806001629896806305f5e10067ffffffffffffffff166103d99190613871565b6103e391906138a5565b6103ed9190613908565b905060006103f9612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff169050818411801561042b57508084105b61046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046190613985565b60405180910390fd5b6298968084610479919061382f565b93506000610485612c9d565b6002016000888860405161049a9291906139e4565b6040518091039020815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690613a49565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c8787876040518463ffffffff1660e01b815260040161054c93929190613ac7565b6020604051808303816000875af192505050801561058857506040513d601f19601f820116820180604052508101906105859190613b0e565b60015b6105a057600061059b5761059a613b3b565b5b6105f8565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050505050565b600080549050816106119190613b6a565b9050600061061d612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90613be7565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106106d1612be7565b60020160089054906101000a900467ffffffffffffffff166127106106f69190613c07565b836107019190613c43565b61070b9190613c80565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f8561073d8467ffffffffffffffff16612cd9565b6040518363ffffffff1660e01b815260040161075a929190613cb1565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b5050505050505050565b600061079c612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061094681612cfb565b600061095184612c23565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106109a4576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad82612daf565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610c17578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610c6a929190613cda565b60405180910390a35050505050565b60008054905081610c8a9190613b6a565b90506000610c96612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610cfb57508060010160009054906101000a900460ff165b15610d4b577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610d42929190613d03565b60405180910390a15b5050565b6000610d59612c9d565b9050610efe8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610f82576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061105b612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061120581612cfb565b61120e81612daf565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156112ff5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff1611156114a9576114a8846114a38367ffffffffffffffff16612cd9565b612e77565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b6114f08282612ede565b5050565b600080549050816115059190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016115409190613713565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b5050505050565b600080549050816115869190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b81526004016115c19190613713565b600060405180830381600087803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b5050505050565b611601816000612ede565b50565b600080549050826116159190613b6a565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611652929190613d3b565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050505050565b6000611692612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061183c81612cfb565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611952576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061197b5750806040015167ffffffffffffffff1642115b156119b2576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119ba612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166119f3826000015167ffffffffffffffff16612cd9565b1115611a2b576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a3482612daf565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611caa856000015167ffffffffffffffff16612cd9565b604051611cb8929190613cda565b60405180910390a350505050565b6001600080549050611cd89190613d64565b81611ce39190613b6a565b6001611cef9190613c07565b90506000611cfb612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015611da457506000611d57612c9d565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15611e2a577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f782611dd3612c9d565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051611e21929190613da0565b60405180910390a15b5050565b6000611e38612c9d565b9050611fdd8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b6000611fe7612be7565b90506000831415801561200757506305f5e10067ffffffffffffffff1683105b1561203e576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561209a576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006120ea85612c23565b90508067ffffffffffffffff168267ffffffffffffffff1603612139576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561215e575060008267ffffffffffffffff16145b15612195576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106121c09190613c07565b846121cb9190613c43565b6121d59190613c80565b90508067ffffffffffffffff168267ffffffffffffffff161115612225576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426122649190613c07565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426122b09190613c07565b6122ba9190613c07565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516123d3929190613cda565b60405180910390a350505050505050565b60006123ee612c9d565b90506125938160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126115760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612657565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516126f99190613dc9565b60405180910390a2505050565b6000805b6000805490508110156127d1576000612721612c9d565b60060160008084815481106127395761273861372e565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050600081600201600001600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146127bd576127bc613b3b565b5b5080806127c990613de4565b91505061270a565b5090565b60008082141580156127f457506305f5e10067ffffffffffffffff1682105b1561282b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612833612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561288e576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612898612c9d565b9050600085856040516128ac9291906139e4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612923576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292f8260080161331d565b61293b82600801613333565b92506040518060a00160405280600063ffffffff16815260200161295e86612c23565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4888888604051612bd693929190613ac7565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c612c1a91906138a5565b90508091505090565b60006298968068010000000000000000612c3d919061382f565b821115612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7690613e78565b60405180910390fd5b62989680612c8c83613341565b612c969190613908565b9050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c612cd091906138a5565b90508091505090565b6000629896808267ffffffffffffffff16612cf4919061382f565b9050919050565b600081608001516000015163ffffffff1603612d43576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143612dca9190613ea8565b63ffffffff16612dda9190613c43565b9050808260800151602001818151612df29190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681612e259190613c43565b8260800151604001818151612e3a9190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b612e81338261339b565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612ed29190613ee0565b60405180910390a35050565b6000612ee8612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061309281612cfb565b61309b81612daf565b6000806130a785612c23565b90506000851480156130cb5750600083608001516040015167ffffffffffffffff16115b156130e057826080015160400151915061314c565b60008511801561310c57508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156131195780915061314b565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516131629190613d64565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613315866133108467ffffffffffffffff16612cd9565b612e77565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836133539190613efb565b14613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a90613f78565b60405180910390fd5b819050919050565b6133a3612c9d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613401929190613f98565b6020604051808303816000875af1158015613420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134449190613fed565b61347a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126134ad576134ac613488565b5b8235905067ffffffffffffffff8111156134ca576134c961348d565b5b6020830191508360018202830111156134e6576134e5613492565b5b9250929050565b6000819050919050565b613500816134ed565b811461350b57600080fd5b50565b60008135905061351d816134f7565b92915050565b60008060006040848603121561353c5761353b61347e565b5b600084013567ffffffffffffffff81111561355a57613559613483565b5b61356686828701613497565b935093505060206135798682870161350e565b9150509250925092565b600067ffffffffffffffff82169050919050565b6135a081613583565b81146135ab57600080fd5b50565b6000813590506135bd81613597565b92915050565b6000602082840312156135d9576135d861347e565b5b60006135e7848285016135ae565b91505092915050565b600080604083850312156136075761360661347e565b5b6000613615858286016135ae565b92505060206136268582860161350e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b600080604083850312156136a5576136a461347e565b5b60006136b3858286016135ae565b92505060206136c485828601613679565b9150509250929050565b60008115159050919050565b6136e3816136ce565b82525050565b60006020820190506136fe60008301846136da565b92915050565b61370d81613583565b82525050565b60006020820190506137286000830184613704565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d7060008201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b60006137ca60228361375d565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061383a826134ed565b9150613845836134ed565b9250828202613853816134ed565b9150828204841483151761386a57613869613800565b5b5092915050565b600061387c826134ed565b9150613887836134ed565b925082820190508082111561389f5761389e613800565b5b92915050565b60006138b0826134ed565b91506138bb836134ed565b92508282039050818111156138d3576138d2613800565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613913826134ed565b915061391e836134ed565b92508261392e5761392d6138d9565b5b828204905092915050565b7f6665652076616c75652065786365656465640000000000000000000000000000600082015250565b600061396f60128361375d565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b600081905092915050565b82818337600083830152505050565b60006139cb83856139a5565b93506139d88385846139b0565b82840190509392505050565b60006139f18284866139bf565b91508190509392505050565b7f4f70657261746f72206578697374730000000000000000000000000000000000600082015250565b6000613a33600f8361375d565b9150613a3e826139fd565b602082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000613a978385613a69565b9350613aa48385846139b0565b613aad83613a7a565b840190509392505050565b613ac1816134ed565b82525050565b60006040820190508181036000830152613ae2818587613a8b565b9050613af16020830184613ab8565b949350505050565b600081519050613b0881613597565b92915050565b600060208284031215613b2457613b2361347e565b5b6000613b3284828501613af9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613b7582613583565b9150613b8083613583565b925082613b9057613b8f6138d9565b5b828206905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000613bd160188361375d565b9150613bdc82613b9b565b602082019050919050565b60006020820190508181036000830152613c0081613bc4565b9050919050565b6000613c1282613583565b9150613c1d83613583565b9250828201905067ffffffffffffffff811115613c3d57613c3c613800565b5b92915050565b6000613c4e82613583565b9150613c5983613583565b9250828202613c6781613583565b9150808214613c7957613c78613800565b5b5092915050565b6000613c8b82613583565b9150613c9683613583565b925082613ca657613ca56138d9565b5b828204905092915050565b6000604082019050613cc66000830185613704565b613cd36020830184613ab8565b9392505050565b6000604082019050613cef6000830185613ab8565b613cfc6020830184613ab8565b9392505050565b6000604082019050613d186000830185613704565b613d2560208301846136da565b9392505050565b613d3581613650565b82525050565b6000604082019050613d506000830185613704565b613d5d6020830184613d2c565b9392505050565b6000613d6f82613583565b9150613d7a83613583565b9250828203905067ffffffffffffffff811115613d9a57613d99613800565b5b92915050565b6000604082019050613db56000830185613704565b613dc26020830184613704565b9392505050565b6000602082019050613dde6000830184613d2c565b92915050565b6000613def826134ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2157613e20613800565b5b600182019050919050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613e6260128361375d565b9150613e6d82613e2c565b602082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b600063ffffffff82169050919050565b6000613eb382613e98565b9150613ebe83613e98565b9250828203905063ffffffff811115613eda57613ed9613800565b5b92915050565b6000602082019050613ef56000830184613ab8565b92915050565b6000613f06826134ed565b9150613f11836134ed565b925082613f2157613f206138d9565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613f6260168361375d565b9150613f6d82613f2c565b602082019050919050565b60006020820190508181036000830152613f9181613f55565b9050919050565b6000604082019050613fad6000830185613d2c565b613fba6020830184613ab8565b9392505050565b613fca816136ce565b8114613fd557600080fd5b50565b600081519050613fe781613fc1565b92915050565b6000602082840312156140035761400261347e565b5b600061401184828501613fd8565b9150509291505056fea26469706673582212202a5e76c1b9eaea74b80ce9cc1c723f8922c563d2162e24cdd281e443a62c7e3464736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061010b5760003560e01c806345a5605a116100a25780639d5ceb91116100715780639d5ceb9114610260578063b317c35f1461027c578063c90a7eab14610298578063e7780e00146102b4578063ff212c5c146102d25761010b565b806345a5605a146101f05780634bc93b641461020c57806360e7474e146102285780638932cee0146102445761010b565b806323d68a6d116100de57806323d68a6d146101805780632e168e0e1461019c57806335f63767146101b857806336058dc4146101d45761010b565b80630a3d0123146101105780630f5baea81461012c578063190d82e41461014857806322ca0bed14610164575b600080fd5b61012a60048036038101906101259190613523565b610302565b005b610146600480360381019061014191906135c3565b610600565b005b610162600480360381019061015d91906135f0565b610792565b005b61017e600480360381019061017991906135c3565b610c79565b005b61019a600480360381019061019591906135c3565b610d4f565b005b6101b660048036038101906101b191906135c3565b611051565b005b6101d260048036038101906101cd91906135f0565b6114e6565b005b6101ee60048036038101906101e991906135c3565b6114f4565b005b61020a600480360381019061020591906135c3565b611575565b005b610226600480360381019061022191906135c3565b6115f6565b005b610242600480360381019061023d919061368e565b611604565b005b61025e600480360381019061025991906135c3565b611688565b005b61027a600480360381019061027591906135c3565b611cc6565b005b610296600480360381019061029191906135f0565b611e2e565b005b6102b260048036038101906102ad919061368e565b6123e4565b005b6102bc612706565b6040516102c991906136e9565b60405180910390f35b6102ec60048036038101906102e79190613523565b6127d5565b6040516102f99190613713565b60405180910390f35b600083839050141580156103595750600060f81b8383600081811061032a5761032961372e565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f906137e0565b60405180910390fd5b600062989680680100000000000000006103b2919061382f565b90506000629896806001629896806305f5e10067ffffffffffffffff166103d99190613871565b6103e391906138a5565b6103ed9190613908565b905060006103f9612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff169050818411801561042b57508084105b61046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046190613985565b60405180910390fd5b6298968084610479919061382f565b93506000610485612c9d565b6002016000888860405161049a9291906139e4565b6040518091039020815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690613a49565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c8787876040518463ffffffff1660e01b815260040161054c93929190613ac7565b6020604051808303816000875af192505050801561058857506040513d601f19601f820116820180604052508101906105859190613b0e565b60015b6105a057600061059b5761059a613b3b565b5b6105f8565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050505050565b600080549050816106119190613b6a565b9050600061061d612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90613be7565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106106d1612be7565b60020160089054906101000a900467ffffffffffffffff166127106106f69190613c07565b836107019190613c43565b61070b9190613c80565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f8561073d8467ffffffffffffffff16612cd9565b6040518363ffffffff1660e01b815260040161075a929190613cb1565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b5050505050505050565b600061079c612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061094681612cfb565b600061095184612c23565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106109a4576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad82612daf565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610c17578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610c6a929190613cda565b60405180910390a35050505050565b60008054905081610c8a9190613b6a565b90506000610c96612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610cfb57508060010160009054906101000a900460ff165b15610d4b577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610d42929190613d03565b60405180910390a15b5050565b6000610d59612c9d565b9050610efe8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610f82576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061105b612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061120581612cfb565b61120e81612daf565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156112ff5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff1611156114a9576114a8846114a38367ffffffffffffffff16612cd9565b612e77565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b6114f08282612ede565b5050565b600080549050816115059190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016115409190613713565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b5050505050565b600080549050816115869190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b81526004016115c19190613713565b600060405180830381600087803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b5050505050565b611601816000612ede565b50565b600080549050826116159190613b6a565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611652929190613d3b565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050505050565b6000611692612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061183c81612cfb565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611952576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061197b5750806040015167ffffffffffffffff1642115b156119b2576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119ba612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166119f3826000015167ffffffffffffffff16612cd9565b1115611a2b576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a3482612daf565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611caa856000015167ffffffffffffffff16612cd9565b604051611cb8929190613cda565b60405180910390a350505050565b6001600080549050611cd89190613d64565b81611ce39190613b6a565b6001611cef9190613c07565b90506000611cfb612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015611da457506000611d57612c9d565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15611e2a577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f782611dd3612c9d565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051611e21929190613da0565b60405180910390a15b5050565b6000611e38612c9d565b9050611fdd8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b6000611fe7612be7565b90506000831415801561200757506305f5e10067ffffffffffffffff1683105b1561203e576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561209a576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006120ea85612c23565b90508067ffffffffffffffff168267ffffffffffffffff1603612139576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561215e575060008267ffffffffffffffff16145b15612195576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106121c09190613c07565b846121cb9190613c43565b6121d59190613c80565b90508067ffffffffffffffff168267ffffffffffffffff161115612225576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426122649190613c07565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426122b09190613c07565b6122ba9190613c07565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516123d3929190613cda565b60405180910390a350505050505050565b60006123ee612c9d565b90506125938160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126115760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612657565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516126f99190613dc9565b60405180910390a2505050565b6000805b6000805490508110156127d1576000612721612c9d565b60060160008084815481106127395761273861372e565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050600081600201600001600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146127bd576127bc613b3b565b5b5080806127c990613de4565b91505061270a565b5090565b60008082141580156127f457506305f5e10067ffffffffffffffff1682105b1561282b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612833612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561288e576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612898612c9d565b9050600085856040516128ac9291906139e4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612923576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292f8260080161331d565b61293b82600801613333565b92506040518060a00160405280600063ffffffff16815260200161295e86612c23565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4888888604051612bd693929190613ac7565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c612c1a91906138a5565b90508091505090565b60006298968068010000000000000000612c3d919061382f565b821115612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7690613e78565b60405180910390fd5b62989680612c8c83613341565b612c969190613908565b9050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c612cd091906138a5565b90508091505090565b6000629896808267ffffffffffffffff16612cf4919061382f565b9050919050565b600081608001516000015163ffffffff1603612d43576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143612dca9190613ea8565b63ffffffff16612dda9190613c43565b9050808260800151602001818151612df29190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681612e259190613c43565b8260800151604001818151612e3a9190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b612e81338261339b565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612ed29190613ee0565b60405180910390a35050565b6000612ee8612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061309281612cfb565b61309b81612daf565b6000806130a785612c23565b90506000851480156130cb5750600083608001516040015167ffffffffffffffff16115b156130e057826080015160400151915061314c565b60008511801561310c57508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156131195780915061314b565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516131629190613d64565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613315866133108467ffffffffffffffff16612cd9565b612e77565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836133539190613efb565b14613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a90613f78565b60405180910390fd5b819050919050565b6133a3612c9d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613401929190613f98565b6020604051808303816000875af1158015613420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134449190613fed565b61347a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126134ad576134ac613488565b5b8235905067ffffffffffffffff8111156134ca576134c961348d565b5b6020830191508360018202830111156134e6576134e5613492565b5b9250929050565b6000819050919050565b613500816134ed565b811461350b57600080fd5b50565b60008135905061351d816134f7565b92915050565b60008060006040848603121561353c5761353b61347e565b5b600084013567ffffffffffffffff81111561355a57613559613483565b5b61356686828701613497565b935093505060206135798682870161350e565b9150509250925092565b600067ffffffffffffffff82169050919050565b6135a081613583565b81146135ab57600080fd5b50565b6000813590506135bd81613597565b92915050565b6000602082840312156135d9576135d861347e565b5b60006135e7848285016135ae565b91505092915050565b600080604083850312156136075761360661347e565b5b6000613615858286016135ae565b92505060206136268582860161350e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b600080604083850312156136a5576136a461347e565b5b60006136b3858286016135ae565b92505060206136c485828601613679565b9150509250929050565b60008115159050919050565b6136e3816136ce565b82525050565b60006020820190506136fe60008301846136da565b92915050565b61370d81613583565b82525050565b60006020820190506137286000830184613704565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d7060008201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b60006137ca60228361375d565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061383a826134ed565b9150613845836134ed565b9250828202613853816134ed565b9150828204841483151761386a57613869613800565b5b5092915050565b600061387c826134ed565b9150613887836134ed565b925082820190508082111561389f5761389e613800565b5b92915050565b60006138b0826134ed565b91506138bb836134ed565b92508282039050818111156138d3576138d2613800565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613913826134ed565b915061391e836134ed565b92508261392e5761392d6138d9565b5b828204905092915050565b7f6665652076616c75652065786365656465640000000000000000000000000000600082015250565b600061396f60128361375d565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b600081905092915050565b82818337600083830152505050565b60006139cb83856139a5565b93506139d88385846139b0565b82840190509392505050565b60006139f18284866139bf565b91508190509392505050565b7f4f70657261746f72206578697374730000000000000000000000000000000000600082015250565b6000613a33600f8361375d565b9150613a3e826139fd565b602082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000613a978385613a69565b9350613aa48385846139b0565b613aad83613a7a565b840190509392505050565b613ac1816134ed565b82525050565b60006040820190508181036000830152613ae2818587613a8b565b9050613af16020830184613ab8565b949350505050565b600081519050613b0881613597565b92915050565b600060208284031215613b2457613b2361347e565b5b6000613b3284828501613af9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613b7582613583565b9150613b8083613583565b925082613b9057613b8f6138d9565b5b828206905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000613bd160188361375d565b9150613bdc82613b9b565b602082019050919050565b60006020820190508181036000830152613c0081613bc4565b9050919050565b6000613c1282613583565b9150613c1d83613583565b9250828201905067ffffffffffffffff811115613c3d57613c3c613800565b5b92915050565b6000613c4e82613583565b9150613c5983613583565b9250828202613c6781613583565b9150808214613c7957613c78613800565b5b5092915050565b6000613c8b82613583565b9150613c9683613583565b925082613ca657613ca56138d9565b5b828204905092915050565b6000604082019050613cc66000830185613704565b613cd36020830184613ab8565b9392505050565b6000604082019050613cef6000830185613ab8565b613cfc6020830184613ab8565b9392505050565b6000604082019050613d186000830185613704565b613d2560208301846136da565b9392505050565b613d3581613650565b82525050565b6000604082019050613d506000830185613704565b613d5d6020830184613d2c565b9392505050565b6000613d6f82613583565b9150613d7a83613583565b9250828203905067ffffffffffffffff811115613d9a57613d99613800565b5b92915050565b6000604082019050613db56000830185613704565b613dc26020830184613704565b9392505050565b6000602082019050613dde6000830184613d2c565b92915050565b6000613def826134ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2157613e20613800565b5b600182019050919050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613e6260128361375d565b9150613e6d82613e2c565b602082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b600063ffffffff82169050919050565b6000613eb382613e98565b9150613ebe83613e98565b9250828203905063ffffffff811115613eda57613ed9613800565b5b92915050565b6000602082019050613ef56000830184613ab8565b92915050565b6000613f06826134ed565b9150613f11836134ed565b925082613f2157613f206138d9565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613f6260168361375d565b9150613f6d82613f2c565b602082019050919050565b60006020820190508181036000830152613f9181613f55565b9050919050565b6000604082019050613fad6000830185613d2c565b613fba6020830184613ab8565b9392505050565b613fca816136ce565b8114613fd557600080fd5b50565b600081519050613fe781613fc1565b92915050565b6000602082840312156140035761400261347e565b5b600061401184828501613fd8565b9150509291505056fea26469706673582212202a5e76c1b9eaea74b80ce9cc1c723f8922c563d2162e24cdd281e443a62c7e3464736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7484:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7484:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5797:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5386:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6479:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4389:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3079:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2587:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:998;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5797:676;5884:21;5908:17;:15;:17::i;:::-;5884:41;;5935:24;5962:1;:11;;:23;5974:10;5962:23;;;;;;;;;;;;;;;5935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:21;:8;:19;:21::i;:::-;6027:19;6049:12;:3;:10;:12::i;:::-;6027:34;;6091:8;:12;;;6075:28;;:12;:28;;;6071:64;;6112:23;;;;;;;;;;;;;;6071:64;6146:25;:8;:23;:25::i;:::-;6196:12;6181:8;:12;;:27;;;;;;;;;;;6244:8;6218:1;:11;;:23;6230:10;6218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:1;6267;:27;;:39;6295:10;6267:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6263:126;;6350:1;:27;;:39;6378:10;6350:39;;;;;;;;;;;;;;;;6343:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6263:126;6436:10;6404:62;;6424:10;6404:62;;;6448:12;6462:3;6404:62;;;;;;;:::i;:::-;;;;;;;;5874:599;;;5797:676;;:::o;5386:405::-;5468:21;5492:17;:15;:17::i;:::-;5468:41;;5519:36;:1;:11;;:23;5531:10;5519:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5631:1;5570;:27;;:39;5598:10;5570:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5566:90;;5641:15;;;;;;;;;;;;;;5566:90;5674:1;:27;;:39;5702:10;5674:39;;;;;;;;;;;;;;;;5667:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:10;5729:55;;5761:10;5729:55;;;;;;;;;;;;5458:333;5386:405;:::o;1782:799::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2235:8;:20;;;2231:132;;;2294:5;2271:8;:20;;:28;;;;;;;;;;;2320:1;:20;;:32;2341:10;2320:32;;;;;;;;;;;;;;;;2313:39;;;;;;;;;;;2231:132;2398:8;2372:1;:11;;:23;2384:10;2372:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:1;2421:14;:18;;;2417:116;;;2455:67;2486:10;2498:23;:14;:21;;;:23::i;:::-;2455:30;:67::i;:::-;2417:116;2563:10;2547:27;;;;;;;;;;;;1843:738;;;1782:799;:::o;6479:149::-;6576:45;6602:10;6614:6;6576:25;:45::i;:::-;6479:149;;:::o;6634:131::-;6718:40;6744:10;6756:1;6718:25;:40::i;:::-;6634:131;:::o;4389:991::-;4464:21;4488:17;:15;:17::i;:::-;4464:41;;4515:24;4542:1;:11;;:23;4554:10;4542:23;;;;;;;;;;;;;;;4515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:21;:8;:19;:21::i;:::-;4607:48;4658:1;:27;;:39;4686:10;4658:39;;;;;;;;;;;;;;;4607:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4750:1;4712:16;:34;;;:39;;;4708:67;;4760:15;;;;;;;;;;;;;;4708:67;4821:16;:34;;;4803:52;;:15;:52;:106;;;;4877:16;:32;;;4859:50;;:15;:50;4803:106;4786:194;;;4941:28;;;;;;;;;;;;;;4786:194;5026:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4994:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4990:97;;;5075:12;;;;;;;;;;;;;;4990:97;5098:25;:8;:23;:25::i;:::-;5148:16;:20;;;5133:8;:12;;:35;;;;;;;;;;;5204:8;5178:1;:11;;:23;5190:10;5178:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5230:1;:27;;:39;5258:10;5230:39;;;;;;;;;;;;;;;;5223:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:10;5285:88;;5305:10;5285:88;;;5329:12;5343:29;:16;:20;;;:27;;;:29::i;:::-;5285:88;;;;;;;:::i;:::-;;;;;;;;4454:926;;;4389:991;:::o;3079:1304::-;3167:21;3191:17;:15;:17::i;:::-;3167:41;;3218:36;:1;:11;;:23;3230:10;3218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3265:26;3294:25;:23;:25::i;:::-;3265:54;;3341:1;3334:3;:8;;:38;;;;;450:11;3346:26;;:3;:26;3334:38;3330:62;;;3381:11;;;;;;;;;;;;;;3330:62;3412:2;:17;;;;;;;;;;;;3406:23;;:3;:23;3402:48;;;3438:12;;;;;;;;;;;;;;3402:48;3461:18;3482:1;:11;;:23;3494:10;3482:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3461:48;;3519:16;3538:12;:3;:10;:12::i;:::-;3519:31;;3580:9;3565:24;;:11;:24;;;3561:188;;3612:25;;;;;;;;;;;;;;3561:188;3671:1;3658:9;:14;;;;:34;;;;;3691:1;3676:11;:16;;;3658:34;3654:95;;;3715:23;;;;;;;;;;;;;;3654:95;3847:20;510:6;3905:2;:25;;;;;;;;;;;;510:6;3886:44;;;;:::i;:::-;3871:11;:60;;;;:::i;:::-;3870:81;;;;:::i;:::-;3847:104;;3978:13;3966:25;;:9;:25;;;3962:63;;;4000:25;;;;;;;;;;;;;;3962:63;4078:221;;;;;;;;4116:9;4078:221;;;;;;4165:2;:27;;;;;;;;;;;;4146:15;4139:53;;;;:::i;:::-;4078:221;;;;;;4262:2;:27;;;;;;;;;;;;4232:2;:27;;;;;;;;;;;;4213:15;4206:53;;;;:::i;:::-;:83;;;;:::i;:::-;4078:221;;;;;4036:1;:27;;:39;4064:10;4036:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4346:10;4314:62;;4334:10;4314:62;;;4358:12;4372:3;4314:62;;;;;;;:::i;:::-;;;;;;;;3157:1226;;;;;3079:1304;;:::o;2587:486::-;2676:21;2700:17;:15;:17::i;:::-;2676:41;;2727:36;:1;:11;;:23;2739:10;2727:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2801:1;2778:25;;:11;:25;;;2774:172;;2857:5;2819:1;:11;;:23;2831:10;2819:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2774:172;;;2931:4;2893:1;:11;;:23;2905:10;2893:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2774:172;2991:11;2956:1;:20;;:32;2977:10;2956:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3042:10;3017:49;;;3054:11;3017:49;;;;;;:::i;:::-;;;;;;;;2666:407;2587:486;;:::o;778:998::-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;996:255:3:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;256:365:3:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7633:207:8:-;7726:43;7750:10;7762:6;7726:23;:43::i;:::-;7814:10;7784:49;;7802:10;7784:49;;;7826:6;7784:49;;;;;;:::i;:::-;;;;;;;;7633:207;;:::o;6796:831::-;6884:21;6908:17;:15;:17::i;:::-;6884:41;;6935:24;6962:1;:11;;:23;6974:10;6962:23;;;;;;;;;;;;;;;6935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6995:21;:8;:19;:21::i;:::-;7027:25;:8;:23;:25::i;:::-;7063:22;7095:19;7117:15;:6;:13;:15::i;:::-;7095:37;;7157:1;7147:6;:11;:44;;;;;7190:1;7162:8;:17;;;:25;;;:29;;;7147:44;7143:299;;;7225:8;:17;;;:25;;;7207:43;;7143:299;;;7280:1;7271:6;:10;:55;;;;;7314:12;7285:41;;:8;:17;;;:25;;;:41;;;;7271:55;7267:175;;;7360:12;7342:30;;7267:175;;;7410:21;;;;;;;;;;;;;;7267:175;7143:299;7481:15;7452:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7533:8;7507:1;:11;;:23;7519:10;7507:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:68;7583:10;7595:24;:15;:22;;;:24::i;:::-;7552:30;:68::i;:::-;6874:753;;;;6796:831;;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;945:123:10:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:11:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:77::-;747:7;776:5;765:16;;710:77;;;:::o;793:122::-;866:24;884:5;866:24;:::i;:::-;859:5;856:35;846:63;;905:1;902;895:12;846:63;793:122;:::o;921:139::-;967:5;1005:6;992:20;983:29;;1021:33;1048:5;1021:33;:::i;:::-;921:139;;;;:::o;1066:472::-;1133:6;1141;1190:2;1178:9;1169:7;1165:23;1161:32;1158:119;;;1196:79;;:::i;:::-;1158:119;1316:1;1341:52;1385:7;1376:6;1365:9;1361:22;1341:52;:::i;:::-;1331:62;;1287:116;1442:2;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1413:118;1066:472;;;;;:::o;1544:327::-;1602:6;1651:2;1639:9;1630:7;1626:23;1622:32;1619:119;;;1657:79;;:::i;:::-;1619:119;1777:1;1802:52;1846:7;1837:6;1826:9;1822:22;1802:52;:::i;:::-;1792:62;;1748:116;1544:327;;;;:::o;1877:126::-;1914:7;1954:42;1947:5;1943:54;1932:65;;1877:126;;;:::o;2009:96::-;2046:7;2075:24;2093:5;2075:24;:::i;:::-;2064:35;;2009:96;;;:::o;2111:122::-;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:472::-;2451:6;2459;2508:2;2496:9;2487:7;2483:23;2479:32;2476:119;;;2514:79;;:::i;:::-;2476:119;2634:1;2659:52;2703:7;2694:6;2683:9;2679:22;2659:52;:::i;:::-;2649:62;;2605:116;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2384:472;;;;;:::o;2862:117::-;2971:1;2968;2961:12;2985:117;3094:1;3091;3084:12;3108:117;3217:1;3214;3207:12;3244:552;3301:8;3311:6;3361:3;3354:4;3346:6;3342:17;3338:27;3328:122;;3369:79;;:::i;:::-;3328:122;3482:6;3469:20;3459:30;;3512:18;3504:6;3501:30;3498:117;;;3534:79;;:::i;:::-;3498:117;3648:4;3640:6;3636:17;3624:29;;3702:3;3694:4;3686:6;3682:17;3672:8;3668:32;3665:41;3662:128;;;3709:79;;:::i;:::-;3662:128;3244:552;;;;;:::o;3802:672::-;3881:6;3889;3897;3946:2;3934:9;3925:7;3921:23;3917:32;3914:119;;;3952:79;;:::i;:::-;3914:119;4100:1;4089:9;4085:17;4072:31;4130:18;4122:6;4119:30;4116:117;;;4152:79;;:::i;:::-;4116:117;4265:64;4321:7;4312:6;4301:9;4297:22;4265:64;:::i;:::-;4247:82;;;;4043:296;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;3802:672;;;;;:::o;4480:115::-;4565:23;4582:5;4565:23;:::i;:::-;4560:3;4553:36;4480:115;;:::o;4601:218::-;4692:4;4730:2;4719:9;4715:18;4707:26;;4743:69;4809:1;4798:9;4794:17;4785:6;4743:69;:::i;:::-;4601:218;;;;:::o;4825:118::-;4912:24;4930:5;4912:24;:::i;:::-;4907:3;4900:37;4825:118;;:::o;4949:332::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;5202:72;5270:2;5259:9;5255:18;5246:6;5202:72;:::i;:::-;4949:332;;;;;:::o;5287:180::-;5335:77;5332:1;5325:88;5432:4;5429:1;5422:15;5456:4;5453:1;5446:15;5473:205;5512:3;5531:19;5548:1;5531:19;:::i;:::-;5526:24;;5564:19;5581:1;5564:19;:::i;:::-;5559:24;;5606:1;5603;5599:9;5592:16;;5629:18;5624:3;5621:27;5618:53;;;5651:18;;:::i;:::-;5618:53;5473:205;;;;:::o;5684:275::-;5723:7;5746:19;5763:1;5746:19;:::i;:::-;5741:24;;5779:19;5796:1;5779:19;:::i;:::-;5774:24;;5833:1;5830;5826:9;5855:29;5872:11;5855:29;:::i;:::-;5844:40;;5916:11;5907:7;5904:24;5894:58;;5932:18;;:::i;:::-;5894:58;5731:228;5684:275;;;;:::o;5965:180::-;6013:77;6010:1;6003:88;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6151:182;6190:1;6207:19;6224:1;6207:19;:::i;:::-;6202:24;;6240:19;6257:1;6240:19;:::i;:::-;6235:24;;6278:1;6268:35;;6283:18;;:::i;:::-;6268:35;6325:1;6322;6318:9;6313:14;;6151:182;;;;:::o;6339:118::-;6426:24;6444:5;6426:24;:::i;:::-;6421:3;6414:37;6339:118;;:::o;6463:222::-;6556:4;6594:2;6583:9;6579:18;6571:26;;6607:71;6675:1;6664:9;6660:17;6651:6;6607:71;:::i;:::-;6463:222;;;;:::o;6691:147::-;6792:11;6829:3;6814:18;;6691:147;;;;:::o;6844:146::-;6941:6;6936:3;6931;6918:30;6982:1;6973:6;6968:3;6964:16;6957:27;6844:146;;;:::o;7018:327::-;7132:3;7153:88;7234:6;7229:3;7153:88;:::i;:::-;7146:95;;7251:56;7300:6;7295:3;7288:5;7251:56;:::i;:::-;7332:6;7327:3;7323:16;7316:23;;7018:327;;;;;:::o;7351:291::-;7491:3;7513:103;7612:3;7603:6;7595;7513:103;:::i;:::-;7506:110;;7633:3;7626:10;;7351:291;;;;;:::o;7648:168::-;7731:11;7765:6;7760:3;7753:19;7805:4;7800:3;7796:14;7781:29;;7648:168;;;;:::o;7822:102::-;7863:6;7914:2;7910:7;7905:2;7898:5;7894:14;7890:28;7880:38;;7822:102;;;:::o;7952:314::-;8048:3;8069:70;8132:6;8127:3;8069:70;:::i;:::-;8062:77;;8149:56;8198:6;8193:3;8186:5;8149:56;:::i;:::-;8230:29;8252:6;8230:29;:::i;:::-;8225:3;8221:39;8214:46;;7952:314;;;;;:::o;8272:439::-;8421:4;8459:2;8448:9;8444:18;8436:26;;8508:9;8502:4;8498:20;8494:1;8483:9;8479:17;8472:47;8536:86;8617:4;8608:6;8600;8536:86;:::i;:::-;8528:94;;8632:72;8700:2;8689:9;8685:18;8676:6;8632:72;:::i;:::-;8272:439;;;;;;:::o;8717:194::-;8757:4;8777:20;8795:1;8777:20;:::i;:::-;8772:25;;8811:20;8829:1;8811:20;:::i;:::-;8806:25;;8855:1;8852;8848:9;8840:17;;8879:1;8873:4;8870:11;8867:37;;;8884:18;;:::i;:::-;8867:37;8717:194;;;;:::o;8917:410::-;8957:7;8980:20;8998:1;8980:20;:::i;:::-;8975:25;;9014:20;9032:1;9014:20;:::i;:::-;9009:25;;9069:1;9066;9062:9;9091:30;9109:11;9091:30;:::i;:::-;9080:41;;9270:1;9261:7;9257:15;9254:1;9251:22;9231:1;9224:9;9204:83;9181:139;;9300:18;;:::i;:::-;9181:139;8965:362;8917:410;;;;:::o;9333:169::-;9417:11;9451:6;9446:3;9439:19;9491:4;9486:3;9482:14;9467:29;;9333:169;;;;:::o;9508:168::-;9648:20;9644:1;9636:6;9632:14;9625:44;9508:168;:::o;9682:366::-;9824:3;9845:67;9909:2;9904:3;9845:67;:::i;:::-;9838:74;;9921:93;10010:3;9921:93;:::i;:::-;10039:2;10034:3;10030:12;10023:19;;9682:366;;;:::o;10054:419::-;10220:4;10258:2;10247:9;10243:18;10235:26;;10307:9;10301:4;10297:20;10293:1;10282:9;10278:17;10271:47;10335:131;10461:4;10335:131;:::i;:::-;10327:139;;10054:419;;;:::o;10479:185::-;10519:1;10536:20;10554:1;10536:20;:::i;:::-;10531:25;;10570:20;10588:1;10570:20;:::i;:::-;10565:25;;10609:1;10599:35;;10614:18;;:::i;:::-;10599:35;10656:1;10653;10649:9;10644:14;;10479:185;;;;:::o;10670:93::-;10706:7;10746:10;10739:5;10735:22;10724:33;;10670:93;;;:::o;10769:200::-;10808:4;10828:19;10845:1;10828:19;:::i;:::-;10823:24;;10861:19;10878:1;10861:19;:::i;:::-;10856:24;;10904:1;10901;10897:9;10889:17;;10928:10;10922:4;10919:20;10916:46;;;10942:18;;:::i;:::-;10916:46;10769:200;;;;:::o;10975:222::-;11068:4;11106:2;11095:9;11091:18;11083:26;;11119:71;11187:1;11176:9;11172:17;11163:6;11119:71;:::i;:::-;10975:222;;;;:::o;11203:208::-;11242:4;11262:19;11279:1;11262:19;:::i;:::-;11257:24;;11295:19;11312:1;11295:19;:::i;:::-;11290:24;;11338:1;11335;11331:9;11323:17;;11362:18;11356:4;11353:28;11350:54;;;11384:18;;:::i;:::-;11350:54;11203:208;;;;:::o;11417:176::-;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11585:1;11582;11578:9;11573:14;;11417:176;;;;:::o;11599:172::-;11739:24;11735:1;11727:6;11723:14;11716:48;11599:172;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:332::-;12695:4;12733:2;12722:9;12718:18;12710:26;;12746:71;12814:1;12803:9;12799:17;12790:6;12746:71;:::i;:::-;12827:72;12895:2;12884:9;12880:18;12871:6;12827:72;:::i;:::-;12574:332;;;;;:::o;12912:90::-;12946:7;12989:5;12982:13;12975:21;12964:32;;12912:90;;;:::o;13008:116::-;13078:21;13093:5;13078:21;:::i;:::-;13071:5;13068:32;13058:60;;13114:1;13111;13104:12;13058:60;13008:116;:::o;13130:137::-;13184:5;13215:6;13209:13;13200:22;;13231:30;13255:5;13231:30;:::i;:::-;13130:137;;;;:::o;13273:345::-;13340:6;13389:2;13377:9;13368:7;13364:23;13360:32;13357:119;;;13395:79;;:::i;:::-;13357:119;13515:1;13540:61;13593:7;13584:6;13573:9;13569:22;13540:61;:::i;:::-;13530:71;;13486:125;13273:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b506131e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a81565b6101a8565b005b6100ce60048036038101906100c99190612ac1565b61068f565b005b6100ea60048036038101906100e59190612ac1565b610991565b005b61010660048036038101906101019190612a81565b610e26565b005b610122600480360381019061011d9190612ac1565b610e34565b005b61013e60048036038101906101399190612ac1565b610e42565b005b61015a60048036038101906101559190612a81565b611480565b005b61017660048036038101906101719190612b4c565b611a36565b005b610192600480360381019061018d9190612bf1565b611d58565b60405161019f9190612c60565b60405180910390f35b60006101b261216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c816121a6565b60006103678461225a565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c3826122d4565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062d578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610680929190612c8a565b60405180910390a35050505050565b600061069961216a565b905061083e8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036108c2576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061099b61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610b45816121a6565b610b4e816122d4565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816060015115610c3f5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115610de957610de884610de38367ffffffffffffffff1661239c565b6123be565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610e308282612425565b5050565b610e3f816000612425565b50565b6000610e4c61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610ff6816121a6565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361110c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806111355750806040015167ffffffffffffffff1642115b1561116c576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166111ad826000015167ffffffffffffffff1661239c565b11156111e5576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ee826122d4565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611464856000015167ffffffffffffffff1661239c565b604051611472929190612c8a565b60405180910390a350505050565b600061148a61216a565b905061162f8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b6000611639612864565b90506000831415801561165957506305f5e10067ffffffffffffffff1683105b15611690576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156116ec576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061173c8561225a565b90508067ffffffffffffffff168267ffffffffffffffff160361178b576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff16141580156117b0575060008267ffffffffffffffff16145b156117e7576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106118129190612ce2565b8461181d9190612d1e565b6118279190612d8a565b90508067ffffffffffffffff168267ffffffffffffffff161115611877576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118b69190612ce2565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426119029190612ce2565b61190c9190612ce2565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611a25929190612c8a565b60405180910390a350505050505050565b6000611a4061216a565b9050611be58160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c635760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611ca9565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611d4b9190612dca565b60405180910390a2505050565b6000808214158015611d7757506305f5e10067ffffffffffffffff1682105b15611dae576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611db6612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611e11576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e1b61216a565b905060008585604051611e2f929190612e24565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611ea6576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb2826008016128a0565b611ebe826008016128b6565b92506040518060a00160405280600063ffffffff168152602001611ee18661225a565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161215993929190612e8c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61219d9190612ebe565b90508091505090565b600081608001516000015163ffffffff16036121ee576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612257576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122749190612ef2565b8211156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90612f91565b60405180910390fd5b629896806122c3836128c4565b6122cd9190612fb1565b9050919050565b60008160200151826080015160000151436122ef9190612ff2565b63ffffffff166122ff9190612d1e565b90508082608001516020018181516123179190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff168161234a9190612d1e565b826080015160400181815161235f9190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123b79190612ef2565b9050919050565b6123c8338261291e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612419919061302a565b60405180910390a35050565b600061242f61216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506125d9816121a6565b6125e2816122d4565b6000806125ee8561225a565b90506000851480156126125750600083608001516040015167ffffffffffffffff16115b15612627578260800151604001519150612693565b60008511801561265357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561266057809150612692565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126a99190613045565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505061285c866128578467ffffffffffffffff1661239c565b6123be565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128979190612ebe565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128d69190613081565b14612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d906130fe565b60405180910390fd5b819050919050565b61292661216a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161298492919061311e565b6020604051808303816000875af11580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c7919061317f565b6129fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b612a2881612a0b565b8114612a3357600080fd5b50565b600081359050612a4581612a1f565b92915050565b6000819050919050565b612a5e81612a4b565b8114612a6957600080fd5b50565b600081359050612a7b81612a55565b92915050565b60008060408385031215612a9857612a97612a01565b5b6000612aa685828601612a36565b9250506020612ab785828601612a6c565b9150509250929050565b600060208284031215612ad757612ad6612a01565b5b6000612ae584828501612a36565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1982612aee565b9050919050565b612b2981612b0e565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060408385031215612b6357612b62612a01565b5b6000612b7185828601612a36565b9250506020612b8285828601612b37565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612bb157612bb0612b8c565b5b8235905067ffffffffffffffff811115612bce57612bcd612b91565b5b602083019150836001820283011115612bea57612be9612b96565b5b9250929050565b600080600060408486031215612c0a57612c09612a01565b5b600084013567ffffffffffffffff811115612c2857612c27612a06565b5b612c3486828701612b9b565b93509350506020612c4786828701612a6c565b9150509250925092565b612c5a81612a0b565b82525050565b6000602082019050612c756000830184612c51565b92915050565b612c8481612a4b565b82525050565b6000604082019050612c9f6000830185612c7b565b612cac6020830184612c7b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ced82612a0b565b9150612cf883612a0b565b9250828201905067ffffffffffffffff811115612d1857612d17612cb3565b5b92915050565b6000612d2982612a0b565b9150612d3483612a0b565b9250828202612d4281612a0b565b9150808214612d5457612d53612cb3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d9582612a0b565b9150612da083612a0b565b925082612db057612daf612d5b565b5b828204905092915050565b612dc481612b0e565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600081905092915050565b82818337600083830152505050565b6000612e0b8385612de5565b9350612e18838584612df0565b82840190509392505050565b6000612e31828486612dff565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612e6b8385612e3d565b9350612e78838584612df0565b612e8183612e4e565b840190509392505050565b60006040820190508181036000830152612ea7818587612e5f565b9050612eb66020830184612c7b565b949350505050565b6000612ec982612a4b565b9150612ed483612a4b565b9250828203905081811115612eec57612eeb612cb3565b5b92915050565b6000612efd82612a4b565b9150612f0883612a4b565b9250828202612f1681612a4b565b91508282048414831517612f2d57612f2c612cb3565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f7b601283612f34565b9150612f8682612f45565b602082019050919050565b60006020820190508181036000830152612faa81612f6e565b9050919050565b6000612fbc82612a4b565b9150612fc783612a4b565b925082612fd757612fd6612d5b565b5b828204905092915050565b600063ffffffff82169050919050565b6000612ffd82612fe2565b915061300883612fe2565b9250828203905063ffffffff81111561302457613023612cb3565b5b92915050565b600060208201905061303f6000830184612c7b565b92915050565b600061305082612a0b565b915061305b83612a0b565b9250828203905067ffffffffffffffff81111561307b5761307a612cb3565b5b92915050565b600061308c82612a4b565b915061309783612a4b565b9250826130a7576130a6612d5b565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006130e8601683612f34565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b60006040820190506131336000830185612dbb565b6131406020830184612c7b565b9392505050565b60008115159050919050565b61315c81613147565b811461316757600080fd5b50565b60008151905061317981613153565b92915050565b60006020828403121561319557613194612a01565b5b60006131a38482850161316a565b9150509291505056fea2646970667358221220f390cfaeebed385fac9d2d3694c05999ab0422a41c4ef65b6d5fd0a76636c77164736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a81565b6101a8565b005b6100ce60048036038101906100c99190612ac1565b61068f565b005b6100ea60048036038101906100e59190612ac1565b610991565b005b61010660048036038101906101019190612a81565b610e26565b005b610122600480360381019061011d9190612ac1565b610e34565b005b61013e60048036038101906101399190612ac1565b610e42565b005b61015a60048036038101906101559190612a81565b611480565b005b61017660048036038101906101719190612b4c565b611a36565b005b610192600480360381019061018d9190612bf1565b611d58565b60405161019f9190612c60565b60405180910390f35b60006101b261216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c816121a6565b60006103678461225a565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c3826122d4565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062d578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610680929190612c8a565b60405180910390a35050505050565b600061069961216a565b905061083e8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036108c2576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061099b61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610b45816121a6565b610b4e816122d4565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816060015115610c3f5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115610de957610de884610de38367ffffffffffffffff1661239c565b6123be565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610e308282612425565b5050565b610e3f816000612425565b50565b6000610e4c61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610ff6816121a6565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361110c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806111355750806040015167ffffffffffffffff1642115b1561116c576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166111ad826000015167ffffffffffffffff1661239c565b11156111e5576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ee826122d4565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611464856000015167ffffffffffffffff1661239c565b604051611472929190612c8a565b60405180910390a350505050565b600061148a61216a565b905061162f8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b6000611639612864565b90506000831415801561165957506305f5e10067ffffffffffffffff1683105b15611690576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156116ec576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061173c8561225a565b90508067ffffffffffffffff168267ffffffffffffffff160361178b576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff16141580156117b0575060008267ffffffffffffffff16145b156117e7576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106118129190612ce2565b8461181d9190612d1e565b6118279190612d8a565b90508067ffffffffffffffff168267ffffffffffffffff161115611877576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118b69190612ce2565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426119029190612ce2565b61190c9190612ce2565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611a25929190612c8a565b60405180910390a350505050505050565b6000611a4061216a565b9050611be58160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c635760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611ca9565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611d4b9190612dca565b60405180910390a2505050565b6000808214158015611d7757506305f5e10067ffffffffffffffff1682105b15611dae576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611db6612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611e11576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e1b61216a565b905060008585604051611e2f929190612e24565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611ea6576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb2826008016128a0565b611ebe826008016128b6565b92506040518060a00160405280600063ffffffff168152602001611ee18661225a565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161215993929190612e8c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61219d9190612ebe565b90508091505090565b600081608001516000015163ffffffff16036121ee576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612257576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122749190612ef2565b8211156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90612f91565b60405180910390fd5b629896806122c3836128c4565b6122cd9190612fb1565b9050919050565b60008160200151826080015160000151436122ef9190612ff2565b63ffffffff166122ff9190612d1e565b90508082608001516020018181516123179190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff168161234a9190612d1e565b826080015160400181815161235f9190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123b79190612ef2565b9050919050565b6123c8338261291e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612419919061302a565b60405180910390a35050565b600061242f61216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506125d9816121a6565b6125e2816122d4565b6000806125ee8561225a565b90506000851480156126125750600083608001516040015167ffffffffffffffff16115b15612627578260800151604001519150612693565b60008511801561265357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561266057809150612692565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126a99190613045565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505061285c866128578467ffffffffffffffff1661239c565b6123be565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128979190612ebe565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128d69190613081565b14612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d906130fe565b60405180910390fd5b819050919050565b61292661216a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161298492919061311e565b6020604051808303816000875af11580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c7919061317f565b6129fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b612a2881612a0b565b8114612a3357600080fd5b50565b600081359050612a4581612a1f565b92915050565b6000819050919050565b612a5e81612a4b565b8114612a6957600080fd5b50565b600081359050612a7b81612a55565b92915050565b60008060408385031215612a9857612a97612a01565b5b6000612aa685828601612a36565b9250506020612ab785828601612a6c565b9150509250929050565b600060208284031215612ad757612ad6612a01565b5b6000612ae584828501612a36565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1982612aee565b9050919050565b612b2981612b0e565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060408385031215612b6357612b62612a01565b5b6000612b7185828601612a36565b9250506020612b8285828601612b37565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612bb157612bb0612b8c565b5b8235905067ffffffffffffffff811115612bce57612bcd612b91565b5b602083019150836001820283011115612bea57612be9612b96565b5b9250929050565b600080600060408486031215612c0a57612c09612a01565b5b600084013567ffffffffffffffff811115612c2857612c27612a06565b5b612c3486828701612b9b565b93509350506020612c4786828701612a6c565b9150509250925092565b612c5a81612a0b565b82525050565b6000602082019050612c756000830184612c51565b92915050565b612c8481612a4b565b82525050565b6000604082019050612c9f6000830185612c7b565b612cac6020830184612c7b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ced82612a0b565b9150612cf883612a0b565b9250828201905067ffffffffffffffff811115612d1857612d17612cb3565b5b92915050565b6000612d2982612a0b565b9150612d3483612a0b565b9250828202612d4281612a0b565b9150808214612d5457612d53612cb3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d9582612a0b565b9150612da083612a0b565b925082612db057612daf612d5b565b5b828204905092915050565b612dc481612b0e565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600081905092915050565b82818337600083830152505050565b6000612e0b8385612de5565b9350612e18838584612df0565b82840190509392505050565b6000612e31828486612dff565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612e6b8385612e3d565b9350612e78838584612df0565b612e8183612e4e565b840190509392505050565b60006040820190508181036000830152612ea7818587612e5f565b9050612eb66020830184612c7b565b949350505050565b6000612ec982612a4b565b9150612ed483612a4b565b9250828203905081811115612eec57612eeb612cb3565b5b92915050565b6000612efd82612a4b565b9150612f0883612a4b565b9250828202612f1681612a4b565b91508282048414831517612f2d57612f2c612cb3565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f7b601283612f34565b9150612f8682612f45565b602082019050919050565b60006020820190508181036000830152612faa81612f6e565b9050919050565b6000612fbc82612a4b565b9150612fc783612a4b565b925082612fd757612fd6612d5b565b5b828204905092915050565b600063ffffffff82169050919050565b6000612ffd82612fe2565b915061300883612fe2565b9250828203905063ffffffff81111561302457613023612cb3565b5b92915050565b600060208201905061303f6000830184612c7b565b92915050565b600061305082612a0b565b915061305b83612a0b565b9250828203905067ffffffffffffffff81111561307b5761307a612cb3565b5b92915050565b600061308c82612a4b565b915061309783612a4b565b9250826130a7576130a6612d5b565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006130e8601683612f34565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b60006040820190506131336000830185612dbb565b6131406020830184612c7b565b9392505050565b60008115159050919050565b61315c81613147565b811461316757600080fd5b50565b60008151905061317981613153565b92915050565b60006020828403121561319557613194612a01565b5b60006131a38482850161316a565b9150509291505056fea2646970667358221220f390cfaeebed385fac9d2d3694c05999ab0422a41c4ef65b6d5fd0a76636c77164736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file From 547f4a7d3fabf930e995e92de6669127a71ebb47 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 5 Feb 2024 06:23:44 +0100 Subject: [PATCH 11/19] fix: added more functions for fuzz testing --- contracts/SSVNetwork.sol | 2 +- contracts/interfaces/ISSVOperators.sol | 2 +- contracts/modules/Clusters.sol | 100 ++++++++++++++---- contracts/modules/DAO.sol | 2 +- contracts/modules/Operators.sol | 59 ++++++++--- contracts/modules/SSVDAO.sol | 2 - contracts/modules/SSVOperators.sol | 4 +- contracts/test/SSVNetworkUpgrade.sol | 6 +- contracts/test/modules/SSVOperatorsUpdate.sol | 4 +- crytic-export/combined_solc.json | 2 +- echidna.yaml | 3 +- 11 files changed, 136 insertions(+), 50 deletions(-) diff --git a/contracts/SSVNetwork.sol b/contracts/SSVNetwork.sol index e445fee6..62179ad8 100644 --- a/contracts/SSVNetwork.sol +++ b/contracts/SSVNetwork.sol @@ -118,7 +118,7 @@ contract SSVNetwork is /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { if (!RegisterAuth.load().authorization[msg.sender].registerOperator) revert NotAuthorized(); _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); diff --git a/contracts/interfaces/ISSVOperators.sol b/contracts/interfaces/ISSVOperators.sol index c77c2329..aa82eb8a 100644 --- a/contracts/interfaces/ISSVOperators.sol +++ b/contracts/interfaces/ISSVOperators.sol @@ -7,7 +7,7 @@ interface ISSVOperators is ISSVNetworkCore { /// @notice Registers a new operator /// @param publicKey The public key of the operator /// @param fee The operator's fee (SSV) - function registerOperator(bytes calldata publicKey, uint256 fee) external returns (uint64); + function registerOperator(bytes calldata publicKey, uint64 fee) external returns (uint64); /// @notice Removes an existing operator /// @param operatorId The ID of the operator to be removed diff --git a/contracts/modules/Clusters.sol b/contracts/modules/Clusters.sol index d46d472d..4e47590c 100644 --- a/contracts/modules/Clusters.sol +++ b/contracts/modules/Clusters.sol @@ -2,38 +2,98 @@ pragma solidity 0.8.18; import "./SSVClusters.sol"; +import "../libraries/ClusterLib.sol"; contract Clusters is SSVClusters { + using ClusterLib for Cluster; + constructor() {} bytes[] publicKeys; bytes32[] hashedClusters; + uint64[] public operatorIds; uint64 private constant MIN_OPERATORS_LENGTH = 4; uint64 private constant MAX_OPERATORS_LENGTH = 13; uint64 private constant MODULO_OPERATORS_LENGTH = 3; uint64 private constant PUBLIC_KEY_LENGTH = 48; + uint256 private sault = 0; + + function _generatePublicKey() internal returns (bytes memory) { + bytes memory randomBytes = new bytes(48); + for (uint i = 0; i < 48; i++) { + randomBytes[i] = bytes1( + uint8(uint(keccak256(abi.encodePacked(sault, block.timestamp, msg.sender, i))) % 256) + ); + } + sault++; + return randomBytes; + } + + function _generateOperatorIds() internal returns (uint64[] memory operatorIds) { + uint256 baseLength = (uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, sault))) % + MIN_OPERATORS_LENGTH); + uint256 length = 4 + baseLength * 3; // This will produce lengths 4, 7, 10, or 13 + sault++; + + operatorIds = new uint64[](length); + for (uint256 i = 0; i < length; i++) { + uint64 randomId; + bool unique; + do { + sault++; // Ensure a different seed for the random number + randomId = _generateRandomId(); + unique = !_isDuplicate(randomId); + } while (!unique); + + // Insert the unique randomId in a sorted position + uint256 j = i; + while (j > 0 && operatorIds[j - 1] > randomId) { + if (j < operatorIds.length) { + operatorIds[j] = operatorIds[j - 1]; // Shift larger IDs to the right + } + j--; + } + operatorIds[j] = randomId; // Insert the new ID in its correct sorted position + } + return operatorIds; + } + + function _generateRandomId() internal returns (uint64) { + return uint64(uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, sault))) % 2 ** 64); + } + + function _isDuplicate(uint64 id) internal view returns (bool) { + for (uint256 i = 0; i < operatorIds.length; i++) { + if (operatorIds[i] == id) { + return true; + } + } + return false; + } + + function helper_registerValidator(bytes calldata sharesData, uint256 amount, Cluster memory cluster) public { + StorageData storage s = SSVStorage.load(); + + bytes memory _publicKey = _generatePublicKey(); + uint64[] memory _operatorIds = _generateOperatorIds(); + + bytes32 _hashedCluster = keccak256(abi.encodePacked(msg.sender, _operatorIds)); + + bytes32 clusterData = s.clusters[_hashedCluster]; + if (clusterData == bytes32(0)) { + cluster.validatorCount = 0; + cluster.networkFeeIndex = 0; + cluster.index = 0; + cluster.balance = 0; + cluster.active = true; + } else { + s.clusters[_hashedCluster] = cluster.hashClusterData(); + } - function helper_registerValidator( - bytes calldata publicKey, - uint64[] memory operatorIds, - bytes calldata sharesData, - uint256 amount, - Cluster memory cluster - ) public { - require( - operatorIds.length < MIN_OPERATORS_LENGTH || - operatorIds.length > MAX_OPERATORS_LENGTH || - operatorIds.length % MODULO_OPERATORS_LENGTH != 1, - "Invalid OperatorIds Length" - ); - require(publicKey.length == PUBLIC_KEY_LENGTH, "Invalid PublicKey Length"); - - bytes32 hashedCluster = keccak256(abi.encodePacked(msg.sender, operatorIds)); - - try this.registerValidator(publicKey, operatorIds, sharesData, amount, cluster) { - publicKeys.push(publicKey); - hashedClusters.push(hashedCluster); + try this.registerValidator(_publicKey, _operatorIds, sharesData, amount, cluster) { + publicKeys.push(_publicKey); + hashedClusters.push(_hashedCluster); } catch { assert(false); } diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index 71db2ecb..a40480d4 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -13,7 +13,7 @@ contract DAO is SSVDAO { this.updateNetworkFee(fee); } - function check_invariant_networkfee() public returns (bool) { + function check_invariant_networkfee() public { StorageProtocol storage sp = SSVStorageProtocol.load(); assert(sp.networkFee > 0); } diff --git a/contracts/modules/Operators.sol b/contracts/modules/Operators.sol index 8297dc5a..03b3e182 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/modules/Operators.sol @@ -2,21 +2,24 @@ pragma solidity 0.8.18; import "./SSVOperators.sol"; +import "../libraries/ProtocolLib.sol"; contract Operators is SSVOperators { using Types64 for uint64; using Types256 for uint256; + using ProtocolLib for StorageProtocol; uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; uint64 private constant PRECISION_FACTOR = 10_000; - uint64[] opIds; + uint256 private sault; + uint64 private minNetworkFee; - event Declared(uint64 maxAllowedFee, uint64 operatorFee); event AssertionFailed(uint64 operatorId, bool isWhitelisted); event AssertionFailed(uint64 operatorId, uint64 approvalBeginTime); constructor() { + minNetworkFee = MINIMAL_OPERATOR_FEE; StorageProtocol storage sp = SSVStorageProtocol.load(); sp.minimumBlocksBeforeLiquidation = 214800; sp.minimumLiquidationCollateral = uint256(1000000000000000000).shrink(); @@ -24,20 +27,36 @@ contract Operators is SSVOperators { sp.declareOperatorFeePeriod = 604800; sp.executeOperatorFeePeriod = 604800; sp.operatorMaxFeeIncrease = 1000; - } + sp.operatorMaxFee = minNetworkFee * 2; - function helper_createOperator(bytes calldata publicKey, uint256 fee) public { - require(publicKey.length != 0 && publicKey[0] != 0, "invalid publicKey: cannot be empty"); + sp.updateNetworkFee(0); + } - uint256 maxValue = 2 ** 64 * DEDUCTED_DIGITS; + function _generatePublicKey() internal returns (bytes memory) { + bytes memory randomBytes = new bytes(48); + for (uint i = 0; i < 48; i++) { + randomBytes[i] = bytes1( + uint8(uint(keccak256(abi.encodePacked(sault, block.timestamp, msg.sender, i))) % 256) + ); + } + sault++; + return randomBytes; + } - uint256 minN = (MINIMAL_OPERATOR_FEE + DEDUCTED_DIGITS - 1) / DEDUCTED_DIGITS; - uint256 maxN = SSVStorageProtocol.load().operatorMaxFee; + function _generateFee(uint64 min, uint64 max) public returns (uint64) { + require(max > min, "Max must be greater than min"); + uint256 randomHash = uint256(keccak256(abi.encodePacked(sault, block.timestamp))); + sault++; + uint64 reducedHash = uint64(randomHash); + return (reducedHash % (max - min + 1)) + min; + } - require(fee > minN && fee < maxN, "fee value exceeded"); - fee = fee * DEDUCTED_DIGITS; + function helper_createOperator() public { + uint64 minN = minNetworkFee; + uint64 maxN = SSVStorageProtocol.load().operatorMaxFee; - require(SSVStorage.load().operatorsPKs[keccak256(publicKey)] == 0, "Operator exists"); + bytes memory publicKey = _generatePublicKey(); + uint64 fee = _generateFee(minN, maxN); try this.registerOperator(publicKey, fee) returns (uint64 operatorId) { opIds.push(operatorId); @@ -92,11 +111,9 @@ contract Operators is SSVOperators { function check_removedOperatorNoFeeDeclared(uint64 operatorId) public { operatorId = 1 + (operatorId % (uint64(opIds.length) - 1)); - Operator storage operator = SSVStorage.load().operators[operatorId]; if ( - //(operator.owner != address(0)) && (operator.snapshot.block == 0) && (SSVStorage.load().operatorFeeChangeRequests[operatorId].approvalBeginTime != 0) ) { @@ -104,10 +121,20 @@ contract Operators is SSVOperators { } } - function check_removedOperatorBalances() public returns (bool) { + function check_removedOperatorBalances() public { + for (uint256 i; i < opIds.length; i++) { + Operator memory operator = SSVStorage.load().operators[opIds[i]]; + assert(operator.validatorCount > 0 || operator.snapshot.balance == 0); + } + } + + function check_operatorEarningsWithBalance() public { + StorageProtocol memory sp = SSVStorageProtocol.load(); + uint64 earnings; for (uint256 i; i < opIds.length; i++) { - Operator storage operator = SSVStorage.load().operators[opIds[i]]; - if (operator.validatorCount == 0) assert(operator.snapshot.balance == 0); + Operator memory operator = SSVStorage.load().operators[opIds[i]]; + earnings += operator.snapshot.balance; } + assert(sp.daoBalance == earnings); } } diff --git a/contracts/modules/SSVDAO.sol b/contracts/modules/SSVDAO.sol index 518012fb..cec7a6cf 100644 --- a/contracts/modules/SSVDAO.sol +++ b/contracts/modules/SSVDAO.sol @@ -15,8 +15,6 @@ contract SSVDAO is ISSVDAO { uint64 private constant MINIMAL_LIQUIDATION_THRESHOLD = 100_800; function updateNetworkFee(uint256 fee) external override { - if (fee == 0) revert FeeTooLow(); - StorageProtocol storage sp = SSVStorageProtocol.load(); uint64 previousFee = sp.networkFee; diff --git a/contracts/modules/SSVOperators.sol b/contracts/modules/SSVOperators.sol index 3b0bcf74..2406ca54 100644 --- a/contracts/modules/SSVOperators.sol +++ b/contracts/modules/SSVOperators.sol @@ -23,7 +23,7 @@ contract SSVOperators is ISSVOperators { /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) { revert ISSVNetworkCore.FeeTooLow(); } @@ -42,7 +42,7 @@ contract SSVOperators is ISSVOperators { owner: msg.sender, snapshot: ISSVNetworkCore.Snapshot({block: uint32(block.number), index: 0, balance: 0}), validatorCount: 0, - fee: fee.shrink(), + fee: fee, whitelisted: false }); s.operatorsPKs[hashedPk] = id; diff --git a/contracts/test/SSVNetworkUpgrade.sol b/contracts/test/SSVNetworkUpgrade.sol index c859582f..4ec5938a 100644 --- a/contracts/test/SSVNetworkUpgrade.sol +++ b/contracts/test/SSVNetworkUpgrade.sol @@ -117,10 +117,10 @@ contract SSVNetworkUpgrade is /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { bytes memory result = _delegateCall( SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], - abi.encodeWithSignature("registerOperator(bytes,uint256)", publicKey, fee) + abi.encodeWithSignature("registerOperator(bytes,uint64)", publicKey, fee) ); return abi.decode(result, (uint64)); } @@ -336,7 +336,7 @@ contract SSVNetworkUpgrade is } function updateMaximumOperatorFee(uint64 maxFee) external override { - _delegateCall( + _delegateCall( SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], abi.encodeWithSignature("updateMaximumOperatorFee(uint64)", maxFee) ); diff --git a/contracts/test/modules/SSVOperatorsUpdate.sol b/contracts/test/modules/SSVOperatorsUpdate.sol index 1120a292..2b5fa8ce 100644 --- a/contracts/test/modules/SSVOperatorsUpdate.sol +++ b/contracts/test/modules/SSVOperatorsUpdate.sol @@ -23,7 +23,7 @@ contract SSVOperatorsUpdate is ISSVOperators { /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) { revert ISSVNetworkCore.FeeTooLow(); } @@ -38,7 +38,7 @@ contract SSVOperatorsUpdate is ISSVOperators { owner: msg.sender, snapshot: ISSVNetworkCore.Snapshot({block: uint32(block.number), index: 0, balance: 0}), validatorCount: 0, - fee: fee.shrink(), + fee: fee, whitelisted: false }); s.operatorsPKs[hashedPk] = id; diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 88a08071..5543e36e 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [2234]}, "id": 2235, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2120, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 2234, "linearizedBaseContracts": [2234], "name": "ISSVNetworkCore", "nameLocation": "80:15:0", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 2130, "members": [{"constant": false, "id": 2123, "mutability": "mutable", "name": "block", "nameLocation": "343:5:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "336:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2122, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2126, "mutability": "mutable", "name": "index", "nameLocation": "461:5:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "454:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2125, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2129, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:0", "nodeType": "VariableDeclaration", "scope": 2130, "src": "587:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2128, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:0", "nodeType": "StructDefinition", "scope": 2234, "src": "248:360:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 2147, "members": [{"constant": false, "id": 2133, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "755:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2132, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2136, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "903:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2135, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2139, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "976:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2138, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2142, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1051:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2141, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2146, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1129:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 2145, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2144, "name": "Snapshot", "nameLocations": ["1129:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2130, "src": "1129:8:0"}, "referencedDeclaration": 2130, "src": "1129:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:0", "nodeType": "StructDefinition", "scope": 2234, "src": "657:496:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 2157, "members": [{"constant": false, "id": 2150, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1320:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2149, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2153, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1417:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2152, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2156, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:0", "nodeType": "VariableDeclaration", "scope": 2157, "src": "1526:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2155, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:0", "nodeType": "StructDefinition", "scope": 2234, "src": "1224:331:0", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 2173, "members": [{"constant": false, "id": 2160, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1694:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2159, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2163, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1792:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2162, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2166, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1883:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2165, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2169, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "1968:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2168, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2172, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:0", "nodeType": "VariableDeclaration", "scope": 2173, "src": "2033:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2171, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:0", "nodeType": "StructDefinition", "scope": 2234, "src": "1612:443:0", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 2175, "name": "CallerNotOwner", "nameLocation": "2119:14:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2174, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:0"}, "src": "2113:23:0"}, {"errorSelector": "8c6e5d71", "id": 2177, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2176, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:0"}, "src": "2155:29:0"}, {"errorSelector": "732f9413", "id": 2179, "name": "FeeTooLow", "nameLocation": "2209:9:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2178, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:0"}, "src": "2203:18:0"}, {"errorSelector": "958065d9", "id": 2181, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2180, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:0"}, "src": "2240:32:0"}, {"errorSelector": "1d226c30", "id": 2183, "name": "NoFeeDeclared", "nameLocation": "2297:13:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2182, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:0"}, "src": "2291:22:0"}, {"errorSelector": "97e4b518", "id": 2185, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:0"}, "src": "2332:35:0"}, {"errorSelector": "961e3e8c", "id": 2187, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2186, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:0"}, "src": "2386:29:0"}, {"errorSelector": "f4d678b8", "id": 2189, "name": "InsufficientBalance", "nameLocation": "2440:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2188, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:0"}, "src": "2434:28:0"}, {"errorSelector": "8d09a73e", "id": 2191, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:0"}, "src": "2481:31:0"}, {"errorSelector": "e51315d2", "id": 2193, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2192, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:0"}, "src": "2531:30:0"}, {"errorSelector": "2feda3c1", "id": 2195, "name": "IncorrectValidatorState", "nameLocation": "2586:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2194, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:0"}, "src": "2580:32:0"}, {"errorSelector": "60300a8d", "id": 2197, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:0"}, "src": "2631:31:0"}, {"errorSelector": "637297a4", "id": 2199, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2198, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:0"}, "src": "2681:31:0"}, {"errorSelector": "38186224", "id": 2201, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2200, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:0"}, "src": "2731:33:0"}, {"errorSelector": "3babafd2", "id": 2203, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2202, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:0"}, "src": "2783:30:0"}, {"errorSelector": "95a0cf33", "id": 2205, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2204, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:0"}, "src": "2832:28:0"}, {"errorSelector": "185e2b16", "id": 2207, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2206, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:0"}, "src": "2879:29:0"}, {"errorSelector": "12e04c87", "id": 2209, "name": "IncorrectClusterState", "nameLocation": "2933:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2208, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:0"}, "src": "2927:30:0"}, {"errorSelector": "dd020e25", "id": 2211, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2210, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:0"}, "src": "2976:30:0"}, {"errorSelector": "6e6c9cac", "id": 2213, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2212, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:0"}, "src": "3025:37:0"}, {"errorSelector": "6df5ab76", "id": 2215, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2214, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:0"}, "src": "3081:29:0"}, {"errorSelector": "045c4b02", "id": 2217, "name": "TokenTransferFailed", "nameLocation": "3135:19:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2216, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:0"}, "src": "3129:28:0"}, {"errorSelector": "c81272f8", "id": 2219, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2218, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:0"}, "src": "3176:32:0"}, {"errorSelector": "410a2b6c", "id": 2221, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2220, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:0"}, "src": "3227:30:0"}, {"errorSelector": "ea8e4eb5", "id": 2223, "name": "NotAuthorized", "nameLocation": "3282:13:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2222, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:0"}, "src": "3276:22:0"}, {"errorSelector": "a5a1ff5d", "id": 2225, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2224, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:0"}, "src": "3317:31:0"}, {"errorSelector": "289c9494", "id": 2227, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2226, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:0"}, "src": "3367:30:0"}, {"errorSelector": "8f9195fb", "id": 2229, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2228, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:0"}, "src": "3416:33:0"}, {"errorSelector": "91aa3017", "id": 2231, "name": "MaxValueExceeded", "nameLocation": "3474:16:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2230, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:0"}, "src": "3468:25:0"}, {"errorSelector": "cd4e6167", "id": 2233, "name": "FeeTooHigh", "nameLocation": "3518:10:0", "nodeType": "ErrorDefinition", "parameters": {"id": 2232, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:0"}, "src": "3512:19:0"}], "scope": 2235, "src": "70:3477:0", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:3503:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [2234], "ISSVOperators": [1458]}, "id": 1459, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1324, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1325, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1459, "sourceUnit": 2235, "src": "70:31:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1326, "name": "ISSVNetworkCore", "nameLocations": ["130:15:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 2234, "src": "130:15:1"}, "id": 1327, "nodeType": "InheritanceSpecifier", "src": "130:15:1"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 1458, "linearizedBaseContracts": [1458, 2234], "name": "ISSVOperators", "nameLocation": "113:13:1", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1328, "nodeType": "StructuredDocumentation", "src": "152:136:1", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1337, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1333, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1330, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "319:24:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1329, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:1", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1332, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "345:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1331, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:1"}, "returnParameters": {"id": 1336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1335, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1337, "src": "376:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:1"}, "scope": 1458, "src": "293:91:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1338, "nodeType": "StructuredDocumentation", "src": "390:103:1", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1343, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1340, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:1", "nodeType": "VariableDeclaration", "scope": 1343, "src": "522:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:1"}, "returnParameters": {"id": 1342, "nodeType": "ParameterList", "parameters": [], "src": "549:0:1"}, "scope": 1458, "src": "498:52:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1344, "nodeType": "StructuredDocumentation", "src": "556:152:1", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1351, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1346, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:1", "nodeType": "VariableDeclaration", "scope": 1351, "src": "743:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1345, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1348, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:1", "nodeType": "VariableDeclaration", "scope": 1351, "src": "762:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1347, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:1"}, "returnParameters": {"id": 1350, "nodeType": "ParameterList", "parameters": [], "src": "791:0:1"}, "scope": 1458, "src": "713:79:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1352, "nodeType": "StructuredDocumentation", "src": "798:136:1", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1359, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1354, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:1", "nodeType": "VariableDeclaration", "scope": 1359, "src": "967:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1353, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1356, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:1", "nodeType": "VariableDeclaration", "scope": 1359, "src": "986:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:1"}, "returnParameters": {"id": 1358, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:1"}, "scope": 1458, "src": "939:69:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1360, "nodeType": "StructuredDocumentation", "src": "1014:88:1", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1365, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1362, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:1", "nodeType": "VariableDeclaration", "scope": 1365, "src": "1135:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1361, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:1"}, "returnParameters": {"id": 1364, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:1"}, "scope": 1458, "src": "1107:56:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1366, "nodeType": "StructuredDocumentation", "src": "1169:96:1", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1371, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1368, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:1", "nodeType": "VariableDeclaration", "scope": 1371, "src": "1305:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:1"}, "returnParameters": {"id": 1370, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:1"}, "scope": 1458, "src": "1270:63:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1372, "nodeType": "StructuredDocumentation", "src": "1339:135:1", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1379, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1377, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1374, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:1", "nodeType": "VariableDeclaration", "scope": 1379, "src": "1506:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1373, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1376, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:1", "nodeType": "VariableDeclaration", "scope": 1379, "src": "1525:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:1"}, "returnParameters": {"id": 1378, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:1"}, "scope": 1458, "src": "1479:68:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1380, "nodeType": "StructuredDocumentation", "src": "1553:154:1", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1387, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1382, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:1", "nodeType": "VariableDeclaration", "scope": 1387, "src": "1746:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1381, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1384, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:1", "nodeType": "VariableDeclaration", "scope": 1387, "src": "1765:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1383, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:1"}, "returnParameters": {"id": 1386, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:1"}, "scope": 1458, "src": "1712:83:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1388, "nodeType": "StructuredDocumentation", "src": "1801:92:1", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1393, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:1", "nodeType": "FunctionDefinition", "parameters": {"id": 1391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1390, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:1", "nodeType": "VariableDeclaration", "scope": 1393, "src": "1935:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1389, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:1"}, "returnParameters": {"id": 1392, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:1"}, "scope": 1458, "src": "1898:65:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1394, "nodeType": "StructuredDocumentation", "src": "1969:317:1", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1404, "name": "OperatorAdded", "nameLocation": "2297:13:1", "nodeType": "EventDefinition", "parameters": {"id": 1403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1396, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2311:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1395, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1398, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2338:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1397, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1400, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2361:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1399, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:1", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1402, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:1", "nodeType": "VariableDeclaration", "scope": 1404, "src": "2378:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:1"}, "src": "2291:100:1"}, {"anonymous": false, "documentation": {"id": 1405, "nodeType": "StructuredDocumentation", "src": "2397:103:1", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1409, "name": "OperatorRemoved", "nameLocation": "2511:15:1", "nodeType": "EventDefinition", "parameters": {"id": 1408, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1407, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:1", "nodeType": "VariableDeclaration", "scope": 1409, "src": "2527:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1406, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:1"}, "src": "2505:49:1"}, {"anonymous": false, "documentation": {"id": 1410, "nodeType": "StructuredDocumentation", "src": "2560:179:1", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1416, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:1", "nodeType": "EventDefinition", "parameters": {"id": 1415, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1412, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:1", "nodeType": "VariableDeclaration", "scope": 1416, "src": "2775:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1411, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1414, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:1", "nodeType": "VariableDeclaration", "scope": 1416, "src": "2802:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1413, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:1"}, "src": "2744:79:1"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1426, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:1", "nodeType": "EventDefinition", "parameters": {"id": 1425, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1418, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2854:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1417, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1420, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2877:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1419, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1422, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2904:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1421, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1424, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:1", "nodeType": "VariableDeclaration", "scope": 1426, "src": "2925:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1423, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:1"}, "src": "2828:110:1"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1432, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:1", "nodeType": "EventDefinition", "parameters": {"id": 1431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1428, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:1", "nodeType": "VariableDeclaration", "scope": 1432, "src": "2982:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1427, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1430, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:1", "nodeType": "VariableDeclaration", "scope": 1432, "src": "3005:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1429, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:1"}, "src": "2944:88:1"}, {"anonymous": false, "documentation": {"id": 1433, "nodeType": "StructuredDocumentation", "src": "3037:192:1", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1443, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:1", "nodeType": "EventDefinition", "parameters": {"id": 1442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1435, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3260:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1434, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1437, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3283:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1436, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1439, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3310:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1441, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:1", "nodeType": "VariableDeclaration", "scope": 1443, "src": "3331:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1440, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:1"}, "src": "3234:110:1"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1451, "name": "OperatorWithdrawn", "nameLocation": "3355:17:1", "nodeType": "EventDefinition", "parameters": {"id": 1450, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1445, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3373:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1444, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1447, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3396:25:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1446, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1449, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:1", "nodeType": "VariableDeclaration", "scope": 1451, "src": "3423:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1448, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:1"}, "src": "3349:89:1"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 1457, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:1", "nodeType": "EventDefinition", "parameters": {"id": 1456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1453, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:1", "nodeType": "VariableDeclaration", "scope": 1457, "src": "3476:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1452, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1455, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:1", "nodeType": "VariableDeclaration", "scope": 1457, "src": "3499:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1454, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:1"}, "src": "3443:82:1"}], "scope": 1459, "src": "103:3424:1", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:3483:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "IERC20": [2312], "ISSVNetworkCore": [2234], "SSVModules": [1842], "SSVStorage": [1912], "StorageData": [1889]}, "id": 1590, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1460, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1461, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1590, "sourceUnit": 1913, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1589, "linearizedBaseContracts": [1589], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 1468, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 1467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1464, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 1468, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, "typeName": {"id": 1463, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1462, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "141:10:2"}, "referencedDeclaration": 1842, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1466, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 1468, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1465, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 1475, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 1473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 1472, "id": 1474, "nodeType": "Return", "src": "269:19:2"}]}, "id": 1476, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1469, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 1472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1476, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1470, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 1589, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1499, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 1491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 1488, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1478, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1489, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1480, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1483, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1486, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1884, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2279, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 1490, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1498, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 1497, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1492, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2217, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1496, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 1500, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1478, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 1500, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1477, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1480, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 1500, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1479, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 1482, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 1589, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1526, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 1518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 1510, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 1514, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$1589", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$1589", "typeString": "library CoreLib"}], "id": 1513, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1512, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1516, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1502, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1505, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 1884, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2311, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1525, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 1524, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1519, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 2217, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1523, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 1527, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1502, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 1527, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1501, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 1504, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 1589, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1553, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1535, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1530, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 1537, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1536, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1544, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 1543, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 1541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 1534, "id": 1542, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [1546], "declarations": [{"constant": false, "id": 1546, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 1553, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1547, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1530, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 1546, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 1548, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1549, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1546, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1534, "id": 1552, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 1528, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 1554, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1531, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1530, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 1554, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1529, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 1534, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1533, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1554, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1532, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 1589, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1587, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 1563, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1562, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1571, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1566, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2229, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1570, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1572, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1863, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 1578, "indexExpression": {"id": 1577, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1557, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1579, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1581, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 1583, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1557, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, {"id": 1584, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1559, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1582, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1842_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 1585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1586, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 1588, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1557, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}, "typeName": {"id": 1556, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1555, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "1826:10:2"}, "referencedDeclaration": 1842, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 1559, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 1588, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1558, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 1561, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 1589, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1590, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "OperatorLib": [1832], "SSVModules": [1842], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 1833, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1591, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1592, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 2235, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 1593, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 1913, "src": "114:26:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 1594, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 1978, "src": "141:34:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 1595, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1833, "sourceUnit": 2045, "src": "176:21:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1832, "linearizedBaseContracts": [1832], "name": "OperatorLib", "nameLocation": "207:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 1598, "libraryName": {"id": 1596, "name": "Types64", "nameLocations": ["231:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "231:7:3"}, "nodeType": "UsingForDirective", "src": "225:25:3", "typeName": {"id": 1597, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 1651, "nodeType": "Block", "src": "336:285:3", "statements": [{"assignments": [1605], "declarations": [{"constant": false, "id": 1605, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:3", "nodeType": "VariableDeclaration", "scope": 1651, "src": "346:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1619, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1608, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1607, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1606, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:3", "typeDescriptions": {}}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1611, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "392:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "392:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1613, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "392:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1615, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1616, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "419:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "419:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:3"}, {"expression": {"id": 1626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1620, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "442:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "442:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1624, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "442:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1625, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1605, "src": "469:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1627, "nodeType": "ExpressionStatement", "src": "442:39:3"}, {"expression": {"id": 1637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1628, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "491:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1631, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "491:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:3", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "491:25:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1633, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1605, "src": "520:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1634, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "535:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1635, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "535:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1638, "nodeType": "ExpressionStatement", "src": "491:67:3"}, {"expression": {"id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1639, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "568:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "568:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "568:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 1646, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1645, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1644, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:3", "typeDescriptions": {}}}, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1650, "nodeType": "ExpressionStatement", "src": "568:46:3"}]}, "id": 1652, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1602, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1601, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:3", "nodeType": "VariableDeclaration", "scope": 1652, "src": "280:40:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1600, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1599, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:3", "296:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "280:24:3"}, "referencedDeclaration": 2147, "src": "280:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:3"}, "returnParameters": {"id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "336:0:3"}, "scope": 1832, "src": "256:365:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1705, "nodeType": "Block", "src": "705:285:3", "statements": [{"assignments": [1659], "declarations": [{"constant": false, "id": 1659, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:3", "nodeType": "VariableDeclaration", "scope": 1705, "src": "715:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1658, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1673, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1662, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1661, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1660, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:3", "typeDescriptions": {}}}, "id": 1664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1665, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "761:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1666, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "761:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "761:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1669, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1670, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "788:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "788:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:3"}, {"expression": {"id": 1680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1674, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "811:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1677, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "811:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1678, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "811:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1679, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "838:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1681, "nodeType": "ExpressionStatement", "src": "811:39:3"}, {"expression": {"id": 1691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1682, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "860:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1685, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "860:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:3", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "860:25:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1687, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1659, "src": "889:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1688, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "904:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1689, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "904:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1692, "nodeType": "ExpressionStatement", "src": "860:67:3"}, {"expression": {"id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1693, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1655, "src": "937:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1696, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "937:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1697, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "937:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 1700, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 1698, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:3", "typeDescriptions": {}}}, "id": 1702, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1704, "nodeType": "ExpressionStatement", "src": "937:46:3"}]}, "id": 1706, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1655, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:3", "nodeType": "VariableDeclaration", "scope": 1706, "src": "653:41:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1654, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1653, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:3", "669:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "653:24:3"}, "referencedDeclaration": 2147, "src": "653:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:3"}, "returnParameters": {"id": 1657, "nodeType": "ParameterList", "parameters": [], "src": "705:0:3"}, "scope": 1832, "src": "627:363:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1734, "nodeType": "Block", "src": "1072:179:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1716, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1712, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "1086:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1713, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "1086:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1714, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "1086:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1722, "nodeType": "IfStatement", "src": "1082:79:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1717, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1123:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:3", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 2187, "src": "1123:36:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1721, "nodeType": "RevertStatement", "src": "1116:45:3"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1723, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "1175:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1724, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:3", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 2139, "src": "1175:14:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1725, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1733, "nodeType": "IfStatement", "src": "1171:73:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1728, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1212:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:3", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2175, "src": "1212:30:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1731, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1732, "nodeType": "RevertStatement", "src": "1205:39:3"}}]}, "id": 1735, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1709, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:3", "nodeType": "VariableDeclaration", "scope": 1735, "src": "1016:40:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1708, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1707, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:3", "1032:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1016:24:3"}, "referencedDeclaration": 2147, "src": "1016:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:3"}, "returnParameters": {"id": 1711, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:3"}, "scope": 1832, "src": "996:255:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1830, "nodeType": "Block", "src": "1485:831:3", "statements": [{"body": {"id": 1828, "nodeType": "Block", "src": "1537:773:3", "statements": [{"assignments": [1760], "declarations": [{"constant": false, "id": 1760, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:3", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1551:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1764, "initialValue": {"baseExpression": {"id": 1761, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1738, "src": "1571:11:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 1763, "indexExpression": {"id": 1762, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "1583:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:3"}, {"assignments": [1769], "declarations": [{"constant": false, "id": 1769, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:3", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1599:41:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1768, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1767, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:3", "1615:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1599:24:3"}, "referencedDeclaration": 2147, "src": "1599:24:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1774, "initialValue": {"baseExpression": {"expression": {"id": 1770, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1745, "src": "1643:1:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1771, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:3", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1643:11:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1773, "indexExpression": {"id": 1772, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1760, "src": "1655:10:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:3"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1775, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1684:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1776, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "1684:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:3", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "1684:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1817, "nodeType": "IfStatement", "src": "1680:507:3", "trueBody": {"id": 1816, "nodeType": "Block", "src": "1714:473:3", "statements": [{"expression": {"arguments": [{"id": 1781, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1749:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 1780, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1706, "src": "1732:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$2147_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1783, "nodeType": "ExpressionStatement", "src": "1732:26:3"}, {"condition": {"id": 1785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:3", "subExpression": {"id": 1784, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1740, "src": "1781:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 1796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1793, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1924:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1794, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "1924:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1795, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1742, "src": "1951:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 1797, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1798, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1974:18:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1974:23:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1800, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:3", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1926, "src": "1974:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1809, "nodeType": "IfStatement", "src": "1898:233:3", "trueBody": {"id": 1808, "nodeType": "Block", "src": "2045:86:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1803, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "2074:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 1805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:3", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2215, "src": "2074:36:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1807, "nodeType": "RevertStatement", "src": "2067:45:3"}]}}, "id": 1810, "nodeType": "IfStatement", "src": "1776:355:3", "trueBody": {"id": 1792, "nodeType": "Block", "src": "1805:87:3", "statements": [{"expression": {"id": 1790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1786, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "1827:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1788, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:3", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "1827:23:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1789, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1742, "src": "1854:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1791, "nodeType": "ExpressionStatement", "src": "1827:46:3"}]}}, {"expression": {"id": 1814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1811, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1750, "src": "2148:8:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1812, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "2160:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:3", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2160:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1815, "nodeType": "ExpressionStatement", "src": "2148:24:3"}]}}, {"expression": {"id": 1822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1818, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1748, "src": "2201:12:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 1819, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1769, "src": "2217:8:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1820, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:3", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2217:17:3", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1821, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:3", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 2126, "src": "2217:23:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1823, "nodeType": "ExpressionStatement", "src": "2201:39:3"}, {"id": 1827, "nodeType": "UncheckedBlock", "src": "2254:46:3", "statements": [{"expression": {"id": 1825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:3", "subExpression": {"id": 1824, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "2284:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1826, "nodeType": "ExpressionStatement", "src": "2282:3:3"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1755, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1753, "src": "1511:1:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1756, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1738, "src": "1515:11:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:3", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1829, "initializationExpression": {"assignments": [1753], "declarations": [{"constant": false, "id": 1753, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:3", "nodeType": "VariableDeclaration", "scope": 1829, "src": "1500:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1752, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1754, "nodeType": "VariableDeclarationStatement", "src": "1500:9:3"}, "nodeType": "ForStatement", "src": "1495:815:3"}]}, "id": 1831, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1746, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1738, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1291:27:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1736, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1737, "nodeType": "ArrayTypeName", "src": "1291:8:3", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1740, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1328:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1739, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1742, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1365:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1741, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1745, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1401:21:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1744, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1743, "name": "StorageData", "nameLocations": ["1401:11:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1401:11:3"}, "referencedDeclaration": 1889, "src": "1401:11:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:3"}, "returnParameters": {"id": 1751, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1748, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1447:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1747, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1750, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:3", "nodeType": "VariableDeclaration", "scope": 1831, "src": "1468:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1749, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:3"}, "scope": 1832, "src": "1257:1059:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1833, "src": "199:2119:3", "usedErrors": []}], "src": "45:2274:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2118], "IERC20": [2312], "ISSVNetworkCore": [2234], "SSVModules": [1842], "SSVStorage": [1912], "StorageData": [1889]}, "id": 1913, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1834, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1835, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2235, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1836, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2119, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1837, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1913, "sourceUnit": 2313, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1842, "members": [{"id": 1838, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 1839, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 1840, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 1841, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 1889, "members": [{"constant": false, "id": 1847, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1846, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1844, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1845, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1852, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1851, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1849, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1850, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1857, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1856, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1854, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1855, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1863, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1862, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1860, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1859, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1842, "src": "1006:10:4"}, "referencedDeclaration": 1842, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1842", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1842_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1861, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1868, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 1867, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1865, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1866, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 1874, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 1873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1870, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1872, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1871, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2157, "src": "1322:40:4"}, "referencedDeclaration": 2157, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 1880, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 1879, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1876, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1878, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1877, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1488:24:4"}, "referencedDeclaration": 2147, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 1884, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}, "typeName": {"id": 1883, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1882, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2312, "src": "1599:6:4"}, "referencedDeclaration": 2312, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2312", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 1888, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 1889, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1887, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1886, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1686:16:4"}, "referencedDeclaration": 2050, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 1913, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1912, "linearizedBaseContracts": [1912], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1899, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 1912, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 1894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 1893, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1895, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1891, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 1896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1910, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [1906], "declarations": [{"constant": false, "id": 1906, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 1910, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1905, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1908, "initialValue": {"id": 1907, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1899, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1906, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 1903, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 1909, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 1911, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1900, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1903, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 1911, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1901, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1891:11:4"}, "referencedDeclaration": 1889, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 1912, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1913, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1977], "StorageProtocol": [1954]}, "id": 1978, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1914, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 1954, "members": [{"constant": false, "id": 1917, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1916, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1920, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1919, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1922, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1926, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1925, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1929, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1928, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1932, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1931, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1935, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1934, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1938, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1937, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1941, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1940, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1944, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1943, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1946, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1950, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1949, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1953, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 1954, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1952, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1978, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1977, "linearizedBaseContracts": [1977], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1964, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1977, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1955, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1958, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1957, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 1961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1962, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1975, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1971], "declarations": [{"constant": false, "id": 1971, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1973, "initialValue": {"id": 1972, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1964, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1971, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1968, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1974, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1976, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1968, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1976, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1967, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1966, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "1711:15:5"}, "referencedDeclaration": 1954, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1977, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1978, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1982], "Types256": [2044], "Types64": [1995]}, "id": 2045, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1979, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 1982, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 2045, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1980, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1995, "linearizedBaseContracts": [1995], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1993, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1989, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1984, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1990, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1988, "id": 1992, "nodeType": "Return", "src": "212:30:6"}]}, "id": 1994, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1985, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1984, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 1994, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1983, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 1988, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1987, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1994, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1986, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 1995, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2045, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2044, "linearizedBaseContracts": [2044], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2023, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2003, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1997, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2008, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2004, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 2005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2007, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 2011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 2002, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2012, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2013, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2017, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1997, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2016, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2043, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2018, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2019, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2015, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2014, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 2021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2001, "id": 2022, "nodeType": "Return", "src": "425:50:6"}]}, "id": 2024, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1998, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1997, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1996, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 2001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2000, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2024, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1999, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 2044, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2042, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2032, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2033, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2035, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 2037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 2031, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2039, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 2040, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2030, "id": 2041, "nodeType": "Return", "src": "638:12:6"}]}, "id": 2043, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2026, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 2043, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 2030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2029, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2043, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 2044, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2045, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol": {"AST": {"absolutePath": "contracts/modules/Operators.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "ISSVOperators": [1458], "OperatorLib": [1832], "Operators": [467], "SSVModules": [1842], "SSVOperators": [1322], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 468, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "./SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 468, "sourceUnit": 1323, "src": "70:28:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVOperators", "nameLocations": ["122:12:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1322, "src": "122:12:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "122:12:7"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 467, "linearizedBaseContracts": [467, 1322, 1458, 2234], "name": "Operators", "nameLocation": "109:9:7", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 7, "libraryName": {"id": 5, "name": "Types64", "nameLocations": ["147:7:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "147:7:7"}, "nodeType": "UsingForDirective", "src": "141:25:7", "typeName": {"id": 6, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "159:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 10, "libraryName": {"id": 8, "name": "Types256", "nameLocations": ["177:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2044, "src": "177:8:7"}, "nodeType": "UsingForDirective", "src": "171:27:7", "typeName": {"id": 9, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "190:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": true, "id": 13, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "228:20:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "204:58:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 11, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "204:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 12, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "251:11:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 16, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "292:16:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "268:49:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 14, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "268:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 15, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "311:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "id": 19, "mutability": "mutable", "name": "opIds", "nameLocation": "333:5:7", "nodeType": "VariableDeclaration", "scope": 467, "src": "324:14:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 17, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "324:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 18, "nodeType": "ArrayTypeName", "src": "324:8:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"anonymous": false, "eventSelector": "d383b8aaba2a09f55ee97f5c05603f3331c5041795f02062b610d674a0b4fa23", "id": 25, "name": "Declared", "nameLocation": "351:8:7", "nodeType": "EventDefinition", "parameters": {"id": 24, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 21, "indexed": false, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "367:13:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "360:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 20, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "360:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 23, "indexed": false, "mutability": "mutable", "name": "operatorFee", "nameLocation": "389:11:7", "nodeType": "VariableDeclaration", "scope": 25, "src": "382:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "382:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "359:42:7"}, "src": "345:57:7"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 31, "name": "AssertionFailed", "nameLocation": "413:15:7", "nodeType": "EventDefinition", "parameters": {"id": 30, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 27, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "436:10:7", "nodeType": "VariableDeclaration", "scope": 31, "src": "429:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 26, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "429:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 29, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "453:13:7", "nodeType": "VariableDeclaration", "scope": 31, "src": "448:18:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 28, "name": "bool", "nodeType": "ElementaryTypeName", "src": "448:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "428:39:7"}, "src": "407:61:7"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 37, "name": "AssertionFailed", "nameLocation": "479:15:7", "nodeType": "EventDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "502:10:7", "nodeType": "VariableDeclaration", "scope": 37, "src": "495:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "495:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 35, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "521:17:7", "nodeType": "VariableDeclaration", "scope": 37, "src": "514:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 34, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "514:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "494:45:7"}, "src": "473:67:7"}, {"body": {"id": 88, "nodeType": "Block", "src": "560:383:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "594:2:7", "nodeType": "VariableDeclaration", "scope": 88, "src": "570:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["570:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "570:15:7"}, "referencedDeclaration": 1954, "src": "570:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "599:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "618:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "599:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "599:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "570:54:7"}, {"expression": {"id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 47, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "634:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "637:30:7", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1938, "src": "634:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "670:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "634:42:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 52, "nodeType": "ExpressionStatement", "src": "634:42:7"}, {"expression": {"id": 62, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 53, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "686:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 55, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "689:28:7", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1941, "src": "686:31:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "728:19:7", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "720:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 56, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "720:7:7", "typeDescriptions": {}}}, "id": 59, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "720:28:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 60, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "749:6:7", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "720:35:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 61, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "720:37:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "686:71:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 63, "nodeType": "ExpressionStatement", "src": "686:71:7"}, {"expression": {"id": 68, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 64, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "767:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 66, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "770:26:7", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1926, "src": "767:29:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "799:3:7", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "767:35:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 69, "nodeType": "ExpressionStatement", "src": "767:35:7"}, {"expression": {"id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 70, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "812:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 72, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "815:24:7", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "812:27:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 73, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "842:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "812:36:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 75, "nodeType": "ExpressionStatement", "src": "812:36:7"}, {"expression": {"id": 80, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 76, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "858:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 78, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "861:24:7", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1947, "src": "858:27:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 79, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "888:6:7", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "858:36:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 81, "nodeType": "ExpressionStatement", "src": "858:36:7"}, {"expression": {"id": 86, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 82, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "904:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 84, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "907:22:7", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "904:25:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 85, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "932:4:7", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "904:32:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 87, "nodeType": "ExpressionStatement", "src": "904:32:7"}]}, "id": 89, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 38, "nodeType": "ParameterList", "parameters": [], "src": "557:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [], "src": "560:0:7"}, "scope": 467, "src": "546:397:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 190, "nodeType": "Block", "src": "1026:685:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 97, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1044:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 98, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1054:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "1044:16:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 99, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1064:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1044:21:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 101, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1069:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 103, "indexExpression": {"hexValue": "30", "id": 102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1079:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1069:12:7", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1085:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1069:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1044:42:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d707479", "id": 107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1088:36:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_52323bfacae2d46ad95362a3f84efcbab98d07c44e0583b100be130c0ead6aa1", "typeString": "literal_string \"invalid publicKey: cannot be empty\""}, "value": "invalid publicKey: cannot be empty"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_52323bfacae2d46ad95362a3f84efcbab98d07c44e0583b100be130c0ead6aa1", "typeString": "literal_string \"invalid publicKey: cannot be empty\""}], "id": 96, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1036:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1036:89:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 109, "nodeType": "ExpressionStatement", "src": "1036:89:7"}, {"assignments": [111], "declarations": [{"constant": false, "id": 111, "mutability": "mutable", "name": "maxValue", "nameLocation": "1144:8:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1136:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1136:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 117, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 112, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1155:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1160:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "1155:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 115, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1165:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1155:25:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1136:44:7"}, {"assignments": [119], "declarations": [{"constant": false, "id": 119, "mutability": "mutable", "name": "minN", "nameLocation": "1199:4:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1191:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 118, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1191:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 128, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 124, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 122, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"id": 120, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13, "src": "1207:20:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 121, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1230:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1207:38:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1248:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1207:42:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 125, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1206:44:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 126, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1253:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1206:62:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1191:77:7"}, {"assignments": [130], "declarations": [{"constant": false, "id": 130, "mutability": "mutable", "name": "maxN", "nameLocation": "1286:4:7", "nodeType": "VariableDeclaration", "scope": 190, "src": "1278:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 129, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1278:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 135, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 131, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1293:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1312:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1293:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1293:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1319:14:7", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "1293:40:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1278:55:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 137, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1352:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 138, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 119, "src": "1358:4:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1352:10:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 140, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1366:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 141, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1372:4:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1366:10:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1352:24:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6665652076616c7565206578636565646564", "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1378:20:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a51ee487fe866a42b13c7acac85929a08319a272860e19d98ea1ac064bc44a4d", "typeString": "literal_string \"fee value exceeded\""}, "value": "fee value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a51ee487fe866a42b13c7acac85929a08319a272860e19d98ea1ac064bc44a4d", "typeString": "literal_string \"fee value exceeded\""}], "id": 136, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1344:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1344:55:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 146, "nodeType": "ExpressionStatement", "src": "1344:55:7"}, {"expression": {"id": 151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 147, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1409:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 148, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1415:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 149, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1982, "src": "1421:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1415:21:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1409:27:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 152, "nodeType": "ExpressionStatement", "src": "1409:27:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 154, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1455:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1466:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1455:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 157, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1473:12:7", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1455:30:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 161, "indexExpression": {"arguments": [{"id": 159, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1496:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 158, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1486:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1486:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1455:52:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1511:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1455:57:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f70657261746f7220657869737473", "id": 164, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1514:17:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_42ec98d22e5cf0566e8f166392b2c5b8262db2d3e45e64bdac31141dbe7ecfd4", "typeString": "literal_string \"Operator exists\""}, "value": "Operator exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_42ec98d22e5cf0566e8f166392b2c5b8262db2d3e45e64bdac31141dbe7ecfd4", "typeString": "literal_string \"Operator exists\""}], "id": 153, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1447:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1447:85:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 166, "nodeType": "ExpressionStatement", "src": "1447:85:7"}, {"clauses": [{"block": {"id": 181, "nodeType": "Block", "src": "1613:47:7", "statements": [{"expression": {"arguments": [{"id": 178, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1638:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 175, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "1627:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1633:4:7", "memberName": "push", "nodeType": "MemberAccess", "src": "1627:10:7", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1627:22:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 180, "nodeType": "ExpressionStatement", "src": "1627:22:7"}]}, "errorName": "", "id": 182, "nodeType": "TryCatchClause", "parameters": {"id": 174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 173, "mutability": "mutable", "name": "operatorId", "nameLocation": "1601:10:7", "nodeType": "VariableDeclaration", "scope": 182, "src": "1594:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1594:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1593:19:7"}, "src": "1585:75:7"}, {"block": {"id": 187, "nodeType": "Block", "src": "1667:38:7", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1688:5:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 183, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1681:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1681:13:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 186, "nodeType": "ExpressionStatement", "src": "1681:13:7"}]}, "errorName": "", "id": 188, "nodeType": "TryCatchClause", "src": "1661:44:7"}], "externalCall": {"arguments": [{"id": 169, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1569:9:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 170, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "1580:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 167, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1547:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1552:16:7", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 620, "src": "1547:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint256) external returns (uint64)"}}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1547:37:7", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 189, "nodeType": "TryStatement", "src": "1543:162:7"}]}, "functionSelector": "0a3d0123", "id": 191, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "958:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 94, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 91, "mutability": "mutable", "name": "publicKey", "nameLocation": "995:9:7", "nodeType": "VariableDeclaration", "scope": 191, "src": "980:24:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 90, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "980:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 93, "mutability": "mutable", "name": "fee", "nameLocation": "1014:3:7", "nodeType": "VariableDeclaration", "scope": 191, "src": "1006:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 92, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1006:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "979:39:7"}, "returnParameters": {"id": 95, "nodeType": "ParameterList", "parameters": [], "src": "1026:0:7"}, "scope": 467, "src": "949:762:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 215, "nodeType": "Block", "src": "1801:124:7", "statements": [{"expression": {"id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 198, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1811:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 199, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1824:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 202, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "1844:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1850:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "1844:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1837:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1837:6:7", "typeDescriptions": {}}}, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1837:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1824:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1811:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 207, "nodeType": "ExpressionStatement", "src": "1811:46:7"}, {"expression": {"arguments": [{"id": 211, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 193, "src": "1894:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 212, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1906:11:7", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 208, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1868:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1873:20:7", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 789, "src": "1868:25:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1868:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 214, "nodeType": "ExpressionStatement", "src": "1868:50:7"}]}, "functionSelector": "60e7474e", "id": 216, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "1726:27:7", "nodeType": "FunctionDefinition", "parameters": {"id": 196, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 193, "mutability": "mutable", "name": "operatorId", "nameLocation": "1761:10:7", "nodeType": "VariableDeclaration", "scope": 216, "src": "1754:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 192, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1754:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 195, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1781:11:7", "nodeType": "VariableDeclaration", "scope": 216, "src": "1773:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 194, "name": "address", "nodeType": "ElementaryTypeName", "src": "1773:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1753:40:7"}, "returnParameters": {"id": 197, "nodeType": "ParameterList", "parameters": [], "src": "1801:0:7"}, "scope": 467, "src": "1717:208:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 279, "nodeType": "Block", "src": "1992:464:7", "statements": [{"expression": {"id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 221, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2002:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 222, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2015:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 225, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2035:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2041:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2035:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 224, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2028:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2028:6:7", "typeDescriptions": {}}}, "id": 227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2028:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2015:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2002:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 230, "nodeType": "ExpressionStatement", "src": "2002:46:7"}, {"assignments": [233], "declarations": [{"constant": false, "id": 233, "mutability": "mutable", "name": "operator", "nameLocation": "2076:8:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2059:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 232, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 231, "name": "Operator", "nameLocations": ["2059:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "2059:8:7"}, "referencedDeclaration": 2147, "src": "2059:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 240, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 234, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "2087:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2098:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "2087:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2087:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 237, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2105:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2087:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 239, "indexExpression": {"id": 238, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2115:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2087:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2059:67:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 242, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, "src": "2144:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2153:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2144:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2162:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "2144:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2171:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2144:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2174:26:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 241, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2136:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2136:65:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 249, "nodeType": "ExpressionStatement", "src": "2136:65:7"}, {"assignments": [251], "declarations": [{"constant": false, "id": 251, "mutability": "mutable", "name": "fee", "nameLocation": "2219:3:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2212:10:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 250, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2212:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 254, "initialValue": {"expression": {"id": 252, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, "src": "2225:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2234:3:7", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2225:12:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2212:25:7"}, {"assignments": [256], "declarations": [{"constant": false, "id": 256, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "2255:13:7", "nodeType": "VariableDeclaration", "scope": 279, "src": "2248:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 255, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2248:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 269, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 257, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2272:3:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 258, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2279:16:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 259, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "2298:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2317:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "2298:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2298:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2324:22:7", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "2298:48:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2279:67:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 264, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2278:69:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2272:75:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 266, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2271:77:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 267, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2363:16:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2271:108:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2248:131:7"}, {"expression": {"arguments": [{"id": 273, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 218, "src": "2414:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 274, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 256, "src": "2426:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2440:6:7", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "2426:20:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2426:22:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 270, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2390:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2395:18:7", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 931, "src": "2390:23:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2390:59:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 278, "nodeType": "ExpressionStatement", "src": "2390:59:7"}]}, "functionSelector": "0f5baea8", "id": 280, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "1940:25:7", "nodeType": "FunctionDefinition", "parameters": {"id": 219, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 218, "mutability": "mutable", "name": "operatorId", "nameLocation": "1973:10:7", "nodeType": "VariableDeclaration", "scope": 280, "src": "1966:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 217, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1966:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1965:19:7"}, "returnParameters": {"id": 220, "nodeType": "ParameterList", "parameters": [], "src": "1992:0:7"}, "scope": 467, "src": "1931:525:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 301, "nodeType": "Block", "src": "2523:109:7", "statements": [{"expression": {"id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 285, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2533:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 286, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2546:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 289, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2566:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2572:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2566:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 288, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2559:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 287, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2559:6:7", "typeDescriptions": {}}}, "id": 291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2559:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2546:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2533:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 294, "nodeType": "ExpressionStatement", "src": "2533:46:7"}, {"expression": {"arguments": [{"id": 298, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 282, "src": "2614:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 295, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2590:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2595:18:7", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1041, "src": "2590:23:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2590:35:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 300, "nodeType": "ExpressionStatement", "src": "2590:35:7"}]}, "functionSelector": "45a5605a", "id": 302, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "2471:25:7", "nodeType": "FunctionDefinition", "parameters": {"id": 283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 282, "mutability": "mutable", "name": "operatorId", "nameLocation": "2504:10:7", "nodeType": "VariableDeclaration", "scope": 302, "src": "2497:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 281, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2497:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2496:19:7"}, "returnParameters": {"id": 284, "nodeType": "ParameterList", "parameters": [], "src": "2523:0:7"}, "scope": 467, "src": "2462:170:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 323, "nodeType": "Block", "src": "2695:105:7", "statements": [{"expression": {"id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 307, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2705:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 308, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2718:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 311, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2738:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2744:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2738:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 310, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2731:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 309, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2731:6:7", "typeDescriptions": {}}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2731:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2718:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2705:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 316, "nodeType": "ExpressionStatement", "src": "2705:46:7"}, {"expression": {"arguments": [{"id": 320, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2782:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 317, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2762:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$467", "typeString": "contract Operators"}}, "id": 319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2767:14:7", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 726, "src": "2762:19:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2762:31:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 322, "nodeType": "ExpressionStatement", "src": "2762:31:7"}]}, "functionSelector": "36058dc4", "id": 324, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "2647:21:7", "nodeType": "FunctionDefinition", "parameters": {"id": 305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 304, "mutability": "mutable", "name": "operatorId", "nameLocation": "2676:10:7", "nodeType": "VariableDeclaration", "scope": 324, "src": "2669:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 303, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2669:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2668:19:7"}, "returnParameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "2695:0:7"}, "scope": 467, "src": "2638:162:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 365, "nodeType": "Block", "src": "2930:278:7", "statements": [{"expression": {"id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 329, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "2940:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 330, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "2953:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 333, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "2973:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2979:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "2973:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 332, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2966:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2966:6:7", "typeDescriptions": {}}}, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2966:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2953:33:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2940:46:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 338, "nodeType": "ExpressionStatement", "src": "2940:46:7"}, {"assignments": [341], "declarations": [{"constant": false, "id": 341, "mutability": "mutable", "name": "operator", "nameLocation": "3014:8:7", "nodeType": "VariableDeclaration", "scope": 365, "src": "2997:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 340, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 339, "name": "Operator", "nameLocations": ["2997:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "2997:8:7"}, "referencedDeclaration": 2147, "src": "2997:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 348, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 342, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3025:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3025:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3025:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 345, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3043:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3025:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 347, "indexExpression": {"id": 346, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3053:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3025:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2997:67:7"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 349, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3080:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 350, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3089:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3080:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 351, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3098:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "3080:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3107:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3080:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 354, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3079:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 355, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3113:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 356, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3122:11:7", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "3113:20:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3079:54:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 364, "nodeType": "IfStatement", "src": "3075:126:7", "trueBody": {"eventCall": {"arguments": [{"id": 359, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3168:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 360, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "3180:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 361, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3189:11:7", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "3180:20:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 358, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [31, 37], "referencedDeclaration": 31, "src": "3152:15:7", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3152:49:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 363, "nodeType": "EmitStatement", "src": "3147:54:7"}}]}, "functionSelector": "22ca0bed", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "2868:35:7", "nodeType": "FunctionDefinition", "parameters": {"id": 327, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 326, "mutability": "mutable", "name": "operatorId", "nameLocation": "2911:10:7", "nodeType": "VariableDeclaration", "scope": 366, "src": "2904:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 325, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2904:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2903:19:7"}, "returnParameters": {"id": 328, "nodeType": "ParameterList", "parameters": [], "src": "2930:0:7"}, "scope": 467, "src": "2859:349:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 427, "nodeType": "Block", "src": "3284:497:7", "statements": [{"expression": {"id": 385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 371, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3294:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3307:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 373, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3312:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 376, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3333:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3339:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "3333:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3326:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 374, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3326:6:7", "typeDescriptions": {}}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3326:20:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3349:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3326:24:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 381, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3325:26:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3312:39:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 383, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3311:41:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3307:45:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3294:58:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 386, "nodeType": "ExpressionStatement", "src": "3294:58:7"}, {"assignments": [389], "declarations": [{"constant": false, "id": 389, "mutability": "mutable", "name": "operator", "nameLocation": "3380:8:7", "nodeType": "VariableDeclaration", "scope": 427, "src": "3363:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 388, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 387, "name": "Operator", "nameLocations": ["3363:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "3363:8:7"}, "referencedDeclaration": 2147, "src": "3363:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 396, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 390, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3391:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3402:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3391:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3391:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3409:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3391:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 395, "indexExpression": {"id": 394, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3419:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3391:39:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3363:67:7"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 397, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "3507:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3516:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3507:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 399, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3525:5:7", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "3507:23:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3534:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3507:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 402, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3506:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 403, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3553:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3564:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3553:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3553:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 406, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3571:25:7", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "3553:43:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 408, "indexExpression": {"id": 407, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3597:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3553:55:7", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 409, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3609:17:7", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "3553:73:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3630:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3553:78:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 412, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3552:80:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3506:126:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 426, "nodeType": "IfStatement", "src": "3441:334:7", "trueBody": {"id": 425, "nodeType": "Block", "src": "3643:132:7", "statements": [{"eventCall": {"arguments": [{"id": 415, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3678:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3690:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3701:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3690:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3690:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3708:25:7", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "3690:43:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 421, "indexExpression": {"id": 420, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3734:10:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3690:55:7", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3746:17:7", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "3690:73:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 414, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [31, 37], "referencedDeclaration": 37, "src": "3662:15:7", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3662:102:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 424, "nodeType": "EmitStatement", "src": "3657:107:7"}]}}]}, "functionSelector": "9d5ceb91", "id": 428, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "3223:34:7", "nodeType": "FunctionDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "3265:10:7", "nodeType": "VariableDeclaration", "scope": 428, "src": "3258:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3258:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3257:19:7"}, "returnParameters": {"id": 370, "nodeType": "ParameterList", "parameters": [], "src": "3284:0:7"}, "scope": 467, "src": "3214:567:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 465, "nodeType": "Block", "src": "3850:197:7", "statements": [{"body": {"id": 463, "nodeType": "Block", "src": "3899:142:7", "statements": [{"assignments": [445], "declarations": [{"constant": false, "id": 445, "mutability": "mutable", "name": "operator", "nameLocation": "3930:8:7", "nodeType": "VariableDeclaration", "scope": 463, "src": "3913:25:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 444, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 443, "name": "Operator", "nameLocations": ["3913:8:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "3913:8:7"}, "referencedDeclaration": 2147, "src": "3913:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 454, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 446, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3941:10:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3952:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3941:15:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3941:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 449, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3959:9:7", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3941:27:7", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 453, "indexExpression": {"baseExpression": {"id": 450, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3969:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 452, "indexExpression": {"id": 451, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3975:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3969:8:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3941:37:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3913:65:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 456, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 445, "src": "3999:8:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 457, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4008:8:7", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "3999:17:7", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 458, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4017:7:7", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "3999:25:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4028:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3999:30:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 455, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3992:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3992:38:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 462, "nodeType": "ExpressionStatement", "src": "3992:38:7"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 436, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3876:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 437, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3880:5:7", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3886:6:7", "memberName": "length", "nodeType": "MemberAccess", "src": "3880:12:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3876:16:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 464, "initializationExpression": {"assignments": [434], "declarations": [{"constant": false, "id": 434, "mutability": "mutable", "name": "i", "nameLocation": "3873:1:7", "nodeType": "VariableDeclaration", "scope": 464, "src": "3865:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3865:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 435, "nodeType": "VariableDeclarationStatement", "src": "3865:9:7"}, "loopExpression": {"expression": {"id": 441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3894:3:7", "subExpression": {"id": 440, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "3894:1:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 442, "nodeType": "ExpressionStatement", "src": "3894:3:7"}, "nodeType": "ForStatement", "src": "3860:181:7"}]}, "functionSelector": "e7780e00", "id": 466, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "3796:29:7", "nodeType": "FunctionDefinition", "parameters": {"id": 429, "nodeType": "ParameterList", "parameters": [], "src": "3825:2:7"}, "returnParameters": {"id": 432, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 431, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 466, "src": "3844:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 430, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3844:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3843:6:7"}, "scope": 467, "src": "3787:260:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 468, "src": "100:3949:7", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:4005:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [1589], "Counters": [2118], "DEDUCTED_DIGITS": [1982], "IERC20": [2312], "ISSVNetworkCore": [2234], "ISSVOperators": [1458], "OperatorLib": [1832], "SSVModules": [1842], "SSVOperators": [1322], "SSVStorage": [1912], "SSVStorageProtocol": [1977], "StorageData": [1889], "StorageProtocol": [1954], "Types256": [2044], "Types64": [1995]}, "id": 1323, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 469, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 470, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1459, "src": "70:41:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 471, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 2045, "src": "112:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 472, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1913, "src": "145:37:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 473, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1978, "src": "183:45:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 474, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1833, "src": "229:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 475, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 1590, "src": "268:34:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 476, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1323, "sourceUnit": 2119, "src": "304:52:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 477, "name": "ISSVOperators", "nameLocations": ["383:13:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1458, "src": "383:13:8"}, "id": 478, "nodeType": "InheritanceSpecifier", "src": "383:13:8"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1322, "linearizedBaseContracts": [1322, 1458, 2234], "name": "SSVOperators", "nameLocation": "367:12:8", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 481, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:8", "nodeType": "VariableDeclaration", "scope": 1322, "src": "403:58:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 479, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:8", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 484, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:8", "nodeType": "VariableDeclaration", "scope": 1322, "src": "467:49:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 482, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 487, "libraryName": {"id": 485, "name": "Types256", "nameLocations": ["529:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2044, "src": "529:8:8"}, "nodeType": "UsingForDirective", "src": "523:27:8", "typeName": {"id": 486, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 490, "libraryName": {"id": 488, "name": "Types64", "nameLocations": ["561:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1995, "src": "561:7:8"}, "nodeType": "UsingForDirective", "src": "555:25:8", "typeName": {"id": 489, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 494, "libraryName": {"id": 491, "name": "Counters", "nameLocations": ["591:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2118, "src": "591:8:8"}, "nodeType": "UsingForDirective", "src": "585:36:8", "typeName": {"id": 493, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 492, "name": "Counters.Counter", "nameLocations": ["604:8:8", "613:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "604:16:8"}, "referencedDeclaration": 2050, "src": "604:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 498, "libraryName": {"id": 495, "name": "OperatorLib", "nameLocations": ["632:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1832, "src": "632:11:8"}, "nodeType": "UsingForDirective", "src": "626:31:8", "typeName": {"id": 497, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 496, "name": "Operator", "nameLocations": ["648:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "648:8:8"}, "referencedDeclaration": 2147, "src": "648:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1337], "body": {"id": 619, "nodeType": "Block", "src": "881:895:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 508, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "895:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 509, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "902:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "895:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 511, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "907:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 512, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "913:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "907:26:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "895:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 521, "nodeType": "IfStatement", "src": "891:103:8", "trueBody": {"id": 520, "nodeType": "Block", "src": "935:59:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 515, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "956:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "972:9:8", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 2179, "src": "956:25:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "956:27:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 519, "nodeType": "RevertStatement", "src": "949:34:8"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 522, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1007:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 523, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "1013:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1032:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "1013:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1013:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1039:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "1013:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1007:46:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 534, "nodeType": "IfStatement", "src": "1003:112:8", "trueBody": {"id": 533, "nodeType": "Block", "src": "1055:60:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 528, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1076:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1092:10:8", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 2233, "src": "1076:26:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1076:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 532, "nodeType": "RevertStatement", "src": "1069:35:8"}]}}, {"assignments": [537], "declarations": [{"constant": false, "id": 537, "mutability": "mutable", "name": "s", "nameLocation": "1145:1:8", "nodeType": "VariableDeclaration", "scope": 619, "src": "1125:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 536, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 535, "name": "StorageData", "nameLocations": ["1125:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1125:11:8"}, "referencedDeclaration": 1889, "src": "1125:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 541, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 538, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1149:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1160:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1149:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1149:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1125:41:8"}, {"assignments": [543], "declarations": [{"constant": false, "id": 543, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1185:8:8", "nodeType": "VariableDeclaration", "scope": 619, "src": "1177:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 542, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1177:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 547, "initialValue": {"arguments": [{"id": 545, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1206:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 544, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1196:9:8", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1196:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1177:39:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 548, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1230:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1232:12:8", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1230:14:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 551, "indexExpression": {"id": 550, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "1245:8:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1230:24:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1258:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1230:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 559, "nodeType": "IfStatement", "src": "1226:81:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 554, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1268:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1284:21:8", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 2227, "src": "1268:37:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1268:39:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 558, "nodeType": "RevertStatement", "src": "1261:46:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 560, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1318:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1320:14:8", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 1888, "src": "1318:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1335:9:8", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2076, "src": "1318:26:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2050_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2050_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 566, "nodeType": "ExpressionStatement", "src": "1318:28:8"}, {"expression": {"id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 567, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1356:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 570, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1368:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 571, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1370:14:8", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 1888, "src": "1368:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 572, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1385:7:8", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2062, "src": "1368:24:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2050_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2050_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1368:26:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1361:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 568, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1361:6:8", "typeDescriptions": {}}}, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1361:34:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1356:39:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 576, "nodeType": "ExpressionStatement", "src": "1356:39:8"}, {"expression": {"id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 577, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1405:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 580, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1407:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1405:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 581, "indexExpression": {"id": 579, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1417:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1405:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 583, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1453:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1457:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1453:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 589, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "1527:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 588, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1520:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 587, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1520:6:8", "typeDescriptions": {}}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1520:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1549:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1561:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 585, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2234, "src": "1487:15:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$2234_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1503:8:8", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2130, "src": "1487:24:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$2130_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1513:5:8", "1542:5:8", "1552:7:8"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1487:77:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1594:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 596, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1614:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1618:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "1614:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 598, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1614:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1653:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 582, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2147, "src": "1423:8:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$2147_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 600, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1446:5:8", "1477:8:8", "1578:14:8", "1609:3:8", "1640:11:8"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1423:246:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1405:264:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 602, "nodeType": "ExpressionStatement", "src": "1405:264:8"}, {"expression": {"id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 603, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "1679:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1681:12:8", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1857, "src": "1679:14:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 607, "indexExpression": {"id": 605, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "1694:8:8", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1679:24:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 608, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1706:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1679:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 610, "nodeType": "ExpressionStatement", "src": "1679:29:8"}, {"eventCall": {"arguments": [{"id": 612, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 506, "src": "1738:2:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1742:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1746:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1742:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 615, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1754:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 616, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 502, "src": "1765:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 611, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1404, "src": "1724:13:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1724:45:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 618, "nodeType": "EmitStatement", "src": "1719:50:8"}]}, "functionSelector": "ff212c5c", "id": 620, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 504, "nodeType": "OverrideSpecifier", "overrides": [], "src": "852:8:8"}, "parameters": {"id": 503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 500, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "804:24:8", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 499, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 502, "mutability": "mutable", "name": "fee", "nameLocation": "838:3:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "830:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 501, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "830:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "803:39:8"}, "returnParameters": {"id": 507, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 506, "mutability": "mutable", "name": "id", "nameLocation": "877:2:8", "nodeType": "VariableDeclaration", "scope": 620, "src": "870:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 505, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "870:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "869:11:8"}, "scope": 1322, "src": "778:998:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1343], "body": {"id": 725, "nodeType": "Block", "src": "1843:738:8", "statements": [{"assignments": [628], "declarations": [{"constant": false, "id": 628, "mutability": "mutable", "name": "s", "nameLocation": "1873:1:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "1853:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 627, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 626, "name": "StorageData", "nameLocations": ["1853:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "1853:11:8"}, "referencedDeclaration": 1889, "src": "1853:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 632, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 629, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "1877:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1888:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "1877:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1877:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1853:41:8"}, {"assignments": [635], "declarations": [{"constant": false, "id": 635, "mutability": "mutable", "name": "operator", "nameLocation": "1920:8:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "1904:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 634, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 633, "name": "Operator", "nameLocations": ["1904:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "1904:8:8"}, "referencedDeclaration": 2147, "src": "1904:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 640, "initialValue": {"baseExpression": {"expression": {"id": 636, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "1931:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 637, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1933:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "1931:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 639, "indexExpression": {"id": 638, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "1943:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1931:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1904:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 641, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "1964:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1973:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "1964:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1964:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 645, "nodeType": "ExpressionStatement", "src": "1964:21:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 646, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "1996:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 648, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2005:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "1996:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1996:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 650, "nodeType": "ExpressionStatement", "src": "1996:25:8"}, {"assignments": [652], "declarations": [{"constant": false, "id": 652, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2038:14:8", "nodeType": "VariableDeclaration", "scope": 725, "src": "2031:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 651, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2031:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 656, "initialValue": {"expression": {"expression": {"id": 653, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2055:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2064:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2055:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2073:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "2055:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2031:49:8"}, {"expression": {"id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 657, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2091:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2100:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2091:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2109:5:8", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 2123, "src": "2091:23:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 662, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2117:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2091:27:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 664, "nodeType": "ExpressionStatement", "src": "2091:27:8"}, {"expression": {"id": 671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 665, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2128:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 668, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2137:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "2128:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 669, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2146:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "2128:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2156:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2128:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 672, "nodeType": "ExpressionStatement", "src": "2128:29:8"}, {"expression": {"id": 677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 673, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2167:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2176:14:8", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2133, "src": "2167:23:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 676, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2167:27:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 678, "nodeType": "ExpressionStatement", "src": "2167:27:8"}, {"expression": {"id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 679, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2204:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 681, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2213:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "2204:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 682, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2219:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2204:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 684, "nodeType": "ExpressionStatement", "src": "2204:16:8"}, {"condition": {"expression": {"id": 685, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2235:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 686, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2244:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2235:20:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 700, "nodeType": "IfStatement", "src": "2231:132:8", "trueBody": {"id": 699, "nodeType": "Block", "src": "2257:106:8", "statements": [{"expression": {"id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 687, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2271:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 689, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2280:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2271:20:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2294:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2271:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 692, "nodeType": "ExpressionStatement", "src": "2271:28:8"}, {"expression": {"id": 697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2313:39:8", "subExpression": {"baseExpression": {"expression": {"id": 693, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "2320:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 694, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2322:18:8", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2320:20:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 696, "indexExpression": {"id": 695, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2341:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2320:32:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 698, "nodeType": "ExpressionStatement", "src": "2313:39:8"}]}}, {"expression": {"id": 707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 701, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 628, "src": "2372:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 704, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2374:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2372:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 705, "indexExpression": {"id": 703, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2384:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2372:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 706, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "2398:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2372:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 708, "nodeType": "ExpressionStatement", "src": "2372:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 709, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "2421:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2438:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2421:18:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 720, "nodeType": "IfStatement", "src": "2417:116:8", "trueBody": {"id": 719, "nodeType": "Block", "src": "2441:92:8", "statements": [{"expression": {"arguments": [{"id": 713, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2486:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 714, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "2498:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2513:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "2498:21:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2498:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 712, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "2455:30:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2455:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 718, "nodeType": "ExpressionStatement", "src": "2455:67:8"}]}}, {"eventCall": {"arguments": [{"id": 722, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2563:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 721, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1409, "src": "2547:15:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2547:27:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 724, "nodeType": "EmitStatement", "src": "2542:32:8"}]}, "functionSelector": "2e168e0e", "id": 726, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1791:14:8", "nodeType": "FunctionDefinition", "overrides": {"id": 624, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1834:8:8"}, "parameters": {"id": 623, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 622, "mutability": "mutable", "name": "operatorId", "nameLocation": "1813:10:8", "nodeType": "VariableDeclaration", "scope": 726, "src": "1806:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 621, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1806:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1805:19:8"}, "returnParameters": {"id": 625, "nodeType": "ParameterList", "parameters": [], "src": "1843:0:8"}, "scope": 1322, "src": "1782:799:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1351], "body": {"id": 788, "nodeType": "Block", "src": "2666:407:8", "statements": [{"assignments": [735], "declarations": [{"constant": false, "id": 735, "mutability": "mutable", "name": "s", "nameLocation": "2696:1:8", "nodeType": "VariableDeclaration", "scope": 788, "src": "2676:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 734, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 733, "name": "StorageData", "nameLocations": ["2676:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "2676:11:8"}, "referencedDeclaration": 1889, "src": "2676:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 739, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 736, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "2700:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2711:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "2700:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2700:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2676:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 740, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2727:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 743, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2729:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2727:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 744, "indexExpression": {"id": 742, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2739:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2727:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2751:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "2727:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2727:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 747, "nodeType": "ExpressionStatement", "src": "2727:36:8"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 748, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "2778:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 751, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2801:1:8", "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": 750, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2793:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 749, "name": "address", "nodeType": "ElementaryTypeName", "src": "2793:7:8", "typeDescriptions": {}}}, "id": 752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2793:10:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2778:25:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 773, "nodeType": "Block", "src": "2879:67:8", "statements": [{"expression": {"id": 771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 764, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2893:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 767, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2895:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2893:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 768, "indexExpression": {"id": 766, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2905:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2893:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 769, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2917:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2893:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2931:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2893:42:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 772, "nodeType": "ExpressionStatement", "src": "2893:42:8"}]}, "id": 774, "nodeType": "IfStatement", "src": "2774:172:8", "trueBody": {"id": 763, "nodeType": "Block", "src": "2805:68:8", "statements": [{"expression": {"id": 761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 754, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2819:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 757, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2821:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "2819:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 758, "indexExpression": {"id": 756, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2831:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2819:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 759, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2843:11:8", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 2142, "src": "2819:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2857:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2819:43:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 762, "nodeType": "ExpressionStatement", "src": "2819:43:8"}]}}, {"expression": {"id": 781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 775, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2956:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 778, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2958:18:8", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2956:20:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 779, "indexExpression": {"id": 777, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "2977:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2956:32:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 780, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "2991:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2956:46:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 782, "nodeType": "ExpressionStatement", "src": "2956:46:8"}, {"eventCall": {"arguments": [{"id": 784, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 728, "src": "3042:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 785, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "3054:11:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 783, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1416, "src": "3017:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3017:49:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 787, "nodeType": "EmitStatement", "src": "3012:54:8"}]}, "functionSelector": "c90a7eab", "id": 789, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2596:20:8", "nodeType": "FunctionDefinition", "parameters": {"id": 731, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 728, "mutability": "mutable", "name": "operatorId", "nameLocation": "2624:10:8", "nodeType": "VariableDeclaration", "scope": 789, "src": "2617:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 727, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2617:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 730, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2644:11:8", "nodeType": "VariableDeclaration", "scope": 789, "src": "2636:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 729, "name": "address", "nodeType": "ElementaryTypeName", "src": "2636:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2616:40:8"}, "returnParameters": {"id": 732, "nodeType": "ParameterList", "parameters": [], "src": "2666:0:8"}, "scope": 1322, "src": "2587:486:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1359], "body": {"id": 930, "nodeType": "Block", "src": "3157:1226:8", "statements": [{"assignments": [799], "declarations": [{"constant": false, "id": 799, "mutability": "mutable", "name": "s", "nameLocation": "3187:1:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3167:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 798, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 797, "name": "StorageData", "nameLocations": ["3167:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "3167:11:8"}, "referencedDeclaration": 1889, "src": "3167:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 803, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 800, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "3191:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3202:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "3191:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3191:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3167:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 804, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "3218:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3220:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3218:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 808, "indexExpression": {"id": 806, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "3230:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3218:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3242:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "3218:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3218:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 811, "nodeType": "ExpressionStatement", "src": "3218:36:8"}, {"assignments": [814], "declarations": [{"constant": false, "id": 814, "mutability": "mutable", "name": "sp", "nameLocation": "3289:2:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3265:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 813, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 812, "name": "StorageProtocol", "nameLocations": ["3265:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1954, "src": "3265:15:8"}, "referencedDeclaration": 1954, "src": "3265:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 818, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 815, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "3294:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3313:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "3294:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3294:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3265:54:8"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 819, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3334:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3341:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3334:8:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 822, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3346:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 823, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "3352:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3346:26:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3334:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 829, "nodeType": "IfStatement", "src": "3330:62:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 826, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2179, "src": "3381:9:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 827, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3381:11:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 828, "nodeType": "RevertStatement", "src": "3374:18:8"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 830, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3406:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 831, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "3412:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 832, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3415:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "3412:17:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3406:23:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 837, "nodeType": "IfStatement", "src": "3402:48:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 834, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "3438:10:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3438:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 836, "nodeType": "RevertStatement", "src": "3431:19:8"}}, {"assignments": [839], "declarations": [{"constant": false, "id": 839, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3468:11:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3461:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 838, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 845, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 840, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "3482:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 841, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3484:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "3482:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 843, "indexExpression": {"id": 842, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "3494:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3482:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 844, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3506:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "3482:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3461:48:8"}, {"assignments": [847], "declarations": [{"constant": false, "id": 847, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3526:9:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3519:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 846, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3519:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 851, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 848, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "3538:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3542:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "3538:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3538:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3519:31:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 852, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3565:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 853, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3580:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3565:24:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 859, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3658:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3671:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3658:14:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 862, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3676:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3691:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3676:16:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3658:34:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 870, "nodeType": "IfStatement", "src": "3654:95:8", "trueBody": {"id": 869, "nodeType": "Block", "src": "3694:55:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 866, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "3715:21:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3715:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 868, "nodeType": "RevertStatement", "src": "3708:30:8"}]}}, "id": 871, "nodeType": "IfStatement", "src": "3561:188:8", "trueBody": {"id": 858, "nodeType": "Block", "src": "3591:57:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 855, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2219, "src": "3612:23:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3612:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 857, "nodeType": "RevertStatement", "src": "3605:32:8"}]}}, {"assignments": [873], "declarations": [{"constant": false, "id": 873, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3854:13:8", "nodeType": "VariableDeclaration", "scope": 930, "src": "3847:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 872, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3847:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 884, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 874, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3871:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 875, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3886:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 876, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "3905:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 877, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3908:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "3905:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3886:44:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 879, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3885:46:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3871:60:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 881, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3870:62:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 882, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3935:16:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3870:81:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3847:104:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 885, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3966:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 886, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 873, "src": "3978:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3966:25:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 891, "nodeType": "IfStatement", "src": "3962:63:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 888, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2181, "src": "4000:23:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4000:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 890, "nodeType": "RevertStatement", "src": "3993:32:8"}}, {"expression": {"id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 892, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 799, "src": "4036:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 895, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4038:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "4036:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 896, "indexExpression": {"id": 894, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "4064:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4036:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 898, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "4116:9:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 901, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4146:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4152:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4146:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 900, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4139:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 899, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4139:6:8", "typeDescriptions": {}}}, "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4139:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 904, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4165:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4168:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "4165:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4139:53:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 909, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4213:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4219:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4213:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 908, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4206:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 907, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4206:6:8", "typeDescriptions": {}}}, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4206:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 912, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4232:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 913, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4235:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1944, "src": "4232:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4206:53:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 915, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "4262:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 916, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4265:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1947, "src": "4262:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4206:83:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 897, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2157, "src": "4078:24:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 918, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4078:221:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "4036:263:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 920, "nodeType": "ExpressionStatement", "src": "4036:263:8"}, {"eventCall": {"arguments": [{"expression": {"id": 922, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4334:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4338:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "4334:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 924, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 791, "src": "4346:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 925, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4358:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4364:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "4358:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 927, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 793, "src": "4372:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 921, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4314:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 928, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4314:62:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 929, "nodeType": "EmitStatement", "src": "4309:67:8"}]}, "functionSelector": "b317c35f", "id": 931, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "3088:18:8", "nodeType": "FunctionDefinition", "overrides": {"id": 795, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3148:8:8"}, "parameters": {"id": 794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 791, "mutability": "mutable", "name": "operatorId", "nameLocation": "3114:10:8", "nodeType": "VariableDeclaration", "scope": 931, "src": "3107:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 790, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3107:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "fee", "nameLocation": "3134:3:8", "nodeType": "VariableDeclaration", "scope": 931, "src": "3126:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3126:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3106:32:8"}, "returnParameters": {"id": 796, "nodeType": "ParameterList", "parameters": [], "src": "3157:0:8"}, "scope": 1322, "src": "3079:1304:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1365], "body": {"id": 1040, "nodeType": "Block", "src": "4454:926:8", "statements": [{"assignments": [939], "declarations": [{"constant": false, "id": 939, "mutability": "mutable", "name": "s", "nameLocation": "4484:1:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4464:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 938, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 937, "name": "StorageData", "nameLocations": ["4464:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "4464:11:8"}, "referencedDeclaration": 1889, "src": "4464:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 943, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "4488:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4499:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "4488:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4488:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4464:41:8"}, {"assignments": [946], "declarations": [{"constant": false, "id": 946, "mutability": "mutable", "name": "operator", "nameLocation": "4531:8:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4515:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 945, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 944, "name": "Operator", "nameLocations": ["4515:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "4515:8:8"}, "referencedDeclaration": 2147, "src": "4515:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 951, "initialValue": {"baseExpression": {"expression": {"id": 947, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "4542:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 948, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4544:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "4542:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 950, "indexExpression": {"id": 949, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "4554:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4542:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4515:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 952, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "4575:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4584:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "4575:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4575:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 956, "nodeType": "ExpressionStatement", "src": "4575:21:8"}, {"assignments": [959], "declarations": [{"constant": false, "id": 959, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4639:16:8", "nodeType": "VariableDeclaration", "scope": 1040, "src": "4607:48:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 958, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 957, "name": "OperatorFeeChangeRequest", "nameLocations": ["4607:24:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2157, "src": "4607:24:8"}, "referencedDeclaration": 2157, "src": "4607:24:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 964, "initialValue": {"baseExpression": {"expression": {"id": 960, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "4658:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 961, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4660:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "4658:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 963, "indexExpression": {"id": 962, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "4686:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4658:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4607:90:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 965, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4712:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4729:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "4712:34:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4750:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4712:39:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 972, "nodeType": "IfStatement", "src": "4708:67:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 969, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2183, "src": "4760:13:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 970, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4760:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 971, "nodeType": "RevertStatement", "src": "4753:22:8"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 973, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4803:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4809:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4803:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 975, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4821:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 976, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4838:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "4821:34:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4803:52:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 978, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4859:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4865:9:8", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4859:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 980, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4877:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4894:15:8", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 2156, "src": "4877:32:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4859:50:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4803:106:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 988, "nodeType": "IfStatement", "src": "4786:194:8", "trueBody": {"id": 987, "nodeType": "Block", "src": "4920:60:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 984, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2185, "src": "4941:26:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4941:28:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 986, "nodeType": "RevertStatement", "src": "4934:35:8"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 989, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "4994:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 990, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5011:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "4994:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5015:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "4994:27:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4994:29:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 993, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1977, "src": "5026:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1977_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5045:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1976, "src": "5026:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1954_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5026:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1954_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5052:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1953, "src": "5026:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4994:72:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1001, "nodeType": "IfStatement", "src": "4990:97:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 998, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2233, "src": "5075:10:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5075:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1000, "nodeType": "RevertStatement", "src": "5068:19:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1002, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5098:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1004, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5107:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "5098:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5098:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1006, "nodeType": "ExpressionStatement", "src": "5098:25:8"}, {"expression": {"id": 1012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1007, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5133:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1009, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5142:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "5133:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1010, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "5148:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5165:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "5148:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5133:35:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1013, "nodeType": "ExpressionStatement", "src": "5133:35:8"}, {"expression": {"id": 1020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1014, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "5178:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5180:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5178:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1018, "indexExpression": {"id": 1016, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5190:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5178:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1019, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 946, "src": "5204:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5178:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1021, "nodeType": "ExpressionStatement", "src": "5178:34:8"}, {"expression": {"id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5223:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1022, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 939, "src": "5230:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5232:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5230:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1025, "indexExpression": {"id": 1024, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5258:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5230:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1027, "nodeType": "ExpressionStatement", "src": "5223:46:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1029, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5305:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5309:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "5305:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1031, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "5317:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1032, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5329:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5335:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "5329:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1034, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "5343:16:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1035, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5360:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2150, "src": "5343:20:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5364:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "5343:27:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5343:29:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1028, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1443, "src": "5285:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5285:88:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1039, "nodeType": "EmitStatement", "src": "5280:93:8"}]}, "functionSelector": "8932cee0", "id": 1041, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4398:18:8", "nodeType": "FunctionDefinition", "overrides": {"id": 935, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4445:8:8"}, "parameters": {"id": 934, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 933, "mutability": "mutable", "name": "operatorId", "nameLocation": "4424:10:8", "nodeType": "VariableDeclaration", "scope": 1041, "src": "4417:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 932, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4417:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4416:19:8"}, "returnParameters": {"id": 936, "nodeType": "ParameterList", "parameters": [], "src": "4454:0:8"}, "scope": 1322, "src": "4389:991:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1371], "body": {"id": 1085, "nodeType": "Block", "src": "5458:333:8", "statements": [{"assignments": [1049], "declarations": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "s", "nameLocation": "5488:1:8", "nodeType": "VariableDeclaration", "scope": 1085, "src": "5468:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1048, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1047, "name": "StorageData", "nameLocations": ["5468:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "5468:11:8"}, "referencedDeclaration": 1889, "src": "5468:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1053, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1050, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "5492:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5503:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "5492:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5492:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5468:41:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1054, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5519:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1057, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5521:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5519:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1058, "indexExpression": {"id": 1056, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5531:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5519:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5543:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "5519:34:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5519:36:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1061, "nodeType": "ExpressionStatement", "src": "5519:36:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1062, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5570:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1063, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5572:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5570:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1065, "indexExpression": {"id": 1064, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5598:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5570:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1066, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5610:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "5570:57:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5631:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5570:62:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1072, "nodeType": "IfStatement", "src": "5566:90:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1069, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2183, "src": "5641:13:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5641:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1071, "nodeType": "RevertStatement", "src": "5634:22:8"}}, {"expression": {"id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5667:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1073, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1049, "src": "5674:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1074, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5676:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "5674:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1076, "indexExpression": {"id": 1075, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5702:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5674:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1078, "nodeType": "ExpressionStatement", "src": "5667:46:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1080, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5761:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5765:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "5761:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1082, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "5773:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1079, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1432, "src": "5729:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5729:55:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1084, "nodeType": "EmitStatement", "src": "5724:60:8"}]}, "functionSelector": "23d68a6d", "id": 1086, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5395:25:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1045, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5449:8:8"}, "parameters": {"id": 1044, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1043, "mutability": "mutable", "name": "operatorId", "nameLocation": "5428:10:8", "nodeType": "VariableDeclaration", "scope": 1086, "src": "5421:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1042, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5421:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5420:19:8"}, "returnParameters": {"id": 1046, "nodeType": "ParameterList", "parameters": [], "src": "5458:0:8"}, "scope": 1322, "src": "5386:405:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1379], "body": {"id": 1170, "nodeType": "Block", "src": "5874:599:8", "statements": [{"assignments": [1096], "declarations": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "s", "nameLocation": "5904:1:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "5884:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1095, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1094, "name": "StorageData", "nameLocations": ["5884:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "5884:11:8"}, "referencedDeclaration": 1889, "src": "5884:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1100, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1097, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "5908:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5919:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "5908:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5908:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5884:41:8"}, {"assignments": [1103], "declarations": [{"constant": false, "id": 1103, "mutability": "mutable", "name": "operator", "nameLocation": "5951:8:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "5935:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1101, "name": "Operator", "nameLocations": ["5935:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "5935:8:8"}, "referencedDeclaration": 2147, "src": "5935:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1108, "initialValue": {"baseExpression": {"expression": {"id": 1104, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "5962:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1105, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5964:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "5962:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1107, "indexExpression": {"id": 1106, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "5974:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5962:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5935:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1109, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "5995:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1111, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6004:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "5995:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5995:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1113, "nodeType": "ExpressionStatement", "src": "5995:21:8"}, {"assignments": [1115], "declarations": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6034:12:8", "nodeType": "VariableDeclaration", "scope": 1170, "src": "6027:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1114, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6027:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1119, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1116, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "6049:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6053:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "6049:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6049:12:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6027:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1120, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6075:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1121, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6091:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6100:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "6091:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6075:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1127, "nodeType": "IfStatement", "src": "6071:64:8", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1124, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "6112:21:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6112:23:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1126, "nodeType": "RevertStatement", "src": "6105:30:8"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1128, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6146:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6155:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "6146:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6146:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1132, "nodeType": "ExpressionStatement", "src": "6146:25:8"}, {"expression": {"id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1133, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6181:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1135, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6190:3:8", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 2136, "src": "6181:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1136, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6196:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6181:27:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1138, "nodeType": "ExpressionStatement", "src": "6181:27:8"}, {"expression": {"id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1139, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6218:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6220:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "6218:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1143, "indexExpression": {"id": 1141, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6230:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6218:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1144, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1103, "src": "6244:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6218:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1146, "nodeType": "ExpressionStatement", "src": "6218:34:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1147, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6267:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1148, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6269:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "6267:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1150, "indexExpression": {"id": 1149, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6295:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6267:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1151, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6307:17:8", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 2153, "src": "6267:57:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6328:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6267:62:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1160, "nodeType": "IfStatement", "src": "6263:126:8", "trueBody": {"expression": {"id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6343:46:8", "subExpression": {"baseExpression": {"expression": {"id": 1154, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "6350:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6352:25:8", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 1874, "src": "6350:27:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$2157_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1157, "indexExpression": {"id": 1156, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6378:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6350:39:8", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$2157_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "ExpressionStatement", "src": "6343:46:8"}}, {"eventCall": {"arguments": [{"expression": {"id": 1162, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6424:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6428:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "6424:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1164, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "6436:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1165, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6448:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6454:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "6448:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1167, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "6462:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1161, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1443, "src": "6404:19:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6404:62:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1169, "nodeType": "EmitStatement", "src": "6399:67:8"}]}, "functionSelector": "190d82e4", "id": 1171, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5806:17:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1092, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5865:8:8"}, "parameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1088, "mutability": "mutable", "name": "operatorId", "nameLocation": "5831:10:8", "nodeType": "VariableDeclaration", "scope": 1171, "src": "5824:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1087, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5824:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1090, "mutability": "mutable", "name": "fee", "nameLocation": "5851:3:8", "nodeType": "VariableDeclaration", "scope": 1171, "src": "5843:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5843:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5823:32:8"}, "returnParameters": {"id": 1093, "nodeType": "ParameterList", "parameters": [], "src": "5874:0:8"}, "scope": 1322, "src": "5797:676:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1387], "body": {"id": 1184, "nodeType": "Block", "src": "6566:62:8", "statements": [{"expression": {"arguments": [{"id": 1180, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1173, "src": "6602:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1181, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6614:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1179, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "6576:25:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6576:45:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1183, "nodeType": "ExpressionStatement", "src": "6576:45:8"}]}, "functionSelector": "35f63767", "id": 1185, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6488:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1177, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6557:8:8"}, "parameters": {"id": 1176, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1173, "mutability": "mutable", "name": "operatorId", "nameLocation": "6520:10:8", "nodeType": "VariableDeclaration", "scope": 1185, "src": "6513:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6513:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1175, "mutability": "mutable", "name": "amount", "nameLocation": "6540:6:8", "nodeType": "VariableDeclaration", "scope": 1185, "src": "6532:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6532:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6512:35:8"}, "returnParameters": {"id": 1178, "nodeType": "ParameterList", "parameters": [], "src": "6566:0:8"}, "scope": 1322, "src": "6479:149:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1393], "body": {"id": 1196, "nodeType": "Block", "src": "6708:57:8", "statements": [{"expression": {"arguments": [{"id": 1192, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "6744:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6756:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1191, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "6718:25:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6718:40:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1195, "nodeType": "ExpressionStatement", "src": "6718:40:8"}]}, "functionSelector": "4bc93b64", "id": 1197, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6643:27:8", "nodeType": "FunctionDefinition", "overrides": {"id": 1189, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6699:8:8"}, "parameters": {"id": 1188, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1187, "mutability": "mutable", "name": "operatorId", "nameLocation": "6678:10:8", "nodeType": "VariableDeclaration", "scope": 1197, "src": "6671:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1186, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6671:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6670:19:8"}, "returnParameters": {"id": 1190, "nodeType": "ParameterList", "parameters": [], "src": "6708:0:8"}, "scope": 1322, "src": "6634:131:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1297, "nodeType": "Block", "src": "6874:753:8", "statements": [{"assignments": [1206], "declarations": [{"constant": false, "id": 1206, "mutability": "mutable", "name": "s", "nameLocation": "6904:1:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "6884:21:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1205, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1204, "name": "StorageData", "nameLocations": ["6884:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 1889, "src": "6884:11:8"}, "referencedDeclaration": 1889, "src": "6884:11:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1210, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1207, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1912, "src": "6908:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$1912_$", "typeString": "type(library SSVStorage)"}}, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6919:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1911, "src": "6908:15:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$1889_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6908:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6884:41:8"}, {"assignments": [1213], "declarations": [{"constant": false, "id": 1213, "mutability": "mutable", "name": "operator", "nameLocation": "6951:8:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "6935:24:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1212, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1211, "name": "Operator", "nameLocations": ["6935:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2147, "src": "6935:8:8"}, "referencedDeclaration": 2147, "src": "6935:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1218, "initialValue": {"baseExpression": {"expression": {"id": 1214, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "6962:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6964:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "6962:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1217, "indexExpression": {"id": 1216, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "6974:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6962:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6935:50:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1219, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "6995:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7004:10:8", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1735, "src": "6995:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6995:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1223, "nodeType": "ExpressionStatement", "src": "6995:21:8"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1224, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7027:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1226, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7036:14:8", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1652, "src": "7027:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$2147_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$2147_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7027:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1228, "nodeType": "ExpressionStatement", "src": "7027:25:8"}, {"assignments": [1230], "declarations": [{"constant": false, "id": 1230, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "7070:15:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "7063:22:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1229, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7063:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1231, "nodeType": "VariableDeclarationStatement", "src": "7063:22:8"}, {"assignments": [1233], "declarations": [{"constant": false, "id": 1233, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "7102:12:8", "nodeType": "VariableDeclaration", "scope": 1297, "src": "7095:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1232, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7095:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1237, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1234, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7117:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7124:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2024, "src": "7117:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7117:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "7095:37:8"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1238, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7147:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7157:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7147:11:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1241, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7162:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1242, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7171:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7162:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7180:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7162:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7190:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7162:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7147:44:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1254, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1201, "src": "7271:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7280:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7271:10:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1257, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7285:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7294:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7285:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7303:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7285:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1260, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1233, "src": "7314:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7285:41:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7271:55:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1271, "nodeType": "Block", "src": "7389:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1268, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2189, "src": "7410:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7410:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1270, "nodeType": "RevertStatement", "src": "7403:28:8"}]}, "id": 1272, "nodeType": "IfStatement", "src": "7267:175:8", "trueBody": {"id": 1267, "nodeType": "Block", "src": "7328:55:8", "statements": [{"expression": {"id": 1265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1263, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7342:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1264, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1233, "src": "7360:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7342:30:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1266, "nodeType": "ExpressionStatement", "src": "7342:30:8"}]}}, "id": 1273, "nodeType": "IfStatement", "src": "7143:299:8", "trueBody": {"id": 1253, "nodeType": "Block", "src": "7193:68:8", "statements": [{"expression": {"id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1247, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7207:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1248, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7225:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7234:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7225:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7243:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7225:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7207:43:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1252, "nodeType": "ExpressionStatement", "src": "7207:43:8"}]}}, {"expression": {"id": 1280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1274, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7452:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1277, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7461:8:8", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2146, "src": "7452:17:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$2130_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1278, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7470:7:8", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 2129, "src": "7452:25:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1279, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7481:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7452:44:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1281, "nodeType": "ExpressionStatement", "src": "7452:44:8"}, {"expression": {"id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1282, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "7507:1:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$1889_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7509:9:8", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "7507:11:8", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$2147_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1286, "indexExpression": {"id": 1284, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "7519:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7507:23:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1287, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "7533:8:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7507:34:8", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$2147_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1289, "nodeType": "ExpressionStatement", "src": "7507:34:8"}, {"expression": {"arguments": [{"id": 1291, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1199, "src": "7583:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1292, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "7595:15:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7611:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1994, "src": "7595:22:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7595:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1290, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7552:30:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7552:68:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1296, "nodeType": "ExpressionStatement", "src": "7552:68:8"}]}, "id": 1298, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6805:25:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1202, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1199, "mutability": "mutable", "name": "operatorId", "nameLocation": "6838:10:8", "nodeType": "VariableDeclaration", "scope": 1298, "src": "6831:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6831:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1201, "mutability": "mutable", "name": "amount", "nameLocation": "6858:6:8", "nodeType": "VariableDeclaration", "scope": 1298, "src": "6850:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1200, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6850:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6830:35:8"}, "returnParameters": {"id": 1203, "nodeType": "ParameterList", "parameters": [], "src": "6874:0:8"}, "scope": 1322, "src": "6796:831:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1320, "nodeType": "Block", "src": "7716:124:8", "statements": [{"expression": {"arguments": [{"expression": {"id": 1308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7750:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7754:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "7750:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1310, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "7762:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1305, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1589, "src": "7726:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$1589_$", "typeString": "type(library CoreLib)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7734:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1500, "src": "7726:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7726:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "7726:43:8"}, {"eventCall": {"arguments": [{"expression": {"id": 1314, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7802:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7806:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "7802:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1316, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1300, "src": "7814:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1317, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "7826:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1313, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1451, "src": "7784:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7784:49:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1319, "nodeType": "EmitStatement", "src": "7779:54:8"}]}, "id": 1321, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7642:30:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1303, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1300, "mutability": "mutable", "name": "operatorId", "nameLocation": "7680:10:8", "nodeType": "VariableDeclaration", "scope": 1321, "src": "7673:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1299, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7673:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1302, "mutability": "mutable", "name": "amount", "nameLocation": "7700:6:8", "nodeType": "VariableDeclaration", "scope": 1321, "src": "7692:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1301, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7692:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7672:35:8"}, "returnParameters": {"id": 1304, "nodeType": "ParameterList", "parameters": [], "src": "7716:0:8"}, "scope": 1322, "src": "7633:207:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1323, "src": "358:7484:8", "usedErrors": [2175, 2177, 2179, 2181, 2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2215, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233]}], "src": "45:7798:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2312]}, "id": 2313, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2236, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2237, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2312, "linearizedBaseContracts": [2312], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2238, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2246, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 2245, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2240, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2239, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2242, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2241, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2244, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 2246, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 2247, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2255, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 2254, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2249, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2248, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2251, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2250, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2253, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 2255, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2252, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 2256, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2261, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 2260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2259, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2261, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 2312, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2262, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2269, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2264, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 2269, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2263, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2269, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 2312, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2270, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2279, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2275, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2272, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2271, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2274, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2273, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 2278, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2277, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2279, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2276, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 2312, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2280, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2289, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2285, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2282, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2281, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2284, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2283, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 2288, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2287, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2289, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 2312, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2290, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2299, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2292, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2291, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2294, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2297, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2299, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2296, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 2312, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2300, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2311, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2302, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2301, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2304, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2306, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 2310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2309, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2311, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2308, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 2312, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2313, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2118]}, "id": 2119, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2046, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2047, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2118, "linearizedBaseContracts": [2118], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2050, "members": [{"constant": false, "id": 2049, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 2050, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 2118, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 2061, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 2058, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2053, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2057, "id": 2060, "nodeType": "Return", "src": "911:21:10"}]}, "id": 2062, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2054, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2053, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 2062, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2052, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2051, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "844:7:10"}, "referencedDeclaration": 2050, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 2057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2056, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2062, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 2118, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2075, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 2074, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 2072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2068, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2065, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2071, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2073, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 2076, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2066, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2065, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 2076, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2064, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2063, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "964:7:10"}, "referencedDeclaration": 2050, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 2067, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 2118, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2103, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [2083], "declarations": [{"constant": false, "id": 2083, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 2103, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2082, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2086, "initialValue": {"expression": {"id": 2084, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2085, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2088, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2089, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2091, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2087, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2093, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 2102, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 2100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2094, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2079, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2096, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2097, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2101, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 2104, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2080, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2079, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 2104, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2078, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2077, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1093:7:10"}, "referencedDeclaration": 2050, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 2081, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 2118, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2116, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 2114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2110, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2107, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2049, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2115, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 2117, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2108, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2107, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 2117, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2106, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2105, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2050, "src": "1324:7:10"}, "referencedDeclaration": 2050, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2050_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 2109, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 2118, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2119, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Operators.sol:Operators": {"srcmap": "100:3949:7:-:0;;;546:397;;;;;;;;;;570:26;599:25;:23;;;;;:25;;:::i;:::-;570:54;;670:6;634:2;:33;;;:42;;;;;;;;;;;;;;;;;;720:37;728:19;720:35;;;;;:37;;:::i;:::-;686:2;:31;;;:71;;;;;;;;;;;;;;;;;;799:3;767:2;:29;;;:35;;;;;;;;;;;;;;;;;;842:6;812:2;:27;;;:36;;;;;;;;;;;;;;;;;;888:6;858:2;:27;;;:36;;;;;;;;;;;;;;;;;;932:4;904:2;:25;;;:32;;;;;;;;;;;;;;;;;;560:383;100:3949;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;488:169::-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:410::-;516:7;539:20;557:1;539:20;:::i;:::-;534:25;;573:20;591:1;573:20;:::i;:::-;568:25;;628:1;625;621:9;650:30;668:11;650:30;:::i;:::-;639:41;;829:1;820:7;816:15;813:1;810:22;790:1;783:9;763:83;740:139;;859:18;;:::i;:::-;740:139;524:362;476:410;;;;:::o;892:169::-;976:11;1010:6;1005:3;998:19;1050:4;1045:3;1041:14;1026:29;;892:169;;;;:::o;1067:168::-;1207:20;1203:1;1195:6;1191:14;1184:44;1067:168;:::o;1241:366::-;1383:3;1404:67;1468:2;1463:3;1404:67;:::i;:::-;1397:74;;1480:93;1569:3;1480:93;:::i;:::-;1598:2;1593:3;1589:12;1582:19;;1241:366;;;:::o;1613:419::-;1779:4;1817:2;1806:9;1802:18;1794:26;;1866:9;1860:4;1856:20;1852:1;1841:9;1837:17;1830:47;1894:131;2020:4;1894:131;:::i;:::-;1886:139;;1613:419;;;:::o;2038:180::-;2086:77;2083:1;2076:88;2183:4;2180:1;2173:15;2207:4;2204:1;2197:15;2224:185;2264:1;2281:20;2299:1;2281:20;:::i;:::-;2276:25;;2315:20;2333:1;2315:20;:::i;:::-;2310:25;;2354:1;2344:35;;2359:18;;:::i;:::-;2344:35;2401:1;2398;2394:9;2389:14;;2224:185;;;;:::o;2415:176::-;2447:1;2464:20;2482:1;2464:20;:::i;:::-;2459:25;;2498:20;2516:1;2498:20;:::i;:::-;2493:25;;2537:1;2527:35;;2542:18;;:::i;:::-;2527:35;2583:1;2580;2576:9;2571:14;;2415:176;;;;:::o;2597:172::-;2737:24;2733:1;2725:6;2721:14;2714:48;2597:172;:::o;2775:366::-;2917:3;2938:67;3002:2;2997:3;2938:67;:::i;:::-;2931:74;;3014:93;3103:3;3014:93;:::i;:::-;3132:2;3127:3;3123:12;3116:19;;2775:366;;;:::o;3147:419::-;3313:4;3351:2;3340:9;3336:18;3328:26;;3400:9;3394:4;3390:20;3386:1;3375:9;3371:17;3364:47;3428:131;3554:4;3428:131;:::i;:::-;3420:139;;3147:419;;;:::o;100:3949:7:-;;;;;;;", "srcmap-runtime": "100:3949:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;949:762;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1931:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:676:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2859:349:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5386:405:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6479:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2638:162:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2462:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:131:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1717:208:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4389:991:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3214:567:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3079:1304:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2587:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3787:260:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:998:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:762:7;1064:1;1044:9;;:16;;:21;;:42;;;;;1085:1;1069:17;;:9;;1079:1;1069:12;;;;;;;:::i;:::-;;;;;;;;;;:17;;;;;1044:42;1036:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;1136:16;105:10:6;1155:7:7;:25;;;;:::i;:::-;1136:44;;1191:12;105:10:6;1248:1:7;105:10:6;251:11:7;1207:38;;;;;;:::i;:::-;:42;;;;:::i;:::-;1206:62;;;;:::i;:::-;1191:77;;1278:12;1293:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1278:55;;;;1358:4;1352:3;:10;:24;;;;;1372:4;1366:3;:10;1352:24;1344:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10:6;1415:3:7;:21;;;;:::i;:::-;1409:27;;1511:1;1455:17;:15;:17::i;:::-;:30;;:52;1496:9;;1486:20;;;;;;;:::i;:::-;;;;;;;;1455:52;;;;;;;;;;;;;;;;;;;;;:57;;;1447:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;1547:4;:21;;;1569:9;;1580:3;1547:37;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1543:162;;1688:5;1681:13;;;;:::i;:::-;;1543:162;;;1627:5;1638:10;1627:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:75;1543:162;1026:685;;;949:762;;;:::o;1931:525::-;2035:5;:12;;;;2015:10;:33;;;;:::i;:::-;2002:46;;2059:25;2087:17;:15;:17::i;:::-;:27;;:39;2115:10;2087:39;;;;;;;;;;;;;;;2059:67;;2171:1;2144:8;:17;;:23;;;;;;;;;;;;:28;;;2136:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2212:10;2225:8;:12;;;;;;;;;;;;2212:25;;2248:20;311:6;2298:25;:23;:25::i;:::-;:48;;;;;;;;;;;;311:6;2279:67;;;;:::i;:::-;2272:3;:75;;;;:::i;:::-;2271:108;;;;:::i;:::-;2248:131;;2390:4;:23;;;2414:10;2426:22;:13;:20;;;:22::i;:::-;2390:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1992:464;;;1931:525;:::o;5797:676:8:-;5884:21;5908:17;:15;:17::i;:::-;5884:41;;5935:24;5962:1;:11;;:23;5974:10;5962:23;;;;;;;;;;;;;;;5935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:21;:8;:19;:21::i;:::-;6027:19;6049:12;:3;:10;:12::i;:::-;6027:34;;6091:8;:12;;;6075:28;;:12;:28;;;6071:64;;6112:23;;;;;;;;;;;;;;6071:64;6146:25;:8;:23;:25::i;:::-;6196:12;6181:8;:12;;:27;;;;;;;;;;;6244:8;6218:1;:11;;:23;6230:10;6218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:1;6267;:27;;:39;6295:10;6267:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6263:126;;6350:1;:27;;:39;6378:10;6350:39;;;;;;;;;;;;;;;;6343:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6263:126;6436:10;6404:62;;6424:10;6404:62;;;6448:12;6462:3;6404:62;;;;;;;:::i;:::-;;;;;;;;5874:599;;;5797:676;;:::o;2859:349:7:-;2973:5;:12;;;;2953:10;:33;;;;:::i;:::-;2940:46;;2997:25;3025:17;:15;:17::i;:::-;:27;;:39;3053:10;3025:39;;;;;;;;;;;;;;;2997:67;;3107:1;3080:8;:17;;:23;;;;;;;;;;;;:28;;;3079:54;;;;;3113:8;:20;;;;;;;;;;;;3079:54;3075:126;;;3152:49;3168:10;3180:8;:20;;;;;;;;;;;;3152:49;;;;;;;:::i;:::-;;;;;;;;3075:126;2930:278;2859:349;:::o;5386:405:8:-;5468:21;5492:17;:15;:17::i;:::-;5468:41;;5519:36;:1;:11;;:23;5531:10;5519:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5631:1;5570;:27;;:39;5598:10;5570:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5566:90;;5641:15;;;;;;;;;;;;;;5566:90;5674:1;:27;;:39;5702:10;5674:39;;;;;;;;;;;;;;;;5667:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:10;5729:55;;5761:10;5729:55;;;;;;;;;;;;5458:333;5386:405;:::o;1782:799::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2235:8;:20;;;2231:132;;;2294:5;2271:8;:20;;:28;;;;;;;;;;;2320:1;:20;;:32;2341:10;2320:32;;;;;;;;;;;;;;;;2313:39;;;;;;;;;;;2231:132;2398:8;2372:1;:11;;:23;2384:10;2372:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:1;2421:14;:18;;;2417:116;;;2455:67;2486:10;2498:23;:14;:21;;;:23::i;:::-;2455:30;:67::i;:::-;2417:116;2563:10;2547:27;;;;;;;;;;;;1843:738;;;1782:799;:::o;6479:149::-;6576:45;6602:10;6614:6;6576:25;:45::i;:::-;6479:149;;:::o;2638:162:7:-;2738:5;:12;;;;2718:10;:33;;;;:::i;:::-;2705:46;;2762:4;:19;;;2782:10;2762:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:162;:::o;2462:170::-;2566:5;:12;;;;2546:10;:33;;;;:::i;:::-;2533:46;;2590:4;:23;;;2614:10;2590:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2462:170;:::o;6634:131:8:-;6718:40;6744:10;6756:1;6718:25;:40::i;:::-;6634:131;:::o;1717:208:7:-;1844:5;:12;;;;1824:10;:33;;;;:::i;:::-;1811:46;;1868:4;:25;;;1894:10;1906:11;1868:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:208;;:::o;4389:991:8:-;4464:21;4488:17;:15;:17::i;:::-;4464:41;;4515:24;4542:1;:11;;:23;4554:10;4542:23;;;;;;;;;;;;;;;4515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:21;:8;:19;:21::i;:::-;4607:48;4658:1;:27;;:39;4686:10;4658:39;;;;;;;;;;;;;;;4607:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4750:1;4712:16;:34;;;:39;;;4708:67;;4760:15;;;;;;;;;;;;;;4708:67;4821:16;:34;;;4803:52;;:15;:52;:106;;;;4877:16;:32;;;4859:50;;:15;:50;4803:106;4786:194;;;4941:28;;;;;;;;;;;;;;4786:194;5026:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4994:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4990:97;;;5075:12;;;;;;;;;;;;;;4990:97;5098:25;:8;:23;:25::i;:::-;5148:16;:20;;;5133:8;:12;;:35;;;;;;;;;;;5204:8;5178:1;:11;;:23;5190:10;5178:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5230:1;:27;;:39;5258:10;5230:39;;;;;;;;;;;;;;;;5223:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:10;5285:88;;5305:10;5285:88;;;5329:12;5343:29;:16;:20;;;:27;;;:29::i;:::-;5285:88;;;;;;;:::i;:::-;;;;;;;;4454:926;;;4389:991;:::o;3214:567:7:-;3349:1;3333:5;:12;;;;3326:24;;;;:::i;:::-;3312:10;:39;;;;:::i;:::-;3307:1;:45;;;;:::i;:::-;3294:58;;3363:25;3391:17;:15;:17::i;:::-;:27;;:39;3419:10;3391:39;;;;;;;;;;;;;;;3363:67;;3534:1;3507:8;:17;;:23;;;;;;;;;;;;:28;;;3506:126;;;;;3630:1;3553:17;:15;:17::i;:::-;:43;;:55;3597:10;3553:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;3506:126;3441:334;;;3662:102;3678:10;3690:17;:15;:17::i;:::-;:43;;:55;3734:10;3690:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;3662:102;;;;;;;:::i;:::-;;;;;;;;3441:334;3284:497;3214:567;:::o;3079:1304:8:-;3167:21;3191:17;:15;:17::i;:::-;3167:41;;3218:36;:1;:11;;:23;3230:10;3218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3265:26;3294:25;:23;:25::i;:::-;3265:54;;3341:1;3334:3;:8;;:38;;;;;450:11;3346:26;;:3;:26;3334:38;3330:62;;;3381:11;;;;;;;;;;;;;;3330:62;3412:2;:17;;;;;;;;;;;;3406:23;;:3;:23;3402:48;;;3438:12;;;;;;;;;;;;;;3402:48;3461:18;3482:1;:11;;:23;3494:10;3482:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3461:48;;3519:16;3538:12;:3;:10;:12::i;:::-;3519:31;;3580:9;3565:24;;:11;:24;;;3561:188;;3612:25;;;;;;;;;;;;;;3561:188;3671:1;3658:9;:14;;;;:34;;;;;3691:1;3676:11;:16;;;3658:34;3654:95;;;3715:23;;;;;;;;;;;;;;3654:95;3847:20;510:6;3905:2;:25;;;;;;;;;;;;510:6;3886:44;;;;:::i;:::-;3871:11;:60;;;;:::i;:::-;3870:81;;;;:::i;:::-;3847:104;;3978:13;3966:25;;:9;:25;;;3962:63;;;4000:25;;;;;;;;;;;;;;3962:63;4078:221;;;;;;;;4116:9;4078:221;;;;;;4165:2;:27;;;;;;;;;;;;4146:15;4139:53;;;;:::i;:::-;4078:221;;;;;;4262:2;:27;;;;;;;;;;;;4232:2;:27;;;;;;;;;;;;4213:15;4206:53;;;;:::i;:::-;:83;;;;:::i;:::-;4078:221;;;;;4036:1;:27;;:39;4064:10;4036:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4346:10;4314:62;;4334:10;4314:62;;;4358:12;4372:3;4314:62;;;;;;;:::i;:::-;;;;;;;;3157:1226;;;;;3079:1304;;:::o;2587:486::-;2676:21;2700:17;:15;:17::i;:::-;2676:41;;2727:36;:1;:11;;:23;2739:10;2727:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2801:1;2778:25;;:11;:25;;;2774:172;;2857:5;2819:1;:11;;:23;2831:10;2819:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2774:172;;;2931:4;2893:1;:11;;:23;2905:10;2893:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2774:172;2991:11;2956:1;:20;;:32;2977:10;2956:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3042:10;3017:49;;;3054:11;3017:49;;;;;;:::i;:::-;;;;;;;;2666:407;2587:486;;:::o;3787:260:7:-;3844:4;3865:9;3860:181;3880:5;:12;;;;3876:1;:16;3860:181;;;3913:25;3941:17;:15;:17::i;:::-;:27;;:37;3969:5;3975:1;3969:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3941:37;;;;;;;;;;;;;;;3913:65;;4028:1;3999:8;:17;;:25;;;;;;;;;;;;:30;;;3992:38;;;;:::i;:::-;;3899:142;3894:3;;;;;:::i;:::-;;;;3860:181;;;;3787:260;:::o;778:998:8:-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;996:255:3:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;7633:207:8:-;7726:43;7750:10;7762:6;7726:23;:43::i;:::-;7814:10;7784:49;;7802:10;7784:49;;;7826:6;7784:49;;;;;;:::i;:::-;;;;;;;;7633:207;;:::o;6796:831::-;6884:21;6908:17;:15;:17::i;:::-;6884:41;;6935:24;6962:1;:11;;:23;6974:10;6962:23;;;;;;;;;;;;;;;6935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6995:21;:8;:19;:21::i;:::-;7027:25;:8;:23;:25::i;:::-;7063:22;7095:19;7117:15;:6;:13;:15::i;:::-;7095:37;;7157:1;7147:6;:11;:44;;;;;7190:1;7162:8;:17;;;:25;;;:29;;;7147:44;7143:299;;;7225:8;:17;;;:25;;;7207:43;;7143:299;;;7280:1;7271:6;:10;:55;;;;;7314:12;7285:41;;:8;:17;;;:25;;;:41;;;;7271:55;7267:175;;;7360:12;7342:30;;7267:175;;;7410:21;;;;;;;;;;;;;;7267:175;7143:299;7481:15;7452:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7533:8;7507:1;:11;;:23;7519:10;7507:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:68;7583:10;7595:24;:15;:22;;;:24::i;:::-;7552:30;:68::i;:::-;6874:753;;;;6796:831;;:::o;945:123:10:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:11:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:77::-;1311:7;1340:5;1329:16;;1274:77;;;:::o;1357:122::-;1430:24;1448:5;1430:24;:::i;:::-;1423:5;1420:35;1410:63;;1469:1;1466;1459:12;1410:63;1357:122;:::o;1485:139::-;1531:5;1569:6;1556:20;1547:29;;1585:33;1612:5;1585:33;:::i;:::-;1485:139;;;;:::o;1630:672::-;1709:6;1717;1725;1774:2;1762:9;1753:7;1749:23;1745:32;1742:119;;;1780:79;;:::i;:::-;1742:119;1928:1;1917:9;1913:17;1900:31;1958:18;1950:6;1947:30;1944:117;;;1980:79;;:::i;:::-;1944:117;2093:64;2149:7;2140:6;2129:9;2125:22;2093:64;:::i;:::-;2075:82;;;;1871:296;2206:2;2232:53;2277:7;2268:6;2257:9;2253:22;2232:53;:::i;:::-;2222:63;;2177:118;1630:672;;;;;:::o;2308:101::-;2344:7;2384:18;2377:5;2373:30;2362:41;;2308:101;;;:::o;2415:120::-;2487:23;2504:5;2487:23;:::i;:::-;2480:5;2477:34;2467:62;;2525:1;2522;2515:12;2467:62;2415:120;:::o;2541:137::-;2586:5;2624:6;2611:20;2602:29;;2640:32;2666:5;2640:32;:::i;:::-;2541:137;;;;:::o;2684:327::-;2742:6;2791:2;2779:9;2770:7;2766:23;2762:32;2759:119;;;2797:79;;:::i;:::-;2759:119;2917:1;2942:52;2986:7;2977:6;2966:9;2962:22;2942:52;:::i;:::-;2932:62;;2888:116;2684:327;;;;:::o;3017:472::-;3084:6;3092;3141:2;3129:9;3120:7;3116:23;3112:32;3109:119;;;3147:79;;:::i;:::-;3109:119;3267:1;3292:52;3336:7;3327:6;3316:9;3312:22;3292:52;:::i;:::-;3282:62;;3238:116;3393:2;3419:53;3464:7;3455:6;3444:9;3440:22;3419:53;:::i;:::-;3409:63;;3364:118;3017:472;;;;;:::o;3495:126::-;3532:7;3572:42;3565:5;3561:54;3550:65;;3495:126;;;:::o;3627:96::-;3664:7;3693:24;3711:5;3693:24;:::i;:::-;3682:35;;3627:96;;;:::o;3729:122::-;3802:24;3820:5;3802:24;:::i;:::-;3795:5;3792:35;3782:63;;3841:1;3838;3831:12;3782:63;3729:122;:::o;3857:139::-;3903:5;3941:6;3928:20;3919:29;;3957:33;3984:5;3957:33;:::i;:::-;3857:139;;;;:::o;4002:472::-;4069:6;4077;4126:2;4114:9;4105:7;4101:23;4097:32;4094:119;;;4132:79;;:::i;:::-;4094:119;4252:1;4277:52;4321:7;4312:6;4301:9;4297:22;4277:52;:::i;:::-;4267:62;;4223:116;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;4002:472;;;;;:::o;4480:90::-;4514:7;4557:5;4550:13;4543:21;4532:32;;4480:90;;;:::o;4576:109::-;4657:21;4672:5;4657:21;:::i;:::-;4652:3;4645:34;4576:109;;:::o;4691:210::-;4778:4;4816:2;4805:9;4801:18;4793:26;;4829:65;4891:1;4880:9;4876:17;4867:6;4829:65;:::i;:::-;4691:210;;;;:::o;4907:115::-;4992:23;5009:5;4992:23;:::i;:::-;4987:3;4980:36;4907:115;;:::o;5028:218::-;5119:4;5157:2;5146:9;5142:18;5134:26;;5170:69;5236:1;5225:9;5221:17;5212:6;5170:69;:::i;:::-;5028:218;;;;:::o;5252:180::-;5300:77;5297:1;5290:88;5397:4;5394:1;5387:15;5421:4;5418:1;5411:15;5438:169;5522:11;5556:6;5551:3;5544:19;5596:4;5591:3;5587:14;5572:29;;5438:169;;;;:::o;5613:221::-;5753:34;5749:1;5741:6;5737:14;5730:58;5822:4;5817:2;5809:6;5805:15;5798:29;5613:221;:::o;5840:366::-;5982:3;6003:67;6067:2;6062:3;6003:67;:::i;:::-;5996:74;;6079:93;6168:3;6079:93;:::i;:::-;6197:2;6192:3;6188:12;6181:19;;5840:366;;;:::o;6212:419::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6465:9;6459:4;6455:20;6451:1;6440:9;6436:17;6429:47;6493:131;6619:4;6493:131;:::i;:::-;6485:139;;6212:419;;;:::o;6637:180::-;6685:77;6682:1;6675:88;6782:4;6779:1;6772:15;6806:4;6803:1;6796:15;6823:410;6863:7;6886:20;6904:1;6886:20;:::i;:::-;6881:25;;6920:20;6938:1;6920:20;:::i;:::-;6915:25;;6975:1;6972;6968:9;6997:30;7015:11;6997:30;:::i;:::-;6986:41;;7176:1;7167:7;7163:15;7160:1;7157:22;7137:1;7130:9;7110:83;7087:139;;7206:18;;:::i;:::-;7087:139;6871:362;6823:410;;;;:::o;7239:191::-;7279:3;7298:20;7316:1;7298:20;:::i;:::-;7293:25;;7332:20;7350:1;7332:20;:::i;:::-;7327:25;;7375:1;7372;7368:9;7361:16;;7396:3;7393:1;7390:10;7387:36;;;7403:18;;:::i;:::-;7387:36;7239:191;;;;:::o;7436:194::-;7476:4;7496:20;7514:1;7496:20;:::i;:::-;7491:25;;7530:20;7548:1;7530:20;:::i;:::-;7525:25;;7574:1;7571;7567:9;7559:17;;7598:1;7592:4;7589:11;7586:37;;;7603:18;;:::i;:::-;7586:37;7436:194;;;;:::o;7636:180::-;7684:77;7681:1;7674:88;7781:4;7778:1;7771:15;7805:4;7802:1;7795:15;7822:185;7862:1;7879:20;7897:1;7879:20;:::i;:::-;7874:25;;7913:20;7931:1;7913:20;:::i;:::-;7908:25;;7952:1;7942:35;;7957:18;;:::i;:::-;7942:35;7999:1;7996;7992:9;7987:14;;7822:185;;;;:::o;8013:168::-;8153:20;8149:1;8141:6;8137:14;8130:44;8013:168;:::o;8187:366::-;8329:3;8350:67;8414:2;8409:3;8350:67;:::i;:::-;8343:74;;8426:93;8515:3;8426:93;:::i;:::-;8544:2;8539:3;8535:12;8528:19;;8187:366;;;:::o;8559:419::-;8725:4;8763:2;8752:9;8748:18;8740:26;;8812:9;8806:4;8802:20;8798:1;8787:9;8783:17;8776:47;8840:131;8966:4;8840:131;:::i;:::-;8832:139;;8559:419;;;:::o;8984:147::-;9085:11;9122:3;9107:18;;8984:147;;;;:::o;9137:146::-;9234:6;9229:3;9224;9211:30;9275:1;9266:6;9261:3;9257:16;9250:27;9137:146;;;:::o;9311:327::-;9425:3;9446:88;9527:6;9522:3;9446:88;:::i;:::-;9439:95;;9544:56;9593:6;9588:3;9581:5;9544:56;:::i;:::-;9625:6;9620:3;9616:16;9609:23;;9311:327;;;;;:::o;9644:291::-;9784:3;9806:103;9905:3;9896:6;9888;9806:103;:::i;:::-;9799:110;;9926:3;9919:10;;9644:291;;;;;:::o;9941:165::-;10081:17;10077:1;10069:6;10065:14;10058:41;9941:165;:::o;10112:366::-;10254:3;10275:67;10339:2;10334:3;10275:67;:::i;:::-;10268:74;;10351:93;10440:3;10351:93;:::i;:::-;10469:2;10464:3;10460:12;10453:19;;10112:366;;;:::o;10484:419::-;10650:4;10688:2;10677:9;10673:18;10665:26;;10737:9;10731:4;10727:20;10723:1;10712:9;10708:17;10701:47;10765:131;10891:4;10765:131;:::i;:::-;10757:139;;10484:419;;;:::o;10909:168::-;10992:11;11026:6;11021:3;11014:19;11066:4;11061:3;11057:14;11042:29;;10909:168;;;;:::o;11083:102::-;11124:6;11175:2;11171:7;11166:2;11159:5;11155:14;11151:28;11141:38;;11083:102;;;:::o;11213:314::-;11309:3;11330:70;11393:6;11388:3;11330:70;:::i;:::-;11323:77;;11410:56;11459:6;11454:3;11447:5;11410:56;:::i;:::-;11491:29;11513:6;11491:29;:::i;:::-;11486:3;11482:39;11475:46;;11213:314;;;;;:::o;11533:118::-;11620:24;11638:5;11620:24;:::i;:::-;11615:3;11608:37;11533:118;;:::o;11657:439::-;11806:4;11844:2;11833:9;11829:18;11821:26;;11893:9;11887:4;11883:20;11879:1;11868:9;11864:17;11857:47;11921:86;12002:4;11993:6;11985;11921:86;:::i;:::-;11913:94;;12017:72;12085:2;12074:9;12070:18;12061:6;12017:72;:::i;:::-;11657:439;;;;;;:::o;12102:141::-;12158:5;12189:6;12183:13;12174:22;;12205:32;12231:5;12205:32;:::i;:::-;12102:141;;;;:::o;12249:349::-;12318:6;12367:2;12355:9;12346:7;12342:23;12338:32;12335:119;;;12373:79;;:::i;:::-;12335:119;12493:1;12518:63;12573:7;12564:6;12553:9;12549:22;12518:63;:::i;:::-;12508:73;;12464:127;12249:349;;;;:::o;12604:180::-;12652:77;12649:1;12642:88;12749:4;12746:1;12739:15;12773:4;12770:1;12763:15;12790:173;12821:1;12838:19;12855:1;12838:19;:::i;:::-;12833:24;;12871:19;12888:1;12871:19;:::i;:::-;12866:24;;12909:1;12899:35;;12914:18;;:::i;:::-;12899:35;12955:1;12952;12948:9;12943:14;;12790:173;;;;:::o;12969:174::-;13109:26;13105:1;13097:6;13093:14;13086:50;12969:174;:::o;13149:366::-;13291:3;13312:67;13376:2;13371:3;13312:67;:::i;:::-;13305:74;;13388:93;13477:3;13388:93;:::i;:::-;13506:2;13501:3;13497:12;13490:19;;13149:366;;;:::o;13521:419::-;13687:4;13725:2;13714:9;13710:18;13702:26;;13774:9;13768:4;13764:20;13760:1;13749:9;13745:17;13738:47;13802:131;13928:4;13802:131;:::i;:::-;13794:139;;13521:419;;;:::o;13946:205::-;13985:3;14004:19;14021:1;14004:19;:::i;:::-;13999:24;;14037:19;14054:1;14037:19;:::i;:::-;14032:24;;14079:1;14076;14072:9;14065:16;;14102:18;14097:3;14094:27;14091:53;;;14124:18;;:::i;:::-;14091:53;13946:205;;;;:::o;14157:275::-;14196:7;14219:19;14236:1;14219:19;:::i;:::-;14214:24;;14252:19;14269:1;14252:19;:::i;:::-;14247:24;;14306:1;14303;14299:9;14328:29;14345:11;14328:29;:::i;:::-;14317:40;;14389:11;14380:7;14377:24;14367:58;;14405:18;;:::i;:::-;14367:58;14204:228;14157:275;;;;:::o;14438:182::-;14477:1;14494:19;14511:1;14494:19;:::i;:::-;14489:24;;14527:19;14544:1;14527:19;:::i;:::-;14522:24;;14565:1;14555:35;;14570:18;;:::i;:::-;14555:35;14612:1;14609;14605:9;14600:14;;14438:182;;;;:::o;14626:328::-;14745:4;14783:2;14772:9;14768:18;14760:26;;14796:69;14862:1;14851:9;14847:17;14838:6;14796:69;:::i;:::-;14875:72;14943:2;14932:9;14928:18;14919:6;14875:72;:::i;:::-;14626:328;;;;;:::o;14960:332::-;15081:4;15119:2;15108:9;15104:18;15096:26;;15132:71;15200:1;15189:9;15185:17;15176:6;15132:71;:::i;:::-;15213:72;15281:2;15270:9;15266:18;15257:6;15213:72;:::i;:::-;14960:332;;;;;:::o;15298:316::-;15411:4;15449:2;15438:9;15434:18;15426:26;;15462:69;15528:1;15517:9;15513:17;15504:6;15462:69;:::i;:::-;15541:66;15603:2;15592:9;15588:18;15579:6;15541:66;:::i;:::-;15298:316;;;;;:::o;15620:118::-;15707:24;15725:5;15707:24;:::i;:::-;15702:3;15695:37;15620:118;;:::o;15744:328::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15914:69;15980:1;15969:9;15965:17;15956:6;15914:69;:::i;:::-;15993:72;16061:2;16050:9;16046:18;16037:6;15993:72;:::i;:::-;15744:328;;;;;:::o;16078:208::-;16117:4;16137:19;16154:1;16137:19;:::i;:::-;16132:24;;16170:19;16187:1;16170:19;:::i;:::-;16165:24;;16213:1;16210;16206:9;16198:17;;16237:18;16231:4;16228:28;16225:54;;;16259:18;;:::i;:::-;16225:54;16078:208;;;;:::o;16292:324::-;16409:4;16447:2;16436:9;16432:18;16424:26;;16460:69;16526:1;16515:9;16511:17;16502:6;16460:69;:::i;:::-;16539:70;16605:2;16594:9;16590:18;16581:6;16539:70;:::i;:::-;16292:324;;;;;:::o;16622:222::-;16715:4;16753:2;16742:9;16738:18;16730:26;;16766:71;16834:1;16823:9;16819:17;16810:6;16766:71;:::i;:::-;16622:222;;;;:::o;16850:233::-;16889:3;16912:24;16930:5;16912:24;:::i;:::-;16903:33;;16958:66;16951:5;16948:77;16945:103;;17028:18;;:::i;:::-;16945:103;17075:1;17068:5;17064:13;17057:20;;16850:233;;;:::o;17089:168::-;17229:20;17225:1;17217:6;17213:14;17206:44;17089:168;:::o;17263:366::-;17405:3;17426:67;17490:2;17485:3;17426:67;:::i;:::-;17419:74;;17502:93;17591:3;17502:93;:::i;:::-;17620:2;17615:3;17611:12;17604:19;;17263:366;;;:::o;17635:419::-;17801:4;17839:2;17828:9;17824:18;17816:26;;17888:9;17882:4;17878:20;17874:1;17863:9;17859:17;17852:47;17916:131;18042:4;17916:131;:::i;:::-;17908:139;;17635:419;;;:::o;18060:93::-;18096:7;18136:10;18129:5;18125:22;18114:33;;18060:93;;;:::o;18159:200::-;18198:4;18218:19;18235:1;18218:19;:::i;:::-;18213:24;;18251:19;18268:1;18251:19;:::i;:::-;18246:24;;18294:1;18291;18287:9;18279:17;;18318:10;18312:4;18309:20;18306:46;;;18332:18;;:::i;:::-;18306:46;18159:200;;;;:::o;18365:222::-;18458:4;18496:2;18485:9;18481:18;18473:26;;18509:71;18577:1;18566:9;18562:17;18553:6;18509:71;:::i;:::-;18365:222;;;;:::o;18593:176::-;18625:1;18642:20;18660:1;18642:20;:::i;:::-;18637:25;;18676:20;18694:1;18676:20;:::i;:::-;18671:25;;18715:1;18705:35;;18720:18;;:::i;:::-;18705:35;18761:1;18758;18754:9;18749:14;;18593:176;;;;:::o;18775:172::-;18915:24;18911:1;18903:6;18899:14;18892:48;18775:172;:::o;18953:366::-;19095:3;19116:67;19180:2;19175:3;19116:67;:::i;:::-;19109:74;;19192:93;19281:3;19192:93;:::i;:::-;19310:2;19305:3;19301:12;19294:19;;18953:366;;;:::o;19325:419::-;19491:4;19529:2;19518:9;19514:18;19506:26;;19578:9;19572:4;19568:20;19564:1;19553:9;19549:17;19542:47;19606:131;19732:4;19606:131;:::i;:::-;19598:139;;19325:419;;;:::o;19750:332::-;19871:4;19909:2;19898:9;19894:18;19886:26;;19922:71;19990:1;19979:9;19975:17;19966:6;19922:71;:::i;:::-;20003:72;20071:2;20060:9;20056:18;20047:6;20003:72;:::i;:::-;19750:332;;;;;:::o;20088:116::-;20158:21;20173:5;20158:21;:::i;:::-;20151:5;20148:32;20138:60;;20194:1;20191;20184:12;20138:60;20088:116;:::o;20210:137::-;20264:5;20295:6;20289:13;20280:22;;20311:30;20335:5;20311:30;:::i;:::-;20210:137;;;;:::o;20353:345::-;20420:6;20469:2;20457:9;20448:7;20444:23;20440:32;20437:119;;;20475:79;;:::i;:::-;20437:119;20595:1;20620:61;20673:7;20664:6;20653:9;20649:22;20620:61;:::i;:::-;20610:71;;20566:125;20353:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxAllowedFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorFee\",\"type\":\"uint64\"}],\"name\":\"Declared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"helper_createOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506000620000296200015660201b62002be71760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062000077670de0b6b3a76400006200019460201b62002c231760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050620004cf565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6200018b9190620002b5565b90508091505090565b60006298968068010000000000000000620001b09190620002f0565b821115620001f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ec906200039c565b60405180910390fd5b629896806200020a836200021d60201b60201c565b620002169190620003ed565b9050919050565b600080629896808362000231919062000425565b1462000274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026b90620004ad565b60405180910390fd5b819050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620002c2826200027c565b9150620002cf836200027c565b9250828203905081811115620002ea57620002e962000286565b5b92915050565b6000620002fd826200027c565b91506200030a836200027c565b92508282026200031a816200027c565b9150828204841483151762000334576200033362000286565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000620003846012836200033b565b915062000391826200034c565b602082019050919050565b60006020820190508181036000830152620003b78162000375565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003fa826200027c565b915062000407836200027c565b9250826200041a5762000419620003be565b5b828204905092915050565b600062000432826200027c565b91506200043f836200027c565b925082620004525762000451620003be565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000620004956016836200033b565b9150620004a2826200045d565b602082019050919050565b60006020820190508181036000830152620004c88162000486565b9050919050565b61405080620004df6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806345a5605a116100a25780639d5ceb91116100715780639d5ceb9114610260578063b317c35f1461027c578063c90a7eab14610298578063e7780e00146102b4578063ff212c5c146102d25761010b565b806345a5605a146101f05780634bc93b641461020c57806360e7474e146102285780638932cee0146102445761010b565b806323d68a6d116100de57806323d68a6d146101805780632e168e0e1461019c57806335f63767146101b857806336058dc4146101d45761010b565b80630a3d0123146101105780630f5baea81461012c578063190d82e41461014857806322ca0bed14610164575b600080fd5b61012a60048036038101906101259190613523565b610302565b005b610146600480360381019061014191906135c3565b610600565b005b610162600480360381019061015d91906135f0565b610792565b005b61017e600480360381019061017991906135c3565b610c79565b005b61019a600480360381019061019591906135c3565b610d4f565b005b6101b660048036038101906101b191906135c3565b611051565b005b6101d260048036038101906101cd91906135f0565b6114e6565b005b6101ee60048036038101906101e991906135c3565b6114f4565b005b61020a600480360381019061020591906135c3565b611575565b005b610226600480360381019061022191906135c3565b6115f6565b005b610242600480360381019061023d919061368e565b611604565b005b61025e600480360381019061025991906135c3565b611688565b005b61027a600480360381019061027591906135c3565b611cc6565b005b610296600480360381019061029191906135f0565b611e2e565b005b6102b260048036038101906102ad919061368e565b6123e4565b005b6102bc612706565b6040516102c991906136e9565b60405180910390f35b6102ec60048036038101906102e79190613523565b6127d5565b6040516102f99190613713565b60405180910390f35b600083839050141580156103595750600060f81b8383600081811061032a5761032961372e565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f906137e0565b60405180910390fd5b600062989680680100000000000000006103b2919061382f565b90506000629896806001629896806305f5e10067ffffffffffffffff166103d99190613871565b6103e391906138a5565b6103ed9190613908565b905060006103f9612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff169050818411801561042b57508084105b61046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046190613985565b60405180910390fd5b6298968084610479919061382f565b93506000610485612c9d565b6002016000888860405161049a9291906139e4565b6040518091039020815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690613a49565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c8787876040518463ffffffff1660e01b815260040161054c93929190613ac7565b6020604051808303816000875af192505050801561058857506040513d601f19601f820116820180604052508101906105859190613b0e565b60015b6105a057600061059b5761059a613b3b565b5b6105f8565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050505050565b600080549050816106119190613b6a565b9050600061061d612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90613be7565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106106d1612be7565b60020160089054906101000a900467ffffffffffffffff166127106106f69190613c07565b836107019190613c43565b61070b9190613c80565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f8561073d8467ffffffffffffffff16612cd9565b6040518363ffffffff1660e01b815260040161075a929190613cb1565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b5050505050505050565b600061079c612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061094681612cfb565b600061095184612c23565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106109a4576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad82612daf565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610c17578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610c6a929190613cda565b60405180910390a35050505050565b60008054905081610c8a9190613b6a565b90506000610c96612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610cfb57508060010160009054906101000a900460ff165b15610d4b577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610d42929190613d03565b60405180910390a15b5050565b6000610d59612c9d565b9050610efe8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610f82576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061105b612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061120581612cfb565b61120e81612daf565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156112ff5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff1611156114a9576114a8846114a38367ffffffffffffffff16612cd9565b612e77565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b6114f08282612ede565b5050565b600080549050816115059190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016115409190613713565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b5050505050565b600080549050816115869190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b81526004016115c19190613713565b600060405180830381600087803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b5050505050565b611601816000612ede565b50565b600080549050826116159190613b6a565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611652929190613d3b565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050505050565b6000611692612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061183c81612cfb565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611952576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061197b5750806040015167ffffffffffffffff1642115b156119b2576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119ba612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166119f3826000015167ffffffffffffffff16612cd9565b1115611a2b576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a3482612daf565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611caa856000015167ffffffffffffffff16612cd9565b604051611cb8929190613cda565b60405180910390a350505050565b6001600080549050611cd89190613d64565b81611ce39190613b6a565b6001611cef9190613c07565b90506000611cfb612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015611da457506000611d57612c9d565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15611e2a577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f782611dd3612c9d565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051611e21929190613da0565b60405180910390a15b5050565b6000611e38612c9d565b9050611fdd8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b6000611fe7612be7565b90506000831415801561200757506305f5e10067ffffffffffffffff1683105b1561203e576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561209a576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006120ea85612c23565b90508067ffffffffffffffff168267ffffffffffffffff1603612139576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561215e575060008267ffffffffffffffff16145b15612195576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106121c09190613c07565b846121cb9190613c43565b6121d59190613c80565b90508067ffffffffffffffff168267ffffffffffffffff161115612225576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426122649190613c07565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426122b09190613c07565b6122ba9190613c07565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516123d3929190613cda565b60405180910390a350505050505050565b60006123ee612c9d565b90506125938160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126115760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612657565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516126f99190613dc9565b60405180910390a2505050565b6000805b6000805490508110156127d1576000612721612c9d565b60060160008084815481106127395761273861372e565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050600081600201600001600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146127bd576127bc613b3b565b5b5080806127c990613de4565b91505061270a565b5090565b60008082141580156127f457506305f5e10067ffffffffffffffff1682105b1561282b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612833612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561288e576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612898612c9d565b9050600085856040516128ac9291906139e4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612923576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292f8260080161331d565b61293b82600801613333565b92506040518060a00160405280600063ffffffff16815260200161295e86612c23565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4888888604051612bd693929190613ac7565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c612c1a91906138a5565b90508091505090565b60006298968068010000000000000000612c3d919061382f565b821115612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7690613e78565b60405180910390fd5b62989680612c8c83613341565b612c969190613908565b9050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c612cd091906138a5565b90508091505090565b6000629896808267ffffffffffffffff16612cf4919061382f565b9050919050565b600081608001516000015163ffffffff1603612d43576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143612dca9190613ea8565b63ffffffff16612dda9190613c43565b9050808260800151602001818151612df29190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681612e259190613c43565b8260800151604001818151612e3a9190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b612e81338261339b565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612ed29190613ee0565b60405180910390a35050565b6000612ee8612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061309281612cfb565b61309b81612daf565b6000806130a785612c23565b90506000851480156130cb5750600083608001516040015167ffffffffffffffff16115b156130e057826080015160400151915061314c565b60008511801561310c57508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156131195780915061314b565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516131629190613d64565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613315866133108467ffffffffffffffff16612cd9565b612e77565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836133539190613efb565b14613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a90613f78565b60405180910390fd5b819050919050565b6133a3612c9d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613401929190613f98565b6020604051808303816000875af1158015613420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134449190613fed565b61347a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126134ad576134ac613488565b5b8235905067ffffffffffffffff8111156134ca576134c961348d565b5b6020830191508360018202830111156134e6576134e5613492565b5b9250929050565b6000819050919050565b613500816134ed565b811461350b57600080fd5b50565b60008135905061351d816134f7565b92915050565b60008060006040848603121561353c5761353b61347e565b5b600084013567ffffffffffffffff81111561355a57613559613483565b5b61356686828701613497565b935093505060206135798682870161350e565b9150509250925092565b600067ffffffffffffffff82169050919050565b6135a081613583565b81146135ab57600080fd5b50565b6000813590506135bd81613597565b92915050565b6000602082840312156135d9576135d861347e565b5b60006135e7848285016135ae565b91505092915050565b600080604083850312156136075761360661347e565b5b6000613615858286016135ae565b92505060206136268582860161350e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b600080604083850312156136a5576136a461347e565b5b60006136b3858286016135ae565b92505060206136c485828601613679565b9150509250929050565b60008115159050919050565b6136e3816136ce565b82525050565b60006020820190506136fe60008301846136da565b92915050565b61370d81613583565b82525050565b60006020820190506137286000830184613704565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d7060008201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b60006137ca60228361375d565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061383a826134ed565b9150613845836134ed565b9250828202613853816134ed565b9150828204841483151761386a57613869613800565b5b5092915050565b600061387c826134ed565b9150613887836134ed565b925082820190508082111561389f5761389e613800565b5b92915050565b60006138b0826134ed565b91506138bb836134ed565b92508282039050818111156138d3576138d2613800565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613913826134ed565b915061391e836134ed565b92508261392e5761392d6138d9565b5b828204905092915050565b7f6665652076616c75652065786365656465640000000000000000000000000000600082015250565b600061396f60128361375d565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b600081905092915050565b82818337600083830152505050565b60006139cb83856139a5565b93506139d88385846139b0565b82840190509392505050565b60006139f18284866139bf565b91508190509392505050565b7f4f70657261746f72206578697374730000000000000000000000000000000000600082015250565b6000613a33600f8361375d565b9150613a3e826139fd565b602082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000613a978385613a69565b9350613aa48385846139b0565b613aad83613a7a565b840190509392505050565b613ac1816134ed565b82525050565b60006040820190508181036000830152613ae2818587613a8b565b9050613af16020830184613ab8565b949350505050565b600081519050613b0881613597565b92915050565b600060208284031215613b2457613b2361347e565b5b6000613b3284828501613af9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613b7582613583565b9150613b8083613583565b925082613b9057613b8f6138d9565b5b828206905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000613bd160188361375d565b9150613bdc82613b9b565b602082019050919050565b60006020820190508181036000830152613c0081613bc4565b9050919050565b6000613c1282613583565b9150613c1d83613583565b9250828201905067ffffffffffffffff811115613c3d57613c3c613800565b5b92915050565b6000613c4e82613583565b9150613c5983613583565b9250828202613c6781613583565b9150808214613c7957613c78613800565b5b5092915050565b6000613c8b82613583565b9150613c9683613583565b925082613ca657613ca56138d9565b5b828204905092915050565b6000604082019050613cc66000830185613704565b613cd36020830184613ab8565b9392505050565b6000604082019050613cef6000830185613ab8565b613cfc6020830184613ab8565b9392505050565b6000604082019050613d186000830185613704565b613d2560208301846136da565b9392505050565b613d3581613650565b82525050565b6000604082019050613d506000830185613704565b613d5d6020830184613d2c565b9392505050565b6000613d6f82613583565b9150613d7a83613583565b9250828203905067ffffffffffffffff811115613d9a57613d99613800565b5b92915050565b6000604082019050613db56000830185613704565b613dc26020830184613704565b9392505050565b6000602082019050613dde6000830184613d2c565b92915050565b6000613def826134ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2157613e20613800565b5b600182019050919050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613e6260128361375d565b9150613e6d82613e2c565b602082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b600063ffffffff82169050919050565b6000613eb382613e98565b9150613ebe83613e98565b9250828203905063ffffffff811115613eda57613ed9613800565b5b92915050565b6000602082019050613ef56000830184613ab8565b92915050565b6000613f06826134ed565b9150613f11836134ed565b925082613f2157613f206138d9565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613f6260168361375d565b9150613f6d82613f2c565b602082019050919050565b60006020820190508181036000830152613f9181613f55565b9050919050565b6000604082019050613fad6000830185613d2c565b613fba6020830184613ab8565b9392505050565b613fca816136ce565b8114613fd557600080fd5b50565b600081519050613fe781613fc1565b92915050565b6000602082840312156140035761400261347e565b5b600061401184828501613fd8565b9150509291505056fea26469706673582212202a5e76c1b9eaea74b80ce9cc1c723f8922c563d2162e24cdd281e443a62c7e3464736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061010b5760003560e01c806345a5605a116100a25780639d5ceb91116100715780639d5ceb9114610260578063b317c35f1461027c578063c90a7eab14610298578063e7780e00146102b4578063ff212c5c146102d25761010b565b806345a5605a146101f05780634bc93b641461020c57806360e7474e146102285780638932cee0146102445761010b565b806323d68a6d116100de57806323d68a6d146101805780632e168e0e1461019c57806335f63767146101b857806336058dc4146101d45761010b565b80630a3d0123146101105780630f5baea81461012c578063190d82e41461014857806322ca0bed14610164575b600080fd5b61012a60048036038101906101259190613523565b610302565b005b610146600480360381019061014191906135c3565b610600565b005b610162600480360381019061015d91906135f0565b610792565b005b61017e600480360381019061017991906135c3565b610c79565b005b61019a600480360381019061019591906135c3565b610d4f565b005b6101b660048036038101906101b191906135c3565b611051565b005b6101d260048036038101906101cd91906135f0565b6114e6565b005b6101ee60048036038101906101e991906135c3565b6114f4565b005b61020a600480360381019061020591906135c3565b611575565b005b610226600480360381019061022191906135c3565b6115f6565b005b610242600480360381019061023d919061368e565b611604565b005b61025e600480360381019061025991906135c3565b611688565b005b61027a600480360381019061027591906135c3565b611cc6565b005b610296600480360381019061029191906135f0565b611e2e565b005b6102b260048036038101906102ad919061368e565b6123e4565b005b6102bc612706565b6040516102c991906136e9565b60405180910390f35b6102ec60048036038101906102e79190613523565b6127d5565b6040516102f99190613713565b60405180910390f35b600083839050141580156103595750600060f81b8383600081811061032a5761032961372e565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f906137e0565b60405180910390fd5b600062989680680100000000000000006103b2919061382f565b90506000629896806001629896806305f5e10067ffffffffffffffff166103d99190613871565b6103e391906138a5565b6103ed9190613908565b905060006103f9612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff169050818411801561042b57508084105b61046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046190613985565b60405180910390fd5b6298968084610479919061382f565b93506000610485612c9d565b6002016000888860405161049a9291906139e4565b6040518091039020815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690613a49565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c8787876040518463ffffffff1660e01b815260040161054c93929190613ac7565b6020604051808303816000875af192505050801561058857506040513d601f19601f820116820180604052508101906105859190613b0e565b60015b6105a057600061059b5761059a613b3b565b5b6105f8565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050505050565b600080549050816106119190613b6a565b9050600061061d612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90613be7565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106106d1612be7565b60020160089054906101000a900467ffffffffffffffff166127106106f69190613c07565b836107019190613c43565b61070b9190613c80565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f8561073d8467ffffffffffffffff16612cd9565b6040518363ffffffff1660e01b815260040161075a929190613cb1565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b5050505050505050565b600061079c612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061094681612cfb565b600061095184612c23565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106109a4576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad82612daf565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610c17578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610c6a929190613cda565b60405180910390a35050505050565b60008054905081610c8a9190613b6a565b90506000610c96612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610cfb57508060010160009054906101000a900460ff165b15610d4b577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610d42929190613d03565b60405180910390a15b5050565b6000610d59612c9d565b9050610efe8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610f82576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061105b612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061120581612cfb565b61120e81612daf565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156112ff5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff1611156114a9576114a8846114a38367ffffffffffffffff16612cd9565b612e77565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b6114f08282612ede565b5050565b600080549050816115059190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016115409190613713565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b5050505050565b600080549050816115869190613b6a565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b81526004016115c19190613713565b600060405180830381600087803b1580156115db57600080fd5b505af11580156115ef573d6000803e3d6000fd5b5050505050565b611601816000612ede565b50565b600080549050826116159190613b6a565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611652929190613d3b565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050505050565b6000611692612c9d565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061183c81612cfb565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611952576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061197b5750806040015167ffffffffffffffff1642115b156119b2576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119ba612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166119f3826000015167ffffffffffffffff16612cd9565b1115611a2b576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a3482612daf565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611caa856000015167ffffffffffffffff16612cd9565b604051611cb8929190613cda565b60405180910390a350505050565b6001600080549050611cd89190613d64565b81611ce39190613b6a565b6001611cef9190613c07565b90506000611cfb612c9d565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015611da457506000611d57612c9d565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15611e2a577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f782611dd3612c9d565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051611e21929190613da0565b60405180910390a15b5050565b6000611e38612c9d565b9050611fdd8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b6000611fe7612be7565b90506000831415801561200757506305f5e10067ffffffffffffffff1683105b1561203e576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561209a576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006120ea85612c23565b90508067ffffffffffffffff168267ffffffffffffffff1603612139576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561215e575060008267ffffffffffffffff16145b15612195576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106121c09190613c07565b846121cb9190613c43565b6121d59190613c80565b90508067ffffffffffffffff168267ffffffffffffffff161115612225576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426122649190613c07565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426122b09190613c07565b6122ba9190613c07565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516123d3929190613cda565b60405180910390a350505050505050565b60006123ee612c9d565b90506125938160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612cfb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126115760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612657565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516126f99190613dc9565b60405180910390a2505050565b6000805b6000805490508110156127d1576000612721612c9d565b60060160008084815481106127395761273861372e565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050600081600201600001600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146127bd576127bc613b3b565b5b5080806127c990613de4565b91505061270a565b5090565b60008082141580156127f457506305f5e10067ffffffffffffffff1682105b1561282b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612833612be7565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561288e576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612898612c9d565b9050600085856040516128ac9291906139e4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612923576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292f8260080161331d565b61293b82600801613333565b92506040518060a00160405280600063ffffffff16815260200161295e86612c23565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4888888604051612bd693929190613ac7565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c612c1a91906138a5565b90508091505090565b60006298968068010000000000000000612c3d919061382f565b821115612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7690613e78565b60405180910390fd5b62989680612c8c83613341565b612c969190613908565b9050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c612cd091906138a5565b90508091505090565b6000629896808267ffffffffffffffff16612cf4919061382f565b9050919050565b600081608001516000015163ffffffff1603612d43576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143612dca9190613ea8565b63ffffffff16612dda9190613c43565b9050808260800151602001818151612df29190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681612e259190613c43565b8260800151604001818151612e3a9190613c07565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b612e81338261339b565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612ed29190613ee0565b60405180910390a35050565b6000612ee8612c9d565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061309281612cfb565b61309b81612daf565b6000806130a785612c23565b90506000851480156130cb5750600083608001516040015167ffffffffffffffff16115b156130e057826080015160400151915061314c565b60008511801561310c57508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156131195780915061314b565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516131629190613d64565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613315866133108467ffffffffffffffff16612cd9565b612e77565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836133539190613efb565b14613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338a90613f78565b60405180910390fd5b819050919050565b6133a3612c9d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613401929190613f98565b6020604051808303816000875af1158015613420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134449190613fed565b61347a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126134ad576134ac613488565b5b8235905067ffffffffffffffff8111156134ca576134c961348d565b5b6020830191508360018202830111156134e6576134e5613492565b5b9250929050565b6000819050919050565b613500816134ed565b811461350b57600080fd5b50565b60008135905061351d816134f7565b92915050565b60008060006040848603121561353c5761353b61347e565b5b600084013567ffffffffffffffff81111561355a57613559613483565b5b61356686828701613497565b935093505060206135798682870161350e565b9150509250925092565b600067ffffffffffffffff82169050919050565b6135a081613583565b81146135ab57600080fd5b50565b6000813590506135bd81613597565b92915050565b6000602082840312156135d9576135d861347e565b5b60006135e7848285016135ae565b91505092915050565b600080604083850312156136075761360661347e565b5b6000613615858286016135ae565b92505060206136268582860161350e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b600080604083850312156136a5576136a461347e565b5b60006136b3858286016135ae565b92505060206136c485828601613679565b9150509250929050565b60008115159050919050565b6136e3816136ce565b82525050565b60006020820190506136fe60008301846136da565b92915050565b61370d81613583565b82525050565b60006020820190506137286000830184613704565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f696e76616c6964207075626c69634b65793a2063616e6e6f7420626520656d7060008201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b60006137ca60228361375d565b91506137d58261376e565b604082019050919050565b600060208201905081810360008301526137f9816137bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061383a826134ed565b9150613845836134ed565b9250828202613853816134ed565b9150828204841483151761386a57613869613800565b5b5092915050565b600061387c826134ed565b9150613887836134ed565b925082820190508082111561389f5761389e613800565b5b92915050565b60006138b0826134ed565b91506138bb836134ed565b92508282039050818111156138d3576138d2613800565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613913826134ed565b915061391e836134ed565b92508261392e5761392d6138d9565b5b828204905092915050565b7f6665652076616c75652065786365656465640000000000000000000000000000600082015250565b600061396f60128361375d565b915061397a82613939565b602082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b600081905092915050565b82818337600083830152505050565b60006139cb83856139a5565b93506139d88385846139b0565b82840190509392505050565b60006139f18284866139bf565b91508190509392505050565b7f4f70657261746f72206578697374730000000000000000000000000000000000600082015250565b6000613a33600f8361375d565b9150613a3e826139fd565b602082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000613a978385613a69565b9350613aa48385846139b0565b613aad83613a7a565b840190509392505050565b613ac1816134ed565b82525050565b60006040820190508181036000830152613ae2818587613a8b565b9050613af16020830184613ab8565b949350505050565b600081519050613b0881613597565b92915050565b600060208284031215613b2457613b2361347e565b5b6000613b3284828501613af9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613b7582613583565b9150613b8083613583565b925082613b9057613b8f6138d9565b5b828206905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000613bd160188361375d565b9150613bdc82613b9b565b602082019050919050565b60006020820190508181036000830152613c0081613bc4565b9050919050565b6000613c1282613583565b9150613c1d83613583565b9250828201905067ffffffffffffffff811115613c3d57613c3c613800565b5b92915050565b6000613c4e82613583565b9150613c5983613583565b9250828202613c6781613583565b9150808214613c7957613c78613800565b5b5092915050565b6000613c8b82613583565b9150613c9683613583565b925082613ca657613ca56138d9565b5b828204905092915050565b6000604082019050613cc66000830185613704565b613cd36020830184613ab8565b9392505050565b6000604082019050613cef6000830185613ab8565b613cfc6020830184613ab8565b9392505050565b6000604082019050613d186000830185613704565b613d2560208301846136da565b9392505050565b613d3581613650565b82525050565b6000604082019050613d506000830185613704565b613d5d6020830184613d2c565b9392505050565b6000613d6f82613583565b9150613d7a83613583565b9250828203905067ffffffffffffffff811115613d9a57613d99613800565b5b92915050565b6000604082019050613db56000830185613704565b613dc26020830184613704565b9392505050565b6000602082019050613dde6000830184613d2c565b92915050565b6000613def826134ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2157613e20613800565b5b600182019050919050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000613e6260128361375d565b9150613e6d82613e2c565b602082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b600063ffffffff82169050919050565b6000613eb382613e98565b9150613ebe83613e98565b9250828203905063ffffffff811115613eda57613ed9613800565b5b92915050565b6000602082019050613ef56000830184613ab8565b92915050565b6000613f06826134ed565b9150613f11836134ed565b925082613f2157613f206138d9565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613f6260168361375d565b9150613f6d82613f2c565b602082019050919050565b60006020820190508181036000830152613f9181613f55565b9050919050565b6000604082019050613fad6000830185613d2c565b613fba6020830184613ab8565b9392505050565b613fca816136ce565b8114613fd557600080fd5b50565b600081519050613fe781613fc1565b92915050565b6000602082840312156140035761400261347e565b5b600061401184828501613fd8565b9150509291505056fea26469706673582212202a5e76c1b9eaea74b80ce9cc1c723f8922c563d2162e24cdd281e443a62c7e3464736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7484:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7484:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5797:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5386:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6479:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4389:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3079:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2587:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:998;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5797:676;5884:21;5908:17;:15;:17::i;:::-;5884:41;;5935:24;5962:1;:11;;:23;5974:10;5962:23;;;;;;;;;;;;;;;5935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:21;:8;:19;:21::i;:::-;6027:19;6049:12;:3;:10;:12::i;:::-;6027:34;;6091:8;:12;;;6075:28;;:12;:28;;;6071:64;;6112:23;;;;;;;;;;;;;;6071:64;6146:25;:8;:23;:25::i;:::-;6196:12;6181:8;:12;;:27;;;;;;;;;;;6244:8;6218:1;:11;;:23;6230:10;6218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:1;6267;:27;;:39;6295:10;6267:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6263:126;;6350:1;:27;;:39;6378:10;6350:39;;;;;;;;;;;;;;;;6343:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6263:126;6436:10;6404:62;;6424:10;6404:62;;;6448:12;6462:3;6404:62;;;;;;;:::i;:::-;;;;;;;;5874:599;;;5797:676;;:::o;5386:405::-;5468:21;5492:17;:15;:17::i;:::-;5468:41;;5519:36;:1;:11;;:23;5531:10;5519:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5631:1;5570;:27;;:39;5598:10;5570:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5566:90;;5641:15;;;;;;;;;;;;;;5566:90;5674:1;:27;;:39;5702:10;5674:39;;;;;;;;;;;;;;;;5667:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:10;5729:55;;5761:10;5729:55;;;;;;;;;;;;5458:333;5386:405;:::o;1782:799::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2235:8;:20;;;2231:132;;;2294:5;2271:8;:20;;:28;;;;;;;;;;;2320:1;:20;;:32;2341:10;2320:32;;;;;;;;;;;;;;;;2313:39;;;;;;;;;;;2231:132;2398:8;2372:1;:11;;:23;2384:10;2372:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:1;2421:14;:18;;;2417:116;;;2455:67;2486:10;2498:23;:14;:21;;;:23::i;:::-;2455:30;:67::i;:::-;2417:116;2563:10;2547:27;;;;;;;;;;;;1843:738;;;1782:799;:::o;6479:149::-;6576:45;6602:10;6614:6;6576:25;:45::i;:::-;6479:149;;:::o;6634:131::-;6718:40;6744:10;6756:1;6718:25;:40::i;:::-;6634:131;:::o;4389:991::-;4464:21;4488:17;:15;:17::i;:::-;4464:41;;4515:24;4542:1;:11;;:23;4554:10;4542:23;;;;;;;;;;;;;;;4515:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:21;:8;:19;:21::i;:::-;4607:48;4658:1;:27;;:39;4686:10;4658:39;;;;;;;;;;;;;;;4607:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4750:1;4712:16;:34;;;:39;;;4708:67;;4760:15;;;;;;;;;;;;;;4708:67;4821:16;:34;;;4803:52;;:15;:52;:106;;;;4877:16;:32;;;4859:50;;:15;:50;4803:106;4786:194;;;4941:28;;;;;;;;;;;;;;4786:194;5026:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4994:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4990:97;;;5075:12;;;;;;;;;;;;;;4990:97;5098:25;:8;:23;:25::i;:::-;5148:16;:20;;;5133:8;:12;;:35;;;;;;;;;;;5204:8;5178:1;:11;;:23;5190:10;5178:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5230:1;:27;;:39;5258:10;5230:39;;;;;;;;;;;;;;;;5223:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:10;5285:88;;5305:10;5285:88;;;5329:12;5343:29;:16;:20;;;:27;;;:29::i;:::-;5285:88;;;;;;;:::i;:::-;;;;;;;;4454:926;;;4389:991;:::o;3079:1304::-;3167:21;3191:17;:15;:17::i;:::-;3167:41;;3218:36;:1;:11;;:23;3230:10;3218:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3265:26;3294:25;:23;:25::i;:::-;3265:54;;3341:1;3334:3;:8;;:38;;;;;450:11;3346:26;;:3;:26;3334:38;3330:62;;;3381:11;;;;;;;;;;;;;;3330:62;3412:2;:17;;;;;;;;;;;;3406:23;;:3;:23;3402:48;;;3438:12;;;;;;;;;;;;;;3402:48;3461:18;3482:1;:11;;:23;3494:10;3482:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3461:48;;3519:16;3538:12;:3;:10;:12::i;:::-;3519:31;;3580:9;3565:24;;:11;:24;;;3561:188;;3612:25;;;;;;;;;;;;;;3561:188;3671:1;3658:9;:14;;;;:34;;;;;3691:1;3676:11;:16;;;3658:34;3654:95;;;3715:23;;;;;;;;;;;;;;3654:95;3847:20;510:6;3905:2;:25;;;;;;;;;;;;510:6;3886:44;;;;:::i;:::-;3871:11;:60;;;;:::i;:::-;3870:81;;;;:::i;:::-;3847:104;;3978:13;3966:25;;:9;:25;;;3962:63;;;4000:25;;;;;;;;;;;;;;3962:63;4078:221;;;;;;;;4116:9;4078:221;;;;;;4165:2;:27;;;;;;;;;;;;4146:15;4139:53;;;;:::i;:::-;4078:221;;;;;;4262:2;:27;;;;;;;;;;;;4232:2;:27;;;;;;;;;;;;4213:15;4206:53;;;;:::i;:::-;:83;;;;:::i;:::-;4078:221;;;;;4036:1;:27;;:39;4064:10;4036:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4346:10;4314:62;;4334:10;4314:62;;;4358:12;4372:3;4314:62;;;;;;;:::i;:::-;;;;;;;;3157:1226;;;;;3079:1304;;:::o;2587:486::-;2676:21;2700:17;:15;:17::i;:::-;2676:41;;2727:36;:1;:11;;:23;2739:10;2727:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2801:1;2778:25;;:11;:25;;;2774:172;;2857:5;2819:1;:11;;:23;2831:10;2819:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2774:172;;;2931:4;2893:1;:11;;:23;2905:10;2893:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2774:172;2991:11;2956:1;:20;;:32;2977:10;2956:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3042:10;3017:49;;;3054:11;3017:49;;;;;;:::i;:::-;;;;;;;;2666:407;2587:486;;:::o;778:998::-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;996:255:3:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:206:6:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;256:365:3:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7633:207:8:-;7726:43;7750:10;7762:6;7726:23;:43::i;:::-;7814:10;7784:49;;7802:10;7784:49;;;7826:6;7784:49;;;;;;:::i;:::-;;;;;;;;7633:207;;:::o;6796:831::-;6884:21;6908:17;:15;:17::i;:::-;6884:41;;6935:24;6962:1;:11;;:23;6974:10;6962:23;;;;;;;;;;;;;;;6935:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6995:21;:8;:19;:21::i;:::-;7027:25;:8;:23;:25::i;:::-;7063:22;7095:19;7117:15;:6;:13;:15::i;:::-;7095:37;;7157:1;7147:6;:11;:44;;;;;7190:1;7162:8;:17;;;:25;;;:29;;;7147:44;7143:299;;;7225:8;:17;;;:25;;;7207:43;;7143:299;;;7280:1;7271:6;:10;:55;;;;;7314:12;7285:41;;:8;:17;;;:25;;;:41;;;;7271:55;7267:175;;;7360:12;7342:30;;7267:175;;;7410:21;;;;;;;;;;;;;;7267:175;7143:299;7481:15;7452:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7533:8;7507:1;:11;;:23;7519:10;7507:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7552:68;7583:10;7595:24;:15;:22;;;:24::i;:::-;7552:30;:68::i;:::-;6874:753;;;;6796:831;;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;945:123:10:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:11:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:77::-;747:7;776:5;765:16;;710:77;;;:::o;793:122::-;866:24;884:5;866:24;:::i;:::-;859:5;856:35;846:63;;905:1;902;895:12;846:63;793:122;:::o;921:139::-;967:5;1005:6;992:20;983:29;;1021:33;1048:5;1021:33;:::i;:::-;921:139;;;;:::o;1066:472::-;1133:6;1141;1190:2;1178:9;1169:7;1165:23;1161:32;1158:119;;;1196:79;;:::i;:::-;1158:119;1316:1;1341:52;1385:7;1376:6;1365:9;1361:22;1341:52;:::i;:::-;1331:62;;1287:116;1442:2;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1413:118;1066:472;;;;;:::o;1544:327::-;1602:6;1651:2;1639:9;1630:7;1626:23;1622:32;1619:119;;;1657:79;;:::i;:::-;1619:119;1777:1;1802:52;1846:7;1837:6;1826:9;1822:22;1802:52;:::i;:::-;1792:62;;1748:116;1544:327;;;;:::o;1877:126::-;1914:7;1954:42;1947:5;1943:54;1932:65;;1877:126;;;:::o;2009:96::-;2046:7;2075:24;2093:5;2075:24;:::i;:::-;2064:35;;2009:96;;;:::o;2111:122::-;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:472::-;2451:6;2459;2508:2;2496:9;2487:7;2483:23;2479:32;2476:119;;;2514:79;;:::i;:::-;2476:119;2634:1;2659:52;2703:7;2694:6;2683:9;2679:22;2659:52;:::i;:::-;2649:62;;2605:116;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2384:472;;;;;:::o;2862:117::-;2971:1;2968;2961:12;2985:117;3094:1;3091;3084:12;3108:117;3217:1;3214;3207:12;3244:552;3301:8;3311:6;3361:3;3354:4;3346:6;3342:17;3338:27;3328:122;;3369:79;;:::i;:::-;3328:122;3482:6;3469:20;3459:30;;3512:18;3504:6;3501:30;3498:117;;;3534:79;;:::i;:::-;3498:117;3648:4;3640:6;3636:17;3624:29;;3702:3;3694:4;3686:6;3682:17;3672:8;3668:32;3665:41;3662:128;;;3709:79;;:::i;:::-;3662:128;3244:552;;;;;:::o;3802:672::-;3881:6;3889;3897;3946:2;3934:9;3925:7;3921:23;3917:32;3914:119;;;3952:79;;:::i;:::-;3914:119;4100:1;4089:9;4085:17;4072:31;4130:18;4122:6;4119:30;4116:117;;;4152:79;;:::i;:::-;4116:117;4265:64;4321:7;4312:6;4301:9;4297:22;4265:64;:::i;:::-;4247:82;;;;4043:296;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;3802:672;;;;;:::o;4480:115::-;4565:23;4582:5;4565:23;:::i;:::-;4560:3;4553:36;4480:115;;:::o;4601:218::-;4692:4;4730:2;4719:9;4715:18;4707:26;;4743:69;4809:1;4798:9;4794:17;4785:6;4743:69;:::i;:::-;4601:218;;;;:::o;4825:118::-;4912:24;4930:5;4912:24;:::i;:::-;4907:3;4900:37;4825:118;;:::o;4949:332::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;5202:72;5270:2;5259:9;5255:18;5246:6;5202:72;:::i;:::-;4949:332;;;;;:::o;5287:180::-;5335:77;5332:1;5325:88;5432:4;5429:1;5422:15;5456:4;5453:1;5446:15;5473:205;5512:3;5531:19;5548:1;5531:19;:::i;:::-;5526:24;;5564:19;5581:1;5564:19;:::i;:::-;5559:24;;5606:1;5603;5599:9;5592:16;;5629:18;5624:3;5621:27;5618:53;;;5651:18;;:::i;:::-;5618:53;5473:205;;;;:::o;5684:275::-;5723:7;5746:19;5763:1;5746:19;:::i;:::-;5741:24;;5779:19;5796:1;5779:19;:::i;:::-;5774:24;;5833:1;5830;5826:9;5855:29;5872:11;5855:29;:::i;:::-;5844:40;;5916:11;5907:7;5904:24;5894:58;;5932:18;;:::i;:::-;5894:58;5731:228;5684:275;;;;:::o;5965:180::-;6013:77;6010:1;6003:88;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6151:182;6190:1;6207:19;6224:1;6207:19;:::i;:::-;6202:24;;6240:19;6257:1;6240:19;:::i;:::-;6235:24;;6278:1;6268:35;;6283:18;;:::i;:::-;6268:35;6325:1;6322;6318:9;6313:14;;6151:182;;;;:::o;6339:118::-;6426:24;6444:5;6426:24;:::i;:::-;6421:3;6414:37;6339:118;;:::o;6463:222::-;6556:4;6594:2;6583:9;6579:18;6571:26;;6607:71;6675:1;6664:9;6660:17;6651:6;6607:71;:::i;:::-;6463:222;;;;:::o;6691:147::-;6792:11;6829:3;6814:18;;6691:147;;;;:::o;6844:146::-;6941:6;6936:3;6931;6918:30;6982:1;6973:6;6968:3;6964:16;6957:27;6844:146;;;:::o;7018:327::-;7132:3;7153:88;7234:6;7229:3;7153:88;:::i;:::-;7146:95;;7251:56;7300:6;7295:3;7288:5;7251:56;:::i;:::-;7332:6;7327:3;7323:16;7316:23;;7018:327;;;;;:::o;7351:291::-;7491:3;7513:103;7612:3;7603:6;7595;7513:103;:::i;:::-;7506:110;;7633:3;7626:10;;7351:291;;;;;:::o;7648:168::-;7731:11;7765:6;7760:3;7753:19;7805:4;7800:3;7796:14;7781:29;;7648:168;;;;:::o;7822:102::-;7863:6;7914:2;7910:7;7905:2;7898:5;7894:14;7890:28;7880:38;;7822:102;;;:::o;7952:314::-;8048:3;8069:70;8132:6;8127:3;8069:70;:::i;:::-;8062:77;;8149:56;8198:6;8193:3;8186:5;8149:56;:::i;:::-;8230:29;8252:6;8230:29;:::i;:::-;8225:3;8221:39;8214:46;;7952:314;;;;;:::o;8272:439::-;8421:4;8459:2;8448:9;8444:18;8436:26;;8508:9;8502:4;8498:20;8494:1;8483:9;8479:17;8472:47;8536:86;8617:4;8608:6;8600;8536:86;:::i;:::-;8528:94;;8632:72;8700:2;8689:9;8685:18;8676:6;8632:72;:::i;:::-;8272:439;;;;;;:::o;8717:194::-;8757:4;8777:20;8795:1;8777:20;:::i;:::-;8772:25;;8811:20;8829:1;8811:20;:::i;:::-;8806:25;;8855:1;8852;8848:9;8840:17;;8879:1;8873:4;8870:11;8867:37;;;8884:18;;:::i;:::-;8867:37;8717:194;;;;:::o;8917:410::-;8957:7;8980:20;8998:1;8980:20;:::i;:::-;8975:25;;9014:20;9032:1;9014:20;:::i;:::-;9009:25;;9069:1;9066;9062:9;9091:30;9109:11;9091:30;:::i;:::-;9080:41;;9270:1;9261:7;9257:15;9254:1;9251:22;9231:1;9224:9;9204:83;9181:139;;9300:18;;:::i;:::-;9181:139;8965:362;8917:410;;;;:::o;9333:169::-;9417:11;9451:6;9446:3;9439:19;9491:4;9486:3;9482:14;9467:29;;9333:169;;;;:::o;9508:168::-;9648:20;9644:1;9636:6;9632:14;9625:44;9508:168;:::o;9682:366::-;9824:3;9845:67;9909:2;9904:3;9845:67;:::i;:::-;9838:74;;9921:93;10010:3;9921:93;:::i;:::-;10039:2;10034:3;10030:12;10023:19;;9682:366;;;:::o;10054:419::-;10220:4;10258:2;10247:9;10243:18;10235:26;;10307:9;10301:4;10297:20;10293:1;10282:9;10278:17;10271:47;10335:131;10461:4;10335:131;:::i;:::-;10327:139;;10054:419;;;:::o;10479:185::-;10519:1;10536:20;10554:1;10536:20;:::i;:::-;10531:25;;10570:20;10588:1;10570:20;:::i;:::-;10565:25;;10609:1;10599:35;;10614:18;;:::i;:::-;10599:35;10656:1;10653;10649:9;10644:14;;10479:185;;;;:::o;10670:93::-;10706:7;10746:10;10739:5;10735:22;10724:33;;10670:93;;;:::o;10769:200::-;10808:4;10828:19;10845:1;10828:19;:::i;:::-;10823:24;;10861:19;10878:1;10861:19;:::i;:::-;10856:24;;10904:1;10901;10897:9;10889:17;;10928:10;10922:4;10919:20;10916:46;;;10942:18;;:::i;:::-;10916:46;10769:200;;;;:::o;10975:222::-;11068:4;11106:2;11095:9;11091:18;11083:26;;11119:71;11187:1;11176:9;11172:17;11163:6;11119:71;:::i;:::-;10975:222;;;;:::o;11203:208::-;11242:4;11262:19;11279:1;11262:19;:::i;:::-;11257:24;;11295:19;11312:1;11295:19;:::i;:::-;11290:24;;11338:1;11335;11331:9;11323:17;;11362:18;11356:4;11353:28;11350:54;;;11384:18;;:::i;:::-;11350:54;11203:208;;;;:::o;11417:176::-;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11585:1;11582;11578:9;11573:14;;11417:176;;;;:::o;11599:172::-;11739:24;11735:1;11727:6;11723:14;11716:48;11599:172;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:332::-;12695:4;12733:2;12722:9;12718:18;12710:26;;12746:71;12814:1;12803:9;12799:17;12790:6;12746:71;:::i;:::-;12827:72;12895:2;12884:9;12880:18;12871:6;12827:72;:::i;:::-;12574:332;;;;;:::o;12912:90::-;12946:7;12989:5;12982:13;12975:21;12964:32;;12912:90;;;:::o;13008:116::-;13078:21;13093:5;13078:21;:::i;:::-;13071:5;13068:32;13058:60;;13114:1;13111;13104:12;13058:60;13008:116;:::o;13130:137::-;13184:5;13215:6;13209:13;13200:22;;13231:30;13255:5;13231:30;:::i;:::-;13130:137;;;;:::o;13273:345::-;13340:6;13389:2;13377:9;13368:7;13364:23;13360:32;13357:119;;;13395:79;;:::i;:::-;13357:119;13515:1;13540:61;13593:7;13584:6;13573:9;13569:22;13540:61;:::i;:::-;13530:71;;13486:125;13273:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b506131e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a81565b6101a8565b005b6100ce60048036038101906100c99190612ac1565b61068f565b005b6100ea60048036038101906100e59190612ac1565b610991565b005b61010660048036038101906101019190612a81565b610e26565b005b610122600480360381019061011d9190612ac1565b610e34565b005b61013e60048036038101906101399190612ac1565b610e42565b005b61015a60048036038101906101559190612a81565b611480565b005b61017660048036038101906101719190612b4c565b611a36565b005b610192600480360381019061018d9190612bf1565b611d58565b60405161019f9190612c60565b60405180910390f35b60006101b261216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c816121a6565b60006103678461225a565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c3826122d4565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062d578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610680929190612c8a565b60405180910390a35050505050565b600061069961216a565b905061083e8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036108c2576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061099b61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610b45816121a6565b610b4e816122d4565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816060015115610c3f5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115610de957610de884610de38367ffffffffffffffff1661239c565b6123be565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610e308282612425565b5050565b610e3f816000612425565b50565b6000610e4c61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610ff6816121a6565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361110c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806111355750806040015167ffffffffffffffff1642115b1561116c576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166111ad826000015167ffffffffffffffff1661239c565b11156111e5576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ee826122d4565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611464856000015167ffffffffffffffff1661239c565b604051611472929190612c8a565b60405180910390a350505050565b600061148a61216a565b905061162f8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b6000611639612864565b90506000831415801561165957506305f5e10067ffffffffffffffff1683105b15611690576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156116ec576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061173c8561225a565b90508067ffffffffffffffff168267ffffffffffffffff160361178b576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff16141580156117b0575060008267ffffffffffffffff16145b156117e7576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106118129190612ce2565b8461181d9190612d1e565b6118279190612d8a565b90508067ffffffffffffffff168267ffffffffffffffff161115611877576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118b69190612ce2565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426119029190612ce2565b61190c9190612ce2565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611a25929190612c8a565b60405180910390a350505050505050565b6000611a4061216a565b9050611be58160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c635760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611ca9565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611d4b9190612dca565b60405180910390a2505050565b6000808214158015611d7757506305f5e10067ffffffffffffffff1682105b15611dae576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611db6612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611e11576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e1b61216a565b905060008585604051611e2f929190612e24565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611ea6576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb2826008016128a0565b611ebe826008016128b6565b92506040518060a00160405280600063ffffffff168152602001611ee18661225a565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161215993929190612e8c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61219d9190612ebe565b90508091505090565b600081608001516000015163ffffffff16036121ee576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612257576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122749190612ef2565b8211156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90612f91565b60405180910390fd5b629896806122c3836128c4565b6122cd9190612fb1565b9050919050565b60008160200151826080015160000151436122ef9190612ff2565b63ffffffff166122ff9190612d1e565b90508082608001516020018181516123179190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff168161234a9190612d1e565b826080015160400181815161235f9190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123b79190612ef2565b9050919050565b6123c8338261291e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612419919061302a565b60405180910390a35050565b600061242f61216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506125d9816121a6565b6125e2816122d4565b6000806125ee8561225a565b90506000851480156126125750600083608001516040015167ffffffffffffffff16115b15612627578260800151604001519150612693565b60008511801561265357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561266057809150612692565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126a99190613045565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505061285c866128578467ffffffffffffffff1661239c565b6123be565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128979190612ebe565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128d69190613081565b14612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d906130fe565b60405180910390fd5b819050919050565b61292661216a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161298492919061311e565b6020604051808303816000875af11580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c7919061317f565b6129fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b612a2881612a0b565b8114612a3357600080fd5b50565b600081359050612a4581612a1f565b92915050565b6000819050919050565b612a5e81612a4b565b8114612a6957600080fd5b50565b600081359050612a7b81612a55565b92915050565b60008060408385031215612a9857612a97612a01565b5b6000612aa685828601612a36565b9250506020612ab785828601612a6c565b9150509250929050565b600060208284031215612ad757612ad6612a01565b5b6000612ae584828501612a36565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1982612aee565b9050919050565b612b2981612b0e565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060408385031215612b6357612b62612a01565b5b6000612b7185828601612a36565b9250506020612b8285828601612b37565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612bb157612bb0612b8c565b5b8235905067ffffffffffffffff811115612bce57612bcd612b91565b5b602083019150836001820283011115612bea57612be9612b96565b5b9250929050565b600080600060408486031215612c0a57612c09612a01565b5b600084013567ffffffffffffffff811115612c2857612c27612a06565b5b612c3486828701612b9b565b93509350506020612c4786828701612a6c565b9150509250925092565b612c5a81612a0b565b82525050565b6000602082019050612c756000830184612c51565b92915050565b612c8481612a4b565b82525050565b6000604082019050612c9f6000830185612c7b565b612cac6020830184612c7b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ced82612a0b565b9150612cf883612a0b565b9250828201905067ffffffffffffffff811115612d1857612d17612cb3565b5b92915050565b6000612d2982612a0b565b9150612d3483612a0b565b9250828202612d4281612a0b565b9150808214612d5457612d53612cb3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d9582612a0b565b9150612da083612a0b565b925082612db057612daf612d5b565b5b828204905092915050565b612dc481612b0e565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600081905092915050565b82818337600083830152505050565b6000612e0b8385612de5565b9350612e18838584612df0565b82840190509392505050565b6000612e31828486612dff565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612e6b8385612e3d565b9350612e78838584612df0565b612e8183612e4e565b840190509392505050565b60006040820190508181036000830152612ea7818587612e5f565b9050612eb66020830184612c7b565b949350505050565b6000612ec982612a4b565b9150612ed483612a4b565b9250828203905081811115612eec57612eeb612cb3565b5b92915050565b6000612efd82612a4b565b9150612f0883612a4b565b9250828202612f1681612a4b565b91508282048414831517612f2d57612f2c612cb3565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f7b601283612f34565b9150612f8682612f45565b602082019050919050565b60006020820190508181036000830152612faa81612f6e565b9050919050565b6000612fbc82612a4b565b9150612fc783612a4b565b925082612fd757612fd6612d5b565b5b828204905092915050565b600063ffffffff82169050919050565b6000612ffd82612fe2565b915061300883612fe2565b9250828203905063ffffffff81111561302457613023612cb3565b5b92915050565b600060208201905061303f6000830184612c7b565b92915050565b600061305082612a0b565b915061305b83612a0b565b9250828203905067ffffffffffffffff81111561307b5761307a612cb3565b5b92915050565b600061308c82612a4b565b915061309783612a4b565b9250826130a7576130a6612d5b565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006130e8601683612f34565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b60006040820190506131336000830185612dbb565b6131406020830184612c7b565b9392505050565b60008115159050919050565b61315c81613147565b811461316757600080fd5b50565b60008151905061317981613153565b92915050565b60006020828403121561319557613194612a01565b5b60006131a38482850161316a565b9150509291505056fea2646970667358221220f390cfaeebed385fac9d2d3694c05999ab0422a41c4ef65b6d5fd0a76636c77164736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a81565b6101a8565b005b6100ce60048036038101906100c99190612ac1565b61068f565b005b6100ea60048036038101906100e59190612ac1565b610991565b005b61010660048036038101906101019190612a81565b610e26565b005b610122600480360381019061011d9190612ac1565b610e34565b005b61013e60048036038101906101399190612ac1565b610e42565b005b61015a60048036038101906101559190612a81565b611480565b005b61017660048036038101906101719190612b4c565b611a36565b005b610192600480360381019061018d9190612bf1565b611d58565b60405161019f9190612c60565b60405180910390f35b60006101b261216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c816121a6565b60006103678461225a565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c3826122d4565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062d578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610680929190612c8a565b60405180910390a35050505050565b600061069961216a565b905061083e8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036108c2576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600061099b61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610b45816121a6565b610b4e816122d4565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816060015115610c3f5760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115610de957610de884610de38367ffffffffffffffff1661239c565b6123be565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610e308282612425565b5050565b610e3f816000612425565b50565b6000610e4c61216a565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610ff6816121a6565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361110c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806111355750806040015167ffffffffffffffff1642115b1561116c576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166111ad826000015167ffffffffffffffff1661239c565b11156111e5576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ee826122d4565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43611464856000015167ffffffffffffffff1661239c565b604051611472929190612c8a565b60405180910390a350505050565b600061148a61216a565b905061162f8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b6000611639612864565b90506000831415801561165957506305f5e10067ffffffffffffffff1683105b15611690576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156116ec576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061173c8561225a565b90508067ffffffffffffffff168267ffffffffffffffff160361178b576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff16141580156117b0575060008267ffffffffffffffff16145b156117e7576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106118129190612ce2565b8461181d9190612d1e565b6118279190612d8a565b90508067ffffffffffffffff168267ffffffffffffffff161115611877576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118b69190612ce2565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426119029190612ce2565b61190c9190612ce2565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611a25929190612c8a565b60405180910390a350505050505050565b6000611a4061216a565b9050611be58160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250506121a6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c635760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611ca9565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611d4b9190612dca565b60405180910390a2505050565b6000808214158015611d7757506305f5e10067ffffffffffffffff1682105b15611dae576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611db6612864565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611e11576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e1b61216a565b905060008585604051611e2f929190612e24565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611ea6576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb2826008016128a0565b611ebe826008016128b6565b92506040518060a00160405280600063ffffffff168152602001611ee18661225a565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161215993929190612e8c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61219d9190612ebe565b90508091505090565b600081608001516000015163ffffffff16036121ee576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614612257576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122749190612ef2565b8211156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90612f91565b60405180910390fd5b629896806122c3836128c4565b6122cd9190612fb1565b9050919050565b60008160200151826080015160000151436122ef9190612ff2565b63ffffffff166122ff9190612d1e565b90508082608001516020018181516123179190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff168161234a9190612d1e565b826080015160400181815161235f9190612ce2565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123b79190612ef2565b9050919050565b6123c8338261291e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051612419919061302a565b60405180910390a35050565b600061242f61216a565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506125d9816121a6565b6125e2816122d4565b6000806125ee8561225a565b90506000851480156126125750600083608001516040015167ffffffffffffffff16115b15612627578260800151604001519150612693565b60008511801561265357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561266057809150612692565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126a99190613045565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505061285c866128578467ffffffffffffffff1661239c565b6123be565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128979190612ebe565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128d69190613081565b14612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d906130fe565b60405180910390fd5b819050919050565b61292661216a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161298492919061311e565b6020604051808303816000875af11580156129a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c7919061317f565b6129fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b612a2881612a0b565b8114612a3357600080fd5b50565b600081359050612a4581612a1f565b92915050565b6000819050919050565b612a5e81612a4b565b8114612a6957600080fd5b50565b600081359050612a7b81612a55565b92915050565b60008060408385031215612a9857612a97612a01565b5b6000612aa685828601612a36565b9250506020612ab785828601612a6c565b9150509250929050565b600060208284031215612ad757612ad6612a01565b5b6000612ae584828501612a36565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1982612aee565b9050919050565b612b2981612b0e565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060408385031215612b6357612b62612a01565b5b6000612b7185828601612a36565b9250506020612b8285828601612b37565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612bb157612bb0612b8c565b5b8235905067ffffffffffffffff811115612bce57612bcd612b91565b5b602083019150836001820283011115612bea57612be9612b96565b5b9250929050565b600080600060408486031215612c0a57612c09612a01565b5b600084013567ffffffffffffffff811115612c2857612c27612a06565b5b612c3486828701612b9b565b93509350506020612c4786828701612a6c565b9150509250925092565b612c5a81612a0b565b82525050565b6000602082019050612c756000830184612c51565b92915050565b612c8481612a4b565b82525050565b6000604082019050612c9f6000830185612c7b565b612cac6020830184612c7b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ced82612a0b565b9150612cf883612a0b565b9250828201905067ffffffffffffffff811115612d1857612d17612cb3565b5b92915050565b6000612d2982612a0b565b9150612d3483612a0b565b9250828202612d4281612a0b565b9150808214612d5457612d53612cb3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d9582612a0b565b9150612da083612a0b565b925082612db057612daf612d5b565b5b828204905092915050565b612dc481612b0e565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600081905092915050565b82818337600083830152505050565b6000612e0b8385612de5565b9350612e18838584612df0565b82840190509392505050565b6000612e31828486612dff565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612e6b8385612e3d565b9350612e78838584612df0565b612e8183612e4e565b840190509392505050565b60006040820190508181036000830152612ea7818587612e5f565b9050612eb66020830184612c7b565b949350505050565b6000612ec982612a4b565b9150612ed483612a4b565b9250828203905081811115612eec57612eeb612cb3565b5b92915050565b6000612efd82612a4b565b9150612f0883612a4b565b9250828202612f1681612a4b565b91508282048414831517612f2d57612f2c612cb3565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f7b601283612f34565b9150612f8682612f45565b602082019050919050565b60006020820190508181036000830152612faa81612f6e565b9050919050565b6000612fbc82612a4b565b9150612fc783612a4b565b925082612fd757612fd6612d5b565b5b828204905092915050565b600063ffffffff82169050919050565b6000612ffd82612fe2565b915061300883612fe2565b9250828203905063ffffffff81111561302457613023612cb3565b5b92915050565b600060208201905061303f6000830184612c7b565b92915050565b600061305082612a0b565b915061305b83612a0b565b9250828203905067ffffffffffffffff81111561307b5761307a612cb3565b5b92915050565b600061308c82612a4b565b915061309783612a4b565b9250826130a7576130a6612d5b565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006130e8601683612f34565b91506130f3826130b2565b602082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b60006040820190506131336000830185612dbb565b6131406020830184612c7b565b9392505050565b60008115159050919050565b61315c81613147565b811461316757600080fd5b50565b60008151905061317981613153565b92915050565b60006020828403121561319557613194612a01565b5b60006131a38482850161316a565b9150509291505056fea2646970667358221220f390cfaeebed385fac9d2d3694c05999ab0422a41c4ef65b6d5fd0a76636c77164736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "exportedSymbols": {"ISSVClusters": [2270], "ISSVNetworkCore": [1967]}, "id": 2271, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2116, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 2117, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2271, "sourceUnit": 1968, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 2118, "name": "ISSVNetworkCore", "nameLocations": ["129:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1967, "src": "129:15:0"}, "id": 2119, "nodeType": "InheritanceSpecifier", "src": "129:15:0"}], "canonicalName": "ISSVClusters", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2270, "linearizedBaseContracts": [2270, 1967], "name": "ISSVClusters", "nameLocation": "113:12:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2120, "nodeType": "StructuredDocumentation", "src": "151:390:0", "text": "@notice Registers a new validator on the SSV Network\n @param publicKey The public key of the new validator\n @param operatorIds Array of IDs of operators managing this validator\n @param sharesData Encrypted shares related to the new validator\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster to be used with the new validator"}, "functionSelector": "06e8fb9c", "id": 2135, "implemented": false, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "555:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2133, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2122, "mutability": "mutable", "name": "publicKey", "nameLocation": "597:9:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "582:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2121, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "582:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2125, "mutability": "mutable", "name": "operatorIds", "nameLocation": "632:11:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "616:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2123, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "616:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2124, "nodeType": "ArrayTypeName", "src": "616:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2127, "mutability": "mutable", "name": "sharesData", "nameLocation": "668:10:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "653:25:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2126, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "653:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2129, "mutability": "mutable", "name": "amount", "nameLocation": "696:6:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "688:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "688:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2132, "mutability": "mutable", "name": "cluster", "nameLocation": "727:7:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "712:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2131, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2130, "name": "Cluster", "nameLocations": ["712:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "712:7:0"}, "referencedDeclaration": 1906, "src": "712:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "572:168:0"}, "returnParameters": {"id": 2134, "nodeType": "ParameterList", "parameters": [], "src": "749:0:0"}, "scope": 2270, "src": "546:204:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2136, "nodeType": "StructuredDocumentation", "src": "756:270:0", "text": "@notice Removes an existing validator from the SSV Network\n @param publicKey The public key of the validator to be removed\n @param operatorIds Array of IDs of operators managing the validator\n @param cluster Cluster associated with the validator"}, "functionSelector": "12b3fc19", "id": 2147, "implemented": false, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "1040:15:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2138, "mutability": "mutable", "name": "publicKey", "nameLocation": "1071:9:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1056:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2137, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1056:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2141, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1098:11:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1082:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2139, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1082:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2140, "nodeType": "ArrayTypeName", "src": "1082:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2144, "mutability": "mutable", "name": "cluster", "nameLocation": "1126:7:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1111:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2143, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2142, "name": "Cluster", "nameLocations": ["1111:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1111:7:0"}, "referencedDeclaration": 1906, "src": "1111:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1055:79:0"}, "returnParameters": {"id": 2146, "nodeType": "ParameterList", "parameters": [], "src": "1143:0:0"}, "scope": 2270, "src": "1031:113:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2148, "nodeType": "StructuredDocumentation", "src": "1254:200:0", "text": "@notice Liquidates a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param cluster Cluster to be liquidated"}, "functionSelector": "bf0f2fb2", "id": 2159, "implemented": false, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "1468:9:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2150, "mutability": "mutable", "name": "owner", "nameLocation": "1486:5:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1478:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2149, "name": "address", "nodeType": "ElementaryTypeName", "src": "1478:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2153, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1509:11:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1493:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1493:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2152, "nodeType": "ArrayTypeName", "src": "1493:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2156, "mutability": "mutable", "name": "cluster", "nameLocation": "1537:7:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1522:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2155, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2154, "name": "Cluster", "nameLocations": ["1522:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1522:7:0"}, "referencedDeclaration": 1906, "src": "1522:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1477:68:0"}, "returnParameters": {"id": 2158, "nodeType": "ParameterList", "parameters": [], "src": "1554:0:0"}, "scope": 2270, "src": "1459:96:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2160, "nodeType": "StructuredDocumentation", "src": "1561:232:0", "text": "@notice Reactivates a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited for reactivation\n @param cluster Cluster to be reactivated"}, "functionSelector": "5fec6dd0", "id": 2171, "implemented": false, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "1807:10:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2169, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2163, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1834:11:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1818:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2161, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2162, "nodeType": "ArrayTypeName", "src": "1818:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2165, "mutability": "mutable", "name": "amount", "nameLocation": "1855:6:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1847:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1847:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2168, "mutability": "mutable", "name": "cluster", "nameLocation": "1878:7:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1863:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2167, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2166, "name": "Cluster", "nameLocations": ["1863:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1863:7:0"}, "referencedDeclaration": 1906, "src": "1863:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1817:69:0"}, "returnParameters": {"id": 2170, "nodeType": "ParameterList", "parameters": [], "src": "1895:0:0"}, "scope": 2270, "src": "1798:98:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2172, "nodeType": "StructuredDocumentation", "src": "2014:283:0", "text": "@notice Deposits tokens into a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster where the deposit will be made"}, "functionSelector": "bc26e7e5", "id": 2185, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "2311:7:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2183, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2174, "mutability": "mutable", "name": "owner", "nameLocation": "2327:5:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2319:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2173, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2177, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2350:11:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2334:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2175, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2334:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2176, "nodeType": "ArrayTypeName", "src": "2334:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2179, "mutability": "mutable", "name": "amount", "nameLocation": "2371:6:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2363:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2363:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2182, "mutability": "mutable", "name": "cluster", "nameLocation": "2394:7:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2379:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2181, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2180, "name": "Cluster", "nameLocations": ["2379:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2379:7:0"}, "referencedDeclaration": 1906, "src": "2379:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2318:84:0"}, "returnParameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "2411:0:0"}, "scope": 2270, "src": "2302:110:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2186, "nodeType": "StructuredDocumentation", "src": "2418:246:0", "text": "@notice Withdraws tokens from a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param tokenAmount Amount of SSV tokens to be withdrawn\n @param cluster Cluster where the withdrawal will be made"}, "functionSelector": "686e682c", "id": 2197, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2678:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2189, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2703:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2687:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2187, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2188, "nodeType": "ArrayTypeName", "src": "2687:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2191, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "2724:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2716:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2190, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2716:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2194, "mutability": "mutable", "name": "cluster", "nameLocation": "2752:7:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2737:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2193, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2192, "name": "Cluster", "nameLocations": ["2737:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2737:7:0"}, "referencedDeclaration": 1906, "src": "2737:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2686:74:0"}, "returnParameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "2769:0:0"}, "scope": 2270, "src": "2669:101:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 2198, "nodeType": "StructuredDocumentation", "src": "2776:299:0", "text": " @dev Emitted when the validator has been added.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param shares snappy compressed shares(a set of encrypted and public shares).\n @param cluster All the cluster data."}, "eventSelector": "48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e5", "id": 2212, "name": "ValidatorAdded", "nameLocation": "3086:14:0", "nodeType": "EventDefinition", "parameters": {"id": 2211, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2200, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3117:5:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3101:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2199, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2203, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3133:11:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3124:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2201, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3124:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2202, "nodeType": "ArrayTypeName", "src": "3124:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2205, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3152:9:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3146:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2204, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3146:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2207, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "3169:6:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3163:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2206, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3163:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2210, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3185:7:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3177:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2209, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2208, "name": "Cluster", "nameLocations": ["3177:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3177:7:0"}, "referencedDeclaration": 1906, "src": "3177:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3100:93:0"}, "src": "3080:114:0"}, {"anonymous": false, "documentation": {"id": 2213, "nodeType": "StructuredDocumentation", "src": "3200:210:0", "text": " @dev Emitted when the validator is removed.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param cluster All the cluster data."}, "eventSelector": "ccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e", "id": 2225, "name": "ValidatorRemoved", "nameLocation": "3421:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2215, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3454:5:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3438:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2214, "name": "address", "nodeType": "ElementaryTypeName", "src": "3438:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2218, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3470:11:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3461:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2216, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2217, "nodeType": "ArrayTypeName", "src": "3461:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2220, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3489:9:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3483:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2219, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3483:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2223, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3508:7:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3500:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2222, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2221, "name": "Cluster", "nameLocations": ["3500:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3500:7:0"}, "referencedDeclaration": 1906, "src": "3500:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3437:79:0"}, "src": "3415:102:0"}, {"anonymous": false, "eventSelector": "1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e688", "id": 2235, "name": "ClusterLiquidated", "nameLocation": "3529:17:0", "nodeType": "EventDefinition", "parameters": {"id": 2234, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2227, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3563:5:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3547:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2226, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2230, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3579:11:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3570:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2228, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2229, "nodeType": "ArrayTypeName", "src": "3570:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2233, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3600:7:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3592:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2232, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2231, "name": "Cluster", "nameLocations": ["3592:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3592:7:0"}, "referencedDeclaration": 1906, "src": "3592:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3546:62:0"}, "src": "3523:86:0"}, {"anonymous": false, "eventSelector": "c803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b6859", "id": 2245, "name": "ClusterReactivated", "nameLocation": "3621:18:0", "nodeType": "EventDefinition", "parameters": {"id": 2244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2237, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3656:5:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3640:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2236, "name": "address", "nodeType": "ElementaryTypeName", "src": "3640:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2240, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3672:11:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3663:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2238, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3663:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ArrayTypeName", "src": "3663:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2243, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3693:7:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3685:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2242, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2241, "name": "Cluster", "nameLocations": ["3685:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3685:7:0"}, "referencedDeclaration": 1906, "src": "3685:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3639:62:0"}, "src": "3615:87:0"}, {"anonymous": false, "eventSelector": "39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0", "id": 2257, "name": "ClusterWithdrawn", "nameLocation": "3714:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2247, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3747:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3731:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2246, "name": "address", "nodeType": "ElementaryTypeName", "src": "3731:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2250, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3763:11:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3754:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3754:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2249, "nodeType": "ArrayTypeName", "src": "3754:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2252, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3784:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3776:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2251, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3776:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2255, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3799:7:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3791:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2254, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2253, "name": "Cluster", "nameLocations": ["3791:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3791:7:0"}, "referencedDeclaration": 1906, "src": "3791:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3730:77:0"}, "src": "3708:100:0"}, {"anonymous": false, "eventSelector": "2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2", "id": 2269, "name": "ClusterDeposited", "nameLocation": "3820:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2259, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3853:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3837:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2258, "name": "address", "nodeType": "ElementaryTypeName", "src": "3837:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2262, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3869:11:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3860:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2260, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3860:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2261, "nodeType": "ArrayTypeName", "src": "3860:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2264, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3890:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3882:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3882:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2267, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3905:7:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3897:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2266, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2265, "name": "Cluster", "nameLocations": ["3897:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3897:7:0"}, "referencedDeclaration": 1906, "src": "3897:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3836:77:0"}, "src": "3814:100:0"}], "scope": 2271, "src": "103:3813:0", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3872:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1967]}, "id": 1968, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1967, "linearizedBaseContracts": [1967], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1863, "members": [{"constant": false, "id": 1856, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1855, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1859, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1858, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1862, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1861, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1880, "members": [{"constant": false, "id": 1866, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1865, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1869, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1868, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1872, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1871, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1875, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1874, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1878, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1877, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1863, "src": "1129:8:1"}, "referencedDeclaration": 1863, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1890, "members": [{"constant": false, "id": 1883, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1882, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1886, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1885, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1889, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1888, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1906, "members": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1892, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1896, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1899, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1898, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1902, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1901, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1905, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1908, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1907, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1910, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1909, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1912, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1914, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1913, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1916, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1915, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1918, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1920, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1919, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1922, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1924, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1923, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1926, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1928, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1927, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1930, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1932, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1931, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1934, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1936, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1935, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1938, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1940, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1942, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1944, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1943, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1946, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1945, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1948, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1947, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1950, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1949, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1952, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1951, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1954, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1956, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1958, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1957, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1960, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1962, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1961, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1964, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1963, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1966, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1968, "src": "70:3477:1", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol": {"AST": {"absolutePath": "contracts/libraries/ClusterLib.sol", "exportedSymbols": {"ClusterLib": [732], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024], "Types256": [2114], "Types64": [2065]}, "id": 733, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 483, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 484, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 1968, "src": "70:43:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 485, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2048, "src": "114:26:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 486, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2115, "src": "141:21:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ClusterLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 732, "linearizedBaseContracts": [732], "name": "ClusterLib", "nameLocation": "172:10:2", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 489, "libraryName": {"id": 487, "name": "Types64", "nameLocations": ["195:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "195:7:2"}, "nodeType": "UsingForDirective", "src": "189:25:2", "typeName": {"id": 488, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "375:306:2", "statements": [{"assignments": [500], "declarations": [{"constant": false, "id": 500, "mutability": "mutable", "name": "networkFee", "nameLocation": "392:10:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "385:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 499, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "385:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 511, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 503, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 496, "src": "412:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 504, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "437:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "445:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "437:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "412:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "405:6:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 501, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "405:6:2", "typeDescriptions": {}}}, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "405:56:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 508, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "464:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "472:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "464:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "405:81:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "385:101:2"}, {"assignments": [513], "declarations": [{"constant": false, "id": 513, "mutability": "mutable", "name": "usage", "nameLocation": "503:5:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "496:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 512, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "496:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 524, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 523, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 514, "name": "newIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 494, "src": "512:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 515, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "523:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 516, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "531:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "523:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "512:24:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 518, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "511:26:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 519, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "540:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "548:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "540:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "511:51:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 522, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "565:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "511:64:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "496:79:2"}, {"expression": {"id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 525, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "585:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "593:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "585:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 528, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "603:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "609:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "603:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "603:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 531, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "620:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 532, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "628:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "620:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "603:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 535, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "642:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "650:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "642:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 537, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "660:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "666:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "660:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "660:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "642:32:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "603:71:2", "trueExpression": {"hexValue": "30", "id": 534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "638:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "585:89:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "585:89:2"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "updateBalance", "nameLocation": "229:13:2", "nodeType": "FunctionDefinition", "parameters": {"id": 497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 492, "mutability": "mutable", "name": "cluster", "nameLocation": "283:7:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "252:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 490, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["252:15:2", "268:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "252:23:2"}, "referencedDeclaration": 1906, "src": "252:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 494, "mutability": "mutable", "name": "newIndex", "nameLocation": "307:8:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "300:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 493, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "300:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "332:22:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "325:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 495, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "325:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "242:118:2"}, "returnParameters": {"id": 498, "nodeType": "ParameterList", "parameters": [], "src": "375:0:2"}, "scope": 732, "src": "220:461:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "951:372:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 561, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "965:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "973:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "965:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "991:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "965:27:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 594, "nodeType": "IfStatement", "src": "961:356:2", "trueBody": {"id": 593, "nodeType": "Block", "src": "994:323:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 565, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1012:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1020:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1012:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 567, "name": "minimumLiquidationCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 556, "src": "1030:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1059:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1030:35:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1030:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1012:55:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 573, "nodeType": "IfStatement", "src": "1008:72:2", "trueBody": {"expression": {"hexValue": "74727565", "id": 571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1076:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 560, "id": 572, "nodeType": "Return", "src": "1069:11:2"}}, {"assignments": [575], "declarations": [{"constant": false, "id": 575, "mutability": "mutable", "name": "liquidationThreshold", "nameLocation": "1101:20:2", "nodeType": "VariableDeclaration", "scope": 593, "src": "1094:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 574, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1094:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 585, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 576, "name": "minimumBlocksBeforeLiquidation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 554, "src": "1124:30:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 577, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "1174:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 578, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 552, "src": "1185:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1174:21:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 580, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1173:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1124:72:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 582, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1215:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1223:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "1215:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1124:113:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1094:143:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 586, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1259:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1267:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1259:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 588, "name": "liquidationThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 575, "src": "1277:20:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1298:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1277:27:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1277:29:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1259:47:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 560, "id": 592, "nodeType": "Return", "src": "1252:54:2"}]}}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "isLiquidatable", "nameLocation": "696:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 557, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "cluster", "nameLocation": "751:7:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "720:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["720:15:2", "736:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "720:23:2"}, "referencedDeclaration": 1906, "src": "720:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "burnRate", "nameLocation": "775:8:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "768:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 549, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "768:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 552, "mutability": "mutable", "name": "networkFee", "nameLocation": "800:10:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "793:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 551, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "793:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 554, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "827:30:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "820:37:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 553, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "820:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 556, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "874:28:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "867:35:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 555, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "867:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "710:198:2"}, "returnParameters": {"id": 560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 559, "mutability": "mutable", "name": "liquidatable", "nameLocation": "937:12:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "932:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 558, "name": "bool", "nodeType": "ElementaryTypeName", "src": "932:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "931:19:2"}, "scope": 732, "src": "687:636:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 611, "nodeType": "Block", "src": "1423:82:2", "statements": [{"condition": {"id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1437:15:2", "subExpression": {"expression": {"id": 602, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1438:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1446:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "1438:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 610, "nodeType": "IfStatement", "src": "1433:65:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 605, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1461:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1477:19:2", "memberName": "ClusterIsLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 1938, "src": "1461:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1461:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "RevertStatement", "src": "1454:44:2"}}]}, "id": 612, "implemented": true, "kind": "function", "modifiers": [], "name": "validateClusterIsNotLiquidated", "nameLocation": "1338:30:2", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "cluster", "nameLocation": "1400:7:2", "nodeType": "VariableDeclaration", "scope": 612, "src": "1369:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1369:15:2", "1385:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1369:23:2"}, "referencedDeclaration": 1906, "src": "1369:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1368:40:2"}, "returnParameters": {"id": 601, "nodeType": "ParameterList", "parameters": [], "src": "1423:0:2"}, "scope": 732, "src": "1329:176:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 676, "nodeType": "Block", "src": "1719:464:2", "statements": [{"assignments": [629], "declarations": [{"constant": false, "id": 629, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1737:13:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1729:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 637, "initialValue": {"arguments": [{"arguments": [{"id": 633, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 617, "src": "1780:5:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 634, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 620, "src": "1787:11:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 631, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1763:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 632, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1767:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1763:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1763:36:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 630, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1753:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1753:47:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1729:71:2"}, {"assignments": [639], "declarations": [{"constant": false, "id": 639, "mutability": "mutable", "name": "hashedClusterData", "nameLocation": "1818:17:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1810:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 638, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1810:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 643, "initialValue": {"arguments": [{"id": 641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 615, "src": "1854:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 640, "name": "hashClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1838:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1838:24:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1810:52:2"}, {"assignments": [645], "declarations": [{"constant": false, "id": 645, "mutability": "mutable", "name": "clusterData", "nameLocation": "1881:11:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1873:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 644, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1873:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 650, "initialValue": {"baseExpression": {"expression": {"id": 646, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 623, "src": "1895:1:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1897:8:2", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1895:10:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 649, "indexExpression": {"id": 648, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1906:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1895:25:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1873:47:2"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 651, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "1934:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1957:1:2", "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": 653, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1949:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 652, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1949:7:2", "typeDescriptions": {}}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1949:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1934:25:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 663, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "2041:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 664, "name": "hashedClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 639, "src": "2056:17:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2041:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 672, "nodeType": "IfStatement", "src": "2037:109:2", "trueBody": {"id": 671, "nodeType": "Block", "src": "2075:71:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 666, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2096:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2112:21:2", "memberName": "IncorrectClusterState", "nodeType": "MemberAccess", "referencedDeclaration": 1942, "src": "2096:37:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 670, "nodeType": "RevertStatement", "src": "2089:46:2"}]}}, "id": 673, "nodeType": "IfStatement", "src": "1930:216:2", "trueBody": {"id": 662, "nodeType": "Block", "src": "1961:70:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 657, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1982:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1998:20:2", "memberName": "ClusterDoesNotExists", "nodeType": "MemberAccess", "referencedDeclaration": 1940, "src": "1982:36:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1982:38:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 661, "nodeType": "RevertStatement", "src": "1975:45:2"}]}}, {"expression": {"id": 674, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "2163:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 627, "id": 675, "nodeType": "Return", "src": "2156:20:2"}]}, "id": 677, "implemented": true, "kind": "function", "modifiers": [], "name": "validateHashedCluster", "nameLocation": "1520:21:2", "nodeType": "FunctionDefinition", "parameters": {"id": 624, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "cluster", "nameLocation": "1582:7:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1551:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 614, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 613, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1551:15:2", "1567:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1551:23:2"}, "referencedDeclaration": 1906, "src": "1551:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 617, "mutability": "mutable", "name": "owner", "nameLocation": "1607:5:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1599:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 616, "name": "address", "nodeType": "ElementaryTypeName", "src": "1599:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 620, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1638:11:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1622:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1622:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 619, "nodeType": "ArrayTypeName", "src": "1622:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 623, "mutability": "mutable", "name": "s", "nameLocation": "1679:1:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1659:21:2", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 622, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 621, "name": "StorageData", "nameLocations": ["1659:11:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1659:11:2"}, "referencedDeclaration": 2024, "src": "1659:11:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1541:145:2"}, "returnParameters": {"id": 627, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 626, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 677, "src": "1710:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 625, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1710:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1709:9:2"}, "scope": 732, "src": "1511:672:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 705, "nodeType": "Block", "src": "2352:173:2", "statements": [{"expression": {"arguments": [{"id": 688, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2376:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, {"id": 689, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2385:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 690, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2399:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 687, "name": "updateBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "2362:13:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2362:60:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 692, "nodeType": "ExpressionStatement", "src": "2362:60:2"}, {"expression": {"id": 697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 693, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2432:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2440:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2432:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 696, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2448:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2432:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 698, "nodeType": "ExpressionStatement", "src": "2432:28:2"}, {"expression": {"id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 699, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2470:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 701, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2478:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2470:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 702, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2496:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2470:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "2470:48:2"}]}, "id": 706, "implemented": true, "kind": "function", "modifiers": [], "name": "updateClusterData", "nameLocation": "2198:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 680, "mutability": "mutable", "name": "cluster", "nameLocation": "2256:7:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2225:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 679, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 678, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2225:15:2", "2241:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2225:23:2"}, "referencedDeclaration": 1906, "src": "2225:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 682, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2280:12:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2273:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 681, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2273:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 684, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "2309:22:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2302:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2302:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2215:122:2"}, "returnParameters": {"id": 686, "nodeType": "ParameterList", "parameters": [], "src": "2352:0:2"}, "scope": 732, "src": "2189:336:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 730, "nodeType": "Block", "src": "2628:308:2", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"id": 717, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2722:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 718, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2730:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2722:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"expression": {"id": 719, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2766:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 720, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2774:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2766:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 721, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2811:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 722, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2819:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2811:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 723, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2846:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 724, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2854:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2846:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 725, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2883:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 726, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2891:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2883:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"id": 715, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2684:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2688:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2684:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2684:231:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 714, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2657:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:272:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 713, "id": 729, "nodeType": "Return", "src": "2638:291:2"}]}, "id": 731, "implemented": true, "kind": "function", "modifiers": [], "name": "hashClusterData", "nameLocation": "2540:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 709, "mutability": "mutable", "name": "cluster", "nameLocation": "2587:7:2", "nodeType": "VariableDeclaration", "scope": 731, "src": "2556:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 708, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 707, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2556:15:2", "2572:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2556:23:2"}, "referencedDeclaration": 1906, "src": "2556:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2555:40:2"}, "returnParameters": {"id": 713, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 712, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 731, "src": "2619:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 711, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2619:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2618:9:2"}, "scope": 732, "src": "2531:405:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 733, "src": "164:2774:2", "usedErrors": []}], "src": "45:2894:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2401], "Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2402, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2272, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2273, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2402, "sourceUnit": 2048, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2401, "linearizedBaseContracts": [2401], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2280, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2279, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2276, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2275, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2274, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "141:10:3"}, "referencedDeclaration": 1977, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2278, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2277, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2287, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2284, "id": 2286, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2288, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2281, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2283, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2288, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2282, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2401, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2311, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2300, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2301, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2295, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2298, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2922, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2310, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2309, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2304, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2308, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2312, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2290, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2289, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2294, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2401, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2338, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2322, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2326, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}], "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2324, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2328, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2314, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2317, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2319, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2954, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2337, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2336, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2331, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2335, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2339, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2314, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2339, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2316, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2401, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2365, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2347, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2342, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "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": 2349, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2348, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2355, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2346, "id": 2354, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2358], "declarations": [{"constant": false, "id": 2358, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2365, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2359, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2342, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2358, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2360, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2361, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2358, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2346, "id": 2364, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2340, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2366, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2342, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2341, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2345, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2344, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2401, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2399, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2375, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2374, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2366, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2383, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2378, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1962, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2382, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2384, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2387, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1998, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2390, "indexExpression": {"id": 2389, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2391, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2393, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2395, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, {"id": 2396, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2394, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1977_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2398, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2400, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2369, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2368, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2367, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1826:10:3"}, "referencedDeclaration": 1977, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2371, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2370, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2373, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2401, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2402, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2645, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2403, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2404, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 1968, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2405, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2048, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2406, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2878, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2407, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2115, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2644, "linearizedBaseContracts": [2644], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2410, "libraryName": {"id": 2408, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2463, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2417], "declarations": [{"constant": false, "id": 2417, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2463, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2416, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2431, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2420, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2418, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2423, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2425, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2427, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2436, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2437, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2439, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2440, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2445, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2446, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2450, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2451, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2455, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2458, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2457, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2456, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2460, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2462, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2464, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2413, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2464, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2412, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2411, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "280:24:4"}, "referencedDeclaration": 1880, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2415, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2644, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2517, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2471], "declarations": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2517, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2470, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2485, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2474, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2472, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2477, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2479, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2482, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2483, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2486, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2489, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2490, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2491, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2493, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2494, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2497, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2499, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2500, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2504, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2505, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2512, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2511, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2510, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2518, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2468, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2467, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2518, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2466, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2465, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "653:24:4"}, "referencedDeclaration": 1880, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2644, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2546, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2524, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2534, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2529, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1920, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2533, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2535, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1872, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2537, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2545, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2540, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1908, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2544, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2547, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2521, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2547, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2520, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2519, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1016:24:4"}, "referencedDeclaration": 1880, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2644, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2642, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2640, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2572], "declarations": [{"constant": false, "id": 2572, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2571, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2576, "initialValue": {"baseExpression": {"id": 2573, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2575, "indexExpression": {"id": 2574, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2581], "declarations": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2580, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2579, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1599:24:4"}, "referencedDeclaration": 1880, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2586, "initialValue": {"baseExpression": {"expression": {"id": 2582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2585, "indexExpression": {"id": 2584, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2572, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2587, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2629, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2628, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2593, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2592, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2518, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1880_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2595, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2596, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2605, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2607, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2609, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2610, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2613, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2621, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2620, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2615, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1948, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2619, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2622, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2604, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2598, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2601, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2623, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2562, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2624, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2627, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2630, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2560, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2631, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2633, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2635, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2639, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2636, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2638, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2567, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2568, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2641, "initializationExpression": {"assignments": [2565], "declarations": [{"constant": false, "id": 2565, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2641, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2564, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2566, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2643, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2550, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2548, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2549, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2551, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2554, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2553, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2556, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2555, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1401:11:4"}, "referencedDeclaration": 2024, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2560, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2559, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2562, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2561, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2644, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2645, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "ISSVNetworkCore": [1967], "ProtocolLib": [2812], "SSVStorageProtocol": [2877], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2813, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2646, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2647, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 1968, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2648, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2115, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2878, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2812, "linearizedBaseContracts": [2812], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2652, "libraryName": {"id": 2650, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2114, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 2651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 2675, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2664, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2666, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2663, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2662, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 2669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2670, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2659, "id": 2674, "nodeType": "Return", "src": "443:96:5"}]}, "id": 2676, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2655, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 2676, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2654, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2653, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "374:15:5"}, "referencedDeclaration": 2854, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 2659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2658, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2676, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2657, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 2812, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2714, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 2685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2684, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2686, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2687, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 2694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2688, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2690, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2692, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2691, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2676, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2693, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2695, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 2704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2696, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2698, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2701, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2699, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 2703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2705, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 2712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2706, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2708, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2709, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2681, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2094, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2713, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 2715, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2682, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2679, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2677, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "578:15:5"}, "referencedDeclaration": 2854, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2681, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 2683, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 2812, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2739, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 2727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2721, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2723, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2725, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2724, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2768, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2726, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2728, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 2737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2729, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2731, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2734, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2733, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2732, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 2736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2738, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 2740, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2718, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 2740, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2717, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2716, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "956:15:5"}, "referencedDeclaration": 2854, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 2720, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 2812, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2767, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2748, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2749, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2752, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2751, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2750, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2755, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 2758, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2759, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2760, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2762, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2763, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2747, "id": 2766, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 2768, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2744, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2743, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2742, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2741, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1141:15:5"}, "referencedDeclaration": 2854, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 2747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2746, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 2812, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2810, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 2779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2778, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2781, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 2783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 2782, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2773, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2791, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2792, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2793, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2795, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 2798, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2797, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 2796, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 2800, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2808, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 2807, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2802, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1964, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2806, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 2809, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 2790, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 2788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2784, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2786, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2787, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2789, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 2811, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2771, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2770, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2769, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1351:15:5"}, "referencedDeclaration": 2854, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2773, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2772, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2775, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2774, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 2777, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 2812, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2813, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2048, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1969, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1970, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 1968, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1971, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 3030, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1972, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 2956, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1977, "members": [{"id": 1973, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 1974, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 1975, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 1976, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2024, "members": [{"constant": false, "id": 1982, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1981, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1979, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1980, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1987, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1986, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1984, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1985, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1992, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1991, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1989, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1990, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1998, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1997, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1995, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1994, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1006:10:6"}, "referencedDeclaration": 1977, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1996, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2003, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2002, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2000, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2009, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2008, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2005, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2007, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2006, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1890, "src": "1322:40:6"}, "referencedDeclaration": 1890, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1890_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2015, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2014, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2011, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2013, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2012, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1488:24:6"}, "referencedDeclaration": 1880, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2019, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}, "typeName": {"id": 2018, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2017, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2955, "src": "1599:6:6"}, "referencedDeclaration": 2955, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2023, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2022, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2021, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1686:16:6"}, "referencedDeclaration": 2961, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2048, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2047, "linearizedBaseContracts": [2047], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2034, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2047, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2028, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2030, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2032, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2045, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2041], "declarations": [{"constant": false, "id": 2041, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2045, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2043, "initialValue": {"id": 2042, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2041, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2038, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2044, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2046, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2035, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2038, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2046, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2037, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2036, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1891:11:6"}, "referencedDeclaration": 2024, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2047, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2048, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [2877], "StorageProtocol": [2854]}, "id": 2878, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2814, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 2854, "members": [{"constant": false, "id": 2817, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2816, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2820, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2819, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2823, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2822, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2826, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2825, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2829, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2828, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2832, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2831, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2835, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2834, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2838, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2837, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2841, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2840, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2844, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2843, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2847, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2846, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2850, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2849, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2853, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2852, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 2878, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2877, "linearizedBaseContracts": [2877], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2864, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 2877, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2855, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2863, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 2859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 2858, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2857, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 2861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2875, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [2871], "declarations": [{"constant": false, "id": 2871, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 2875, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2873, "initialValue": {"id": 2872, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2871, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 2868, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 2874, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 2876, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 2865, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 2869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2868, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 2876, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2867, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2866, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1711:15:7"}, "referencedDeclaration": 2854, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 2877, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2878, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "Types256": [2114], "Types64": [2065]}, "id": 2115, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2049, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 2052, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 2115, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2050, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 2051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2065, "linearizedBaseContracts": [2065], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2063, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2059, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2054, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2060, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2058, "id": 2062, "nodeType": "Return", "src": "212:30:8"}]}, "id": 2064, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2054, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 2064, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2053, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 2058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2064, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2056, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 2065, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2114, "linearizedBaseContracts": [2114], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2093, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2073, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2078, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 2075, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2077, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2079, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 2081, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 2072, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2083, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2087, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2086, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2089, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2084, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2071, "id": 2092, "nodeType": "Return", "src": "425:50:8"}]}, "id": 2094, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2067, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 2094, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2066, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 2071, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2070, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2094, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2069, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 2114, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2112, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2102, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2103, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 2107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 2101, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2109, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 2110, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2100, "id": 2111, "nodeType": "Return", "src": "638:12:8"}]}, "id": 2113, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 2113, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2113, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 2114, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol": {"AST": {"absolutePath": "contracts/modules/Clusters.sol", "exportedSymbols": {"ClusterLib": [732], "Clusters": [481], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 482, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/modules/SSVClusters.sol", "file": "./SSVClusters.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 1852, "src": "70:27:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 733, "src": "98:37:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVClusters", "nameLocations": ["158:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1851, "src": "158:11:9"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "158:11:9"}], "canonicalName": "Clusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 481, "linearizedBaseContracts": [481, 1851, 2270, 1967], "name": "Clusters", "nameLocation": "146:8:9", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 9, "libraryName": {"id": 6, "name": "ClusterLib", "nameLocations": ["182:10:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "182:10:9"}, "nodeType": "UsingForDirective", "src": "176:29:9", "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "Cluster", "nameLocations": ["197:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "197:7:9"}, "referencedDeclaration": 1906, "src": "197:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"body": {"id": 12, "nodeType": "Block", "src": "225:2:9", "statements": []}, "id": 13, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "222:2:9"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "225:0:9"}, "scope": 481, "src": "211:16:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"constant": false, "id": 16, "mutability": "mutable", "name": "publicKeys", "nameLocation": "241:10:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "233:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 14, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "233:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 15, "nodeType": "ArrayTypeName", "src": "233:7:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "visibility": "internal"}, {"constant": false, "id": 19, "mutability": "mutable", "name": "hashedClusters", "nameLocation": "267:14:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "257:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[]"}, "typeName": {"baseType": {"id": 17, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "257:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 18, "nodeType": "ArrayTypeName", "src": "257:9:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]"}}, "visibility": "internal"}, {"constant": false, "functionSelector": "bfbdaffd", "id": 22, "mutability": "mutable", "name": "operatorIds", "nameLocation": "303:11:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "287:27:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 20, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "287:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ArrayTypeName", "src": "287:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "public"}, {"constant": true, "id": 25, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "345:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "321:48:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 23, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "321:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "368:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 28, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "399:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "375:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 26, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 27, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "422:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 31, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "454:23:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "430:51:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "430:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 30, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "480:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 34, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "511:17:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "487:46:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "487:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 33, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "531:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"constant": false, "id": 37, "mutability": "mutable", "name": "sault", "nameLocation": "555:5:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "539:25:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 35, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "539:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "30", "id": 36, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "563:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "visibility": "private"}, {"body": {"id": 93, "nodeType": "Block", "src": "633:306:9", "statements": [{"assignments": [43], "declarations": [{"constant": false, "id": 43, "mutability": "mutable", "name": "randomBytes", "nameLocation": "656:11:9", "nodeType": "VariableDeclaration", "scope": 93, "src": "643:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 42, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "643:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 48, "initialValue": {"arguments": [{"hexValue": "3438", "id": 46, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "680:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 45, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "670:9:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 44, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "674:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "670:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "643:40:9"}, {"body": {"id": 86, "nodeType": "Block", "src": "723:165:9", "statements": [{"expression": {"id": 84, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 59, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "737:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 61, "indexExpression": {"id": 60, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "737:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 71, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "816:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 72, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "823:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "829:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "823:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 74, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "840:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "844:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "840:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 76, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "852:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 69, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "799:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "803:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "799:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 77, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "799:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 68, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "789:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 78, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "789:66:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "784:4:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 66, "name": "uint", "nodeType": "ElementaryTypeName", "src": "784:4:9", "typeDescriptions": {}}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "784:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "859:3:9", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "784:78:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "778:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 64, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "778:5:9", "typeDescriptions": {}}}, "id": 82, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "778:85:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "754:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 62, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "754:6:9", "typeDescriptions": {}}}, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "754:123:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "737:140:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "737:140:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 53, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "710:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 54, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "710:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 87, "initializationExpression": {"assignments": [50], "declarations": [{"constant": false, "id": 50, "mutability": "mutable", "name": "i", "nameLocation": "703:1:9", "nodeType": "VariableDeclaration", "scope": 87, "src": "698:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 49, "name": "uint", "nodeType": "ElementaryTypeName", "src": "698:4:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 52, "initialValue": {"hexValue": "30", "id": 51, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "707:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "698:10:9"}, "loopExpression": {"expression": {"id": 57, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "718:3:9", "subExpression": {"id": 56, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "718:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 58, "nodeType": "ExpressionStatement", "src": "718:3:9"}, "nodeType": "ForStatement", "src": "693:195:9"}, {"expression": {"id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "897:7:9", "subExpression": {"id": 88, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "897:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 90, "nodeType": "ExpressionStatement", "src": "897:7:9"}, {"expression": {"id": 91, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "921:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 41, "id": 92, "nodeType": "Return", "src": "914:18:9"}]}, "id": 94, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "580:18:9", "nodeType": "FunctionDefinition", "parameters": {"id": 38, "nodeType": "ParameterList", "parameters": [], "src": "598:2:9"}, "returnParameters": {"id": 41, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 40, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 94, "src": "619:12:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 39, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "619:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "618:14:9"}, "scope": 481, "src": "571:368:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1024:1090:9", "statements": [{"assignments": [101], "declarations": [{"constant": false, "id": 101, "mutability": "mutable", "name": "baseLength", "nameLocation": "1042:10:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1034:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1034:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 118, "initialValue": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 107, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1091:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1097:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1091:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 109, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1108:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1112:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1108:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 111, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1120:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 105, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1074:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1078:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1074:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1074:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 104, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1064:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1064:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1056:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1056:7:9", "typeDescriptions": {}}}, "id": 114, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1056:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 115, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "1143:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1056:107:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 117, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1055:109:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1034:130:9"}, {"assignments": [120], "declarations": [{"constant": false, "id": 120, "mutability": "mutable", "name": "length", "nameLocation": "1182:6:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1174:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1174:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 126, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "34", "id": 121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1191:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 122, "name": "baseLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 101, "src": "1195:10:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "33", "id": 123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1208:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "src": "1195:14:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1191:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1174:35:9"}, {"expression": {"id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1264:7:9", "subExpression": {"id": 127, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1264:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 129, "nodeType": "ExpressionStatement", "src": "1264:7:9"}, {"expression": {"id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 130, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1282:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 134, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1309:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1296:12:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint64[] memory)"}, "typeName": {"baseType": {"id": 131, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1300:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 132, "nodeType": "ArrayTypeName", "src": "1300:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}}, "id": 135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1296:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "src": "1282:34:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 137, "nodeType": "ExpressionStatement", "src": "1282:34:9"}, {"body": {"id": 215, "nodeType": "Block", "src": "1363:717:9", "statements": [{"assignments": [149], "declarations": [{"constant": false, "id": 149, "mutability": "mutable", "name": "randomId", "nameLocation": "1384:8:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1377:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 148, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1377:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 150, "nodeType": "VariableDeclarationStatement", "src": "1377:15:9"}, {"assignments": [152], "declarations": [{"constant": false, "id": 152, "mutability": "mutable", "name": "unique", "nameLocation": "1411:6:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1406:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 151, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1406:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 153, "nodeType": "VariableDeclarationStatement", "src": "1406:11:9"}, {"body": {"id": 169, "nodeType": "Block", "src": "1434:187:9", "statements": [{"expression": {"id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1452:7:9", "subExpression": {"id": 154, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1452:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 156, "nodeType": "ExpressionStatement", "src": "1452:7:9"}, {"expression": {"id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 157, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1526:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "id": 158, "name": "_generateRandomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 247, "src": "1537:17:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint64_$", "typeString": "function () returns (uint64)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1537:19:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1526:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 161, "nodeType": "ExpressionStatement", "src": "1526:30:9"}, {"expression": {"id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 162, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1574:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1583:23:9", "subExpression": {"arguments": [{"id": 164, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1597:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 163, "name": "_isDuplicate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "1584:12:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$", "typeString": "function (uint64) view returns (bool)"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1584:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1574:32:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 168, "nodeType": "ExpressionStatement", "src": "1574:32:9"}]}, "condition": {"id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1629:7:9", "subExpression": {"id": 170, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1630:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 172, "nodeType": "DoWhileStatement", "src": "1431:207:9"}, {"assignments": [174], "declarations": [{"constant": false, "id": 174, "mutability": "mutable", "name": "j", "nameLocation": "1723:1:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1715:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1715:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 176, "initialValue": {"id": 175, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1727:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1715:13:9"}, {"body": {"id": 207, "nodeType": "Block", "src": "1789:190:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 188, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1811:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 189, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1815:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1827:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1815:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1811:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 203, "nodeType": "IfStatement", "src": "1807:137:9", "trueBody": {"id": 202, "nodeType": "Block", "src": "1835:109:9", "statements": [{"expression": {"id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 192, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1857:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 194, "indexExpression": {"id": 193, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1869:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1857:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 195, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1874:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 199, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 196, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1886:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1890:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1886:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1874:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1857:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 201, "nodeType": "ExpressionStatement", "src": "1857:35:9"}]}}, {"expression": {"id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "1961:3:9", "subExpression": {"id": 204, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1961:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 206, "nodeType": "ExpressionStatement", "src": "1961:3:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1753:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1749:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 180, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1758:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 184, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 181, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1770:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1774:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1770:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1758:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 185, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1779:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1758:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1749:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 208, "nodeType": "WhileStatement", "src": "1742:237:9"}, {"expression": {"id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 209, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1992:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 211, "indexExpression": {"id": 210, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "2004:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1992:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 212, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "2009:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1992:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 214, "nodeType": "ExpressionStatement", "src": "1992:25:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 142, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1346:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 143, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1350:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1346:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 216, "initializationExpression": {"assignments": [139], "declarations": [{"constant": false, "id": 139, "mutability": "mutable", "name": "i", "nameLocation": "1339:1:9", "nodeType": "VariableDeclaration", "scope": 216, "src": "1331:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1331:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 141, "initialValue": {"hexValue": "30", "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1343:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1331:13:9"}, "loopExpression": {"expression": {"id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1358:3:9", "subExpression": {"id": 145, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1358:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 147, "nodeType": "ExpressionStatement", "src": "1358:3:9"}, "nodeType": "ForStatement", "src": "1326:754:9"}, {"expression": {"id": 217, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "2096:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "functionReturnParameters": 99, "id": 218, "nodeType": "Return", "src": "2089:18:9"}]}, "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateOperatorIds", "nameLocation": "954:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 95, "nodeType": "ParameterList", "parameters": [], "src": "974:2:9"}, "returnParameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1011:11:9", "nodeType": "VariableDeclaration", "scope": 220, "src": "995:27:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 96, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "995:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 97, "nodeType": "ArrayTypeName", "src": "995:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "src": "994:29:9"}, "scope": 481, "src": "945:1169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 246, "nodeType": "Block", "src": "2175:114:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 232, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2234:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2240:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2234:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 234, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2251:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2255:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2251:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 236, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2263:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 230, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2217:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2221:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2217:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2217:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 229, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2207:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2207:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2199:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2199:7:9", "typeDescriptions": {}}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2199:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 242, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2274:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2279:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "2274:7:9", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "src": "2199:82:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 226, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2192:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 225, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2192:6:9", "typeDescriptions": {}}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2192:90:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 224, "id": 245, "nodeType": "Return", "src": "2185:97:9"}]}, "id": 247, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateRandomId", "nameLocation": "2129:17:9", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "2146:2:9"}, "returnParameters": {"id": 224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 223, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 247, "src": "2167:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 222, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2167:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2166:8:9"}, "scope": 481, "src": "2120:169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 278, "nodeType": "Block", "src": "2357:181:9", "statements": [{"body": {"id": 274, "nodeType": "Block", "src": "2416:94:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 265, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2434:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 267, "indexExpression": {"id": 266, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2446:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2434:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 268, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "2452:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2434:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 273, "nodeType": "IfStatement", "src": "2430:70:9", "trueBody": {"id": 272, "nodeType": "Block", "src": "2456:44:9", "statements": [{"expression": {"hexValue": "74727565", "id": 270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2481:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 253, "id": 271, "nodeType": "Return", "src": "2474:11:9"}]}}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 258, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2387:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 259, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2391:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2403:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "2391:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2387:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 275, "initializationExpression": {"assignments": [255], "declarations": [{"constant": false, "id": 255, "mutability": "mutable", "name": "i", "nameLocation": "2380:1:9", "nodeType": "VariableDeclaration", "scope": 275, "src": "2372:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2372:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 257, "initialValue": {"hexValue": "30", "id": 256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2384:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2372:13:9"}, "loopExpression": {"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2411:3:9", "subExpression": {"id": 262, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2411:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2411:3:9"}, "nodeType": "ForStatement", "src": "2367:143:9"}, {"expression": {"hexValue": "66616c7365", "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2526:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 253, "id": 277, "nodeType": "Return", "src": "2519:12:9"}]}, "id": 279, "implemented": true, "kind": "function", "modifiers": [], "name": "_isDuplicate", "nameLocation": "2304:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 249, "mutability": "mutable", "name": "id", "nameLocation": "2324:2:9", "nodeType": "VariableDeclaration", "scope": 279, "src": "2317:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2317:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2316:11:9"}, "returnParameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 279, "src": "2351:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 251, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2351:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2350:6:9"}, "scope": 481, "src": "2295:243:9", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 405, "nodeType": "Block", "src": "2652:880:9", "statements": [{"assignments": [291], "declarations": [{"constant": false, "id": 291, "mutability": "mutable", "name": "s", "nameLocation": "2682:1:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2662:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 290, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 289, "name": "StorageData", "nameLocations": ["2662:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "2662:11:9"}, "referencedDeclaration": 2024, "src": "2662:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 295, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 292, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "2686:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2697:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "2686:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2686:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2662:41:9"}, {"assignments": [297], "declarations": [{"constant": false, "id": 297, "mutability": "mutable", "name": "_publicKey", "nameLocation": "2727:10:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2714:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 296, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2714:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 300, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 298, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, "src": "2740:18:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2714:46:9"}, {"assignments": [305], "declarations": [{"constant": false, "id": 305, "mutability": "mutable", "name": "_operatorIds", "nameLocation": "2786:12:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2770:28:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 303, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2770:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 304, "nodeType": "ArrayTypeName", "src": "2770:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "id": 308, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 306, "name": "_generateOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2801:20:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function () returns (uint64[] memory)"}}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2801:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2770:53:9"}, {"assignments": [310], "declarations": [{"constant": false, "id": 310, "mutability": "mutable", "name": "_hashedCluster", "nameLocation": "2842:14:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2834:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 309, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2834:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 319, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 314, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2886:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2890:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2886:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 316, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2898:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 312, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2869:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2873:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2869:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 317, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2869:42:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 311, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2859:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2859:53:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2834:78:9"}, {"assignments": [321], "declarations": [{"constant": false, "id": 321, "mutability": "mutable", "name": "clusterData", "nameLocation": "2931:11:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2923:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 320, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2923:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 326, "initialValue": {"baseExpression": {"expression": {"id": 322, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2945:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2947:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "2945:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 325, "indexExpression": {"id": 324, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "2956:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2945:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2923:48:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 327, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "2985:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3008:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 329, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3000:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 328, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3000:7:9", "typeDescriptions": {}}}, "id": 331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3000:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2985:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 374, "nodeType": "Block", "src": "3209:79:9", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 364, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "3223:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3225:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3223:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 368, "indexExpression": {"id": 366, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3234:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3223:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 369, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3252:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3260:15:9", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "3252:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3252:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3223:54:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3223:54:9"}]}, "id": 375, "nodeType": "IfStatement", "src": "2981:307:9", "trueBody": {"id": 363, "nodeType": "Block", "src": "3012:191:9", "statements": [{"expression": {"id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 333, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3026:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3034:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "3026:22:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3051:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3026:26:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 338, "nodeType": "ExpressionStatement", "src": "3026:26:9"}, {"expression": {"id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 339, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3066:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3074:15:9", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "3066:23:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 342, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3092:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3066:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 344, "nodeType": "ExpressionStatement", "src": "3066:27:9"}, {"expression": {"id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 345, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3107:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 347, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3115:5:9", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "3107:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3123:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3107:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 350, "nodeType": "ExpressionStatement", "src": "3107:17:9"}, {"expression": {"id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 351, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3138:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 353, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3146:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "3138:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3156:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3138:19:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 356, "nodeType": "ExpressionStatement", "src": "3138:19:9"}, {"expression": {"id": 361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 357, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3171:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3179:6:9", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "3171:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3188:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3171:21:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 362, "nodeType": "ExpressionStatement", "src": "3171:21:9"}]}}, {"clauses": [{"block": {"id": 396, "nodeType": "Block", "src": "3380:101:9", "statements": [{"expression": {"arguments": [{"id": 387, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3410:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 384, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3394:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3405:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3394:15:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_bytes_storage_$returns$__$attached_to$_t_array$_t_bytes_storage_$dyn_storage_ptr_$", "typeString": "function (bytes storage ref[] storage pointer,bytes storage ref)"}}, "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3394:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 389, "nodeType": "ExpressionStatement", "src": "3394:27:9"}, {"expression": {"arguments": [{"id": 393, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3455:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 390, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3435:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3450:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3435:19:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", "typeString": "function (bytes32[] storage pointer,bytes32)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3435:35:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3435:35:9"}]}, "errorName": "", "id": 397, "nodeType": "TryCatchClause", "src": "3380:101:9"}, {"block": {"id": 402, "nodeType": "Block", "src": "3488:38:9", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3509:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 398, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3502:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3502:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3502:13:9"}]}, "errorName": "", "id": 403, "nodeType": "TryCatchClause", "src": "3482:44:9"}], "externalCall": {"arguments": [{"id": 378, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3325:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 379, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "3337:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 380, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 281, "src": "3351:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 381, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 283, "src": "3363:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 382, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3371:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 376, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3302:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3307:17:9", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1161, "src": "3302:22:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,bytes memory,uint256,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3302:77:9", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 404, "nodeType": "TryStatement", "src": "3298:228:9"}]}, "functionSelector": "d86eda8c", "id": 406, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_registerValidator", "nameLocation": "2553:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 281, "mutability": "mutable", "name": "sharesData", "nameLocation": "2593:10:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2578:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 280, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2578:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 283, "mutability": "mutable", "name": "amount", "nameLocation": "2613:6:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2605:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2605:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 286, "mutability": "mutable", "name": "cluster", "nameLocation": "2636:7:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2621:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 285, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 284, "name": "Cluster", "nameLocations": ["2621:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2621:7:9"}, "referencedDeclaration": 1906, "src": "2621:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2577:67:9"}, "returnParameters": {"id": 288, "nodeType": "ParameterList", "parameters": [], "src": "2652:0:9"}, "scope": 481, "src": "2544:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 437, "nodeType": "Block", "src": "3651:148:9", "statements": [{"expression": {"id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 417, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3661:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 418, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3675:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 421, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3696:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3707:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3696:17:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 420, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3689:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 419, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3689:6:9", "typeDescriptions": {}}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3689:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3675:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3661:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 426, "nodeType": "ExpressionStatement", "src": "3661:53:9"}, {"expression": {"arguments": [{"baseExpression": {"id": 430, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3746:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 432, "indexExpression": {"id": 431, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3757:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3746:23:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}}, {"id": 433, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "3771:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 434, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "3784:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 427, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3725:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3730:15:9", "memberName": "removeValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1319, "src": "3725:20:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3725:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 436, "nodeType": "ExpressionStatement", "src": "3725:67:9"}]}, "functionSelector": "d7b8edbd", "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removeValidator", "nameLocation": "3547:21:9", "nodeType": "FunctionDefinition", "parameters": {"id": 415, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 408, "mutability": "mutable", "name": "publicKeyId", "nameLocation": "3576:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3569:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 407, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3569:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3607:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3589:29:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3589:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 410, "nodeType": "ArrayTypeName", "src": "3589:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 414, "mutability": "mutable", "name": "cluster", "nameLocation": "3635:7:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3620:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 413, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 412, "name": "Cluster", "nameLocations": ["3620:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3620:7:9"}, "referencedDeclaration": 1906, "src": "3620:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3568:75:9"}, "returnParameters": {"id": 416, "nodeType": "ParameterList", "parameters": [], "src": "3651:0:9"}, "scope": 481, "src": "3538:261:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 475, "nodeType": "Block", "src": "3852:195:9", "statements": [{"assignments": [443], "declarations": [{"constant": false, "id": 443, "mutability": "mutable", "name": "s", "nameLocation": "3882:1:9", "nodeType": "VariableDeclaration", "scope": 475, "src": "3862:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 442, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 441, "name": "StorageData", "nameLocations": ["3862:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "3862:11:9"}, "referencedDeclaration": 2024, "src": "3862:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 447, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 444, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "3886:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3897:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "3886:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3886:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3862:41:9"}, {"body": {"id": 473, "nodeType": "Block", "src": "3965:76:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 460, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 443, "src": "3986:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3988:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3986:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 465, "indexExpression": {"baseExpression": {"id": 462, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3997:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 464, "indexExpression": {"id": 463, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "4012:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3997:17:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3986:29:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4027:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4019:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 466, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4019:7:9", "typeDescriptions": {}}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4019:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3986:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 459, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3979:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3979:51:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "3979:51:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3933:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 453, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3937:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3952:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:21:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3933:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 474, "initializationExpression": {"assignments": [449], "declarations": [{"constant": false, "id": 449, "mutability": "mutable", "name": "i", "nameLocation": "3926:1:9", "nodeType": "VariableDeclaration", "scope": 474, "src": "3919:8:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 448, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3919:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 451, "initialValue": {"hexValue": "30", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3930:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3919:12:9"}, "loopExpression": {"expression": {"id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3960:3:9", "subExpression": {"id": 456, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3960:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 458, "nodeType": "ExpressionStatement", "src": "3960:3:9"}, "nodeType": "ForStatement", "src": "3914:127:9"}]}, "functionSelector": "01ddff09", "id": 476, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_validatorPKs", "nameLocation": "3814:28:9", "nodeType": "FunctionDefinition", "parameters": {"id": 439, "nodeType": "ParameterList", "parameters": [], "src": "3842:2:9"}, "returnParameters": {"id": 440, "nodeType": "ParameterList", "parameters": [], "src": "3852:0:9"}, "scope": 481, "src": "3805:242:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 479, "nodeType": "Block", "src": "4096:2:9", "statements": []}, "functionSelector": "626b6b8d", "id": 480, "implemented": true, "kind": "function", "modifiers": [], "name": "check_numberOfValidators", "nameLocation": "4062:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 477, "nodeType": "ParameterList", "parameters": [], "src": "4086:2:9"}, "returnParameters": {"id": 478, "nodeType": "ParameterList", "parameters": [], "src": "4096:0:9"}, "scope": 481, "src": "4053:45:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 482, "src": "137:3963:9", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:4056:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol": {"AST": {"absolutePath": "contracts/modules/SSVClusters.sol", "exportedSymbols": {"ClusterLib": [732], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 1852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 734, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:10"}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "../interfaces/ISSVClusters.sol", "id": 735, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2271, "src": "70:40:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 736, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 733, "src": "111:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 737, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2645, "src": "149:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 738, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2813, "src": "188:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 739, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2402, "src": "227:34:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 740, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2048, "src": "262:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 741, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2878, "src": "300:45:10", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 742, "name": "ISSVClusters", "nameLocations": ["371:12:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2270, "src": "371:12:10"}, "id": 743, "nodeType": "InheritanceSpecifier", "src": "371:12:10"}], "canonicalName": "SSVClusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1851, "linearizedBaseContracts": [1851, 2270, 1967], "name": "SSVClusters", "nameLocation": "356:11:10", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 747, "libraryName": {"id": 744, "name": "ClusterLib", "nameLocations": ["396:10:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "396:10:10"}, "nodeType": "UsingForDirective", "src": "390:29:10", "typeName": {"id": 746, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 745, "name": "Cluster", "nameLocations": ["411:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "411:7:10"}, "referencedDeclaration": 1906, "src": "411:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"global": false, "id": 751, "libraryName": {"id": 748, "name": "OperatorLib", "nameLocations": ["430:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2644, "src": "430:11:10"}, "nodeType": "UsingForDirective", "src": "424:31:10", "typeName": {"id": 750, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 749, "name": "Operator", "nameLocations": ["446:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "446:8:10"}, "referencedDeclaration": 1880, "src": "446:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"global": false, "id": 755, "libraryName": {"id": 752, "name": "ProtocolLib", "nameLocations": ["466:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2812, "src": "466:11:10"}, "nodeType": "UsingForDirective", "src": "460:38:10", "typeName": {"id": 754, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 753, "name": "StorageProtocol", "nameLocations": ["482:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "482:15:10"}, "referencedDeclaration": 2854, "src": "482:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 758, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "527:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "503:48:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "503:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "550:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 761, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "581:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "557:49:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "557:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "604:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 764, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "636:23:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "612:51:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "612:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 767, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "693:17:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "669:46:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "669:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "713:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"baseFunctions": [2135], "body": {"id": 1160, "nodeType": "Block", "src": "935:3871:10", "statements": [{"assignments": [785], "declarations": [{"constant": false, "id": 785, "mutability": "mutable", "name": "s", "nameLocation": "965:1:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "945:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 784, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 783, "name": "StorageData", "nameLocations": ["945:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "945:11:10"}, "referencedDeclaration": 2024, "src": "945:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 789, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 786, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "969:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "980:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "969:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "969:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "945:41:10"}, {"assignments": [792], "declarations": [{"constant": false, "id": 792, "mutability": "mutable", "name": "sp", "nameLocation": "1020:2:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "996:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 790, "name": "StorageProtocol", "nameLocations": ["996:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "996:15:10"}, "referencedDeclaration": 2854, "src": "996:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 796, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 793, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1025:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1044:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1025:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1025:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "996:54:10"}, {"assignments": [798], "declarations": [{"constant": false, "id": 798, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "1069:15:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1061:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 797, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1061:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 801, "initialValue": {"expression": {"id": 799, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1087:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1099:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1087:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1061:44:10"}, {"id": 877, "nodeType": "Block", "src": "1115:715:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 808, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 802, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1150:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 803, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "1168:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1150:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 805, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1208:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 806, "name": "MAX_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "1226:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1208:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:96:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1266:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 810, "name": "MODULO_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1284:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1266:41:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "31", "id": 812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1311:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1266:46:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:162:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 819, "nodeType": "IfStatement", "src": "1129:264:10", "trueBody": {"id": 818, "nodeType": "Block", "src": "1327:66:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 815, "name": "InvalidOperatorIdsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1934, "src": "1352:24:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1352:26:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 817, "nodeType": "RevertStatement", "src": "1345:33:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 820, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1411:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1421:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1411:16:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 822, "name": "PUBLIC_KEY_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "1431:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1411:37:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 827, "nodeType": "IfStatement", "src": "1407:74:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 824, "name": "InvalidPublicKeyLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1932, "src": "1457:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1457:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 826, "nodeType": "RevertStatement", "src": "1450:31:10"}}, {"assignments": [829], "declarations": [{"constant": false, "id": 829, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1504:8:10", "nodeType": "VariableDeclaration", "scope": 877, "src": "1496:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 828, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1496:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 838, "initialValue": {"arguments": [{"arguments": [{"id": 833, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1542:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 834, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1553:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1557:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1553:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 831, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1525:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1529:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1525:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 830, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1515:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1515:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1496:69:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 839, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 840, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1586:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1584:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 842, "indexExpression": {"id": 841, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1599:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1584:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1620:1:10", "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": 844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {}}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1612:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1584:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 852, "nodeType": "IfStatement", "src": "1580:108:10", "trueBody": {"id": 851, "nodeType": "Block", "src": "1624:64:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 848, "name": "ValidatorAlreadyExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1924, "src": "1649:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1649:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 850, "nodeType": "RevertStatement", "src": "1642:31:10"}]}}, {"expression": {"id": 875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 853, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1702:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1704:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1702:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 857, "indexExpression": {"id": 855, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1717:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1702:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 865, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1772:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 863, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1755:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1759:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1755:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 862, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1745:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1745:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1737:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1737:7:10", "typeDescriptions": {}}}, "id": 868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1737:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "|", "rightExpression": {"arguments": [{"hexValue": "30783031", "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1797:4:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "0x01"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1789:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 869, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1789:7:10", "typeDescriptions": {}}}, "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1789:13:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1737:65:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 859, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1729:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 858, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:10", "typeDescriptions": {}}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1729:74:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1702:101:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 876, "nodeType": "ExpressionStatement", "src": "1702:101:10"}]}, {"assignments": [879], "declarations": [{"constant": false, "id": 879, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1847:13:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1839:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 878, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1839:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 888, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 883, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1890:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1894:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1890:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 885, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1902:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 881, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1873:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1877:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1873:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1873:41:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 880, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1863:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1863:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1839:76:10"}, {"id": 948, "nodeType": "Block", "src": "1926:661:10", "statements": [{"assignments": [890], "declarations": [{"constant": false, "id": 890, "mutability": "mutable", "name": "clusterData", "nameLocation": "1948:11:10", "nodeType": "VariableDeclaration", "scope": 948, "src": "1940:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1940:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 895, "initialValue": {"baseExpression": {"expression": {"id": 891, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1962:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1964:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1962:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 894, "indexExpression": {"id": 893, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "1973:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1962:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1940:47:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 896, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2005:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2028:1:10", "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": 898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2020:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 897, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2020:7:10", "typeDescriptions": {}}}, "id": 900, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2020:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2005:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 931, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2393:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 932, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2408:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 933, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2416:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "2408:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2408:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2393:40:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 945, "nodeType": "Block", "src": "2504:73:10", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2522:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2530:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "2522:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2522:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "2522:40:10"}]}, "id": 946, "nodeType": "IfStatement", "src": "2389:188:10", "trueBody": {"id": 939, "nodeType": "Block", "src": "2435:63:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 936, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2460:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 937, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2460:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 938, "nodeType": "RevertStatement", "src": "2453:30:10"}]}}, "id": 947, "nodeType": "IfStatement", "src": "2001:576:10", "trueBody": {"id": 930, "nodeType": "Block", "src": "2032:351:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 902, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2075:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2083:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2075:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2101:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2075:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 906, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2126:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 907, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2134:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2126:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2153:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2126:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:79:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 911, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2178:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 912, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2186:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2178:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2195:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2178:18:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:121:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 916, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2220:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 917, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2228:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2220:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2239:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2220:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:165:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2264:15:10", "subExpression": {"expression": {"id": 921, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2265:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2273:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2265:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:204:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 929, "nodeType": "IfStatement", "src": "2050:319:10", "trueBody": {"id": 928, "nodeType": "Block", "src": "2298:71:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 925, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2327:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2327:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 927, "nodeType": "RevertStatement", "src": "2320:30:10"}]}}]}}]}, {"expression": {"id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 949, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2597:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 951, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2605:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2597:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 952, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "2616:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2597:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 954, "nodeType": "ExpressionStatement", "src": "2597:25:10"}, {"assignments": [956], "declarations": [{"constant": false, "id": 956, "mutability": "mutable", "name": "burnRate", "nameLocation": "2640:8:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "2633:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 955, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2633:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 957, "nodeType": "VariableDeclarationStatement", "src": "2633:15:10"}, {"condition": {"expression": {"id": 958, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2663:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2671:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2663:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1110, "nodeType": "IfStatement", "src": "2659:1596:10", "trueBody": {"id": 1109, "nodeType": "Block", "src": "2679:1576:10", "statements": [{"assignments": [961], "declarations": [{"constant": false, "id": 961, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2700:12:10", "nodeType": "VariableDeclaration", "scope": 1109, "src": "2693:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2693:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 962, "nodeType": "VariableDeclarationStatement", "src": "2693:19:10"}, {"body": {"id": 1091, "nodeType": "Block", "src": "2766:1361:10", "statements": [{"assignments": [970], "declarations": [{"constant": false, "id": 970, "mutability": "mutable", "name": "operatorId", "nameLocation": "2791:10:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "2784:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2784:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 974, "initialValue": {"baseExpression": {"id": 971, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2804:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 973, "indexExpression": {"id": 972, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2816:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2804:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2784:34:10"}, {"id": 1006, "nodeType": "Block", "src": "2836:373:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 975, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2862:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2866:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2862:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 978, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2870:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2862:23:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1005, "nodeType": "IfStatement", "src": "2858:333:10", "trueBody": {"id": 1004, "nodeType": "Block", "src": "2887:304:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 980, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "2917:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"baseExpression": {"id": 981, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2930:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 985, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2942:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2946:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2942:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2930:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2917:31:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 991, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3047:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"baseExpression": {"id": 992, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "3061:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 996, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 993, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "3073:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3077:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3073:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3061:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3047:32:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1002, "nodeType": "IfStatement", "src": "3043:126:10", "trueBody": {"id": 1001, "nodeType": "Block", "src": "3081:88:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 998, "name": "OperatorsListNotUnique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1958, "src": "3118:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3118:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1000, "nodeType": "RevertStatement", "src": "3111:31:10"}]}}, "id": 1003, "nodeType": "IfStatement", "src": "2913:256:10", "trueBody": {"id": 990, "nodeType": "Block", "src": "2950:87:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 987, "name": "UnsortedOperatorsList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1944, "src": "2987:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2987:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 989, "nodeType": "RevertStatement", "src": "2980:30:10"}]}}]}}]}, {"assignments": [1009], "declarations": [{"constant": false, "id": 1009, "mutability": "mutable", "name": "operator", "nameLocation": "3243:8:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "3227:24:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1008, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1007, "name": "Operator", "nameLocations": ["3227:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "3227:8:10"}, "referencedDeclaration": 1880, "src": "3227:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1014, "initialValue": {"baseExpression": {"expression": {"id": 1010, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3254:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3256:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "3254:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1013, "indexExpression": {"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3266:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3254:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3227:50:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1015, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3299:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1016, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3308:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3299:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3317:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "3299:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3326:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3299:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1024, "nodeType": "IfStatement", "src": "3295:104:10", "trueBody": {"id": 1023, "nodeType": "Block", "src": "3329:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1020, "name": "OperatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1920, "src": "3358:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3358:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1022, "nodeType": "RevertStatement", "src": "3351:29:10"}]}}, {"condition": {"expression": {"id": 1025, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3420:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3429:11:10", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1875, "src": "3420:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1051, "nodeType": "IfStatement", "src": "3416:280:10", "trueBody": {"id": 1050, "nodeType": "Block", "src": "3442:254:10", "statements": [{"assignments": [1028], "declarations": [{"constant": false, "id": 1028, "mutability": "mutable", "name": "whitelisted", "nameLocation": "3472:11:10", "nodeType": "VariableDeclaration", "scope": 1050, "src": "3464:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1027, "name": "address", "nodeType": "ElementaryTypeName", "src": "3464:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1033, "initialValue": {"baseExpression": {"expression": {"id": 1029, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3486:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1030, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3488:18:10", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2003, "src": "3486:20:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1032, "indexExpression": {"id": 1031, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3507:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3486:32:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3464:54:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1034, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3544:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3567:1:10", "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": 1036, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3559:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1035, "name": "address", "nodeType": "ElementaryTypeName", "src": "3559:7:10", "typeDescriptions": {}}}, "id": 1038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3559:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3544:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1040, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3573:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1041, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3588:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3592:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "3588:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3573:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3544:54:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1049, "nodeType": "IfStatement", "src": "3540:138:10", "trueBody": {"id": 1048, "nodeType": "Block", "src": "3600:78:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1045, "name": "CallerNotWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1910, "src": "3633:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3633:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1047, "nodeType": "RevertStatement", "src": "3626:29:10"}]}}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1052, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3713:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3722:14:10", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "3713:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1880_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1880_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3713:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1056, "nodeType": "ExpressionStatement", "src": "3713:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "3760:25:10", "subExpression": {"expression": {"id": 1057, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3762:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3771:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "3762:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1060, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "3788:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1061, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3791:26:10", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "3788:29:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "3760:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1067, "nodeType": "IfStatement", "src": "3756:133:10", "trueBody": {"id": 1066, "nodeType": "Block", "src": "3819:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1063, "name": "ExceedValidatorLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1948, "src": "3848:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3848:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1065, "nodeType": "RevertStatement", "src": "3841:29:10"}]}}, {"expression": {"id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1068, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "3906:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 1069, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3922:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3931:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3922:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1071, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3940:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "3922:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3906:39:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1073, "nodeType": "ExpressionStatement", "src": "3906:39:10"}, {"expression": {"id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1074, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "3963:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1075, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3975:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1076, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3984:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "3975:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3963:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1078, "nodeType": "ExpressionStatement", "src": "3963:24:10"}, {"expression": {"id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1079, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4006:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4008:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "4006:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1083, "indexExpression": {"id": 1081, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "4018:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4006:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1084, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "4032:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "4006:34:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1086, "nodeType": "ExpressionStatement", "src": "4006:34:10"}, {"id": 1090, "nodeType": "UncheckedBlock", "src": "4059:54:10", "statements": [{"expression": {"id": 1088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4091:3:10", "subExpression": {"id": 1087, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "4093:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1089, "nodeType": "ExpressionStatement", "src": "4091:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 966, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2743:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 967, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2747:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2743:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1092, "initializationExpression": {"assignments": [964], "declarations": [{"constant": false, "id": 964, "mutability": "mutable", "name": "i", "nameLocation": "2740:1:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2732:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2732:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 965, "nodeType": "VariableDeclarationStatement", "src": "2732:9:10"}, "nodeType": "ForStatement", "src": "2727:1400:10"}, {"expression": {"arguments": [{"id": 1096, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "4166:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1097, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4180:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1098, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4183:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "4180:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4180:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1093, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4140:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1095, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4148:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "4140:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4140:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1101, "nodeType": "ExpressionStatement", "src": "4140:68:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4236:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"hexValue": "31", "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4242:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1102, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4223:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4226:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "4223:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4223:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1108, "nodeType": "ExpressionStatement", "src": "4223:21:10"}]}}, {"expression": {"id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4265:24:10", "subExpression": {"expression": {"id": 1111, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4267:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4275:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "4267:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1114, "nodeType": "ExpressionStatement", "src": "4265:24:10"}, {"condition": {"arguments": [{"id": 1117, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "4357:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1118, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4383:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4386:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "4383:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1120, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4414:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1121, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4417:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "4414:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1122, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4465:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4468:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "4465:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1115, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4317:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4325:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "4317:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4317:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1129, "nodeType": "IfStatement", "src": "4300:274:10", "trueBody": {"id": 1128, "nodeType": "Block", "src": "4521:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "4542:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4542:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "4535:28:10"}]}}, {"expression": {"id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1130, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4586:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "4584:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1134, "indexExpression": {"id": 1132, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "4595:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4584:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1135, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4612:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1136, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4620:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "4612:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4612:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "4584:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1139, "nodeType": "ExpressionStatement", "src": "4584:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4652:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4652:11:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1150, "nodeType": "IfStatement", "src": "4648:65:10", "trueBody": {"id": 1149, "nodeType": "Block", "src": "4665:48:10", "statements": [{"expression": {"arguments": [{"id": 1146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4695:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1143, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "4679:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4687:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "4679:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4679:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1148, "nodeType": "ExpressionStatement", "src": "4679:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1152, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4743:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4747:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "4743:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1154, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "4755:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1155, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "4768:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1156, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 774, "src": "4779:10:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1157, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4791:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1151, "name": "ValidatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2212, "src": "4728:14:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4728:71:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "EmitStatement", "src": "4723:76:10"}]}, "functionSelector": "06e8fb9c", "id": 1161, "implemented": true, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "731:17:10", "nodeType": "FunctionDefinition", "overrides": {"id": 781, "nodeType": "OverrideSpecifier", "overrides": [], "src": "926:8:10"}, "parameters": {"id": 780, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 769, "mutability": "mutable", "name": "publicKey", "nameLocation": "773:9:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "758:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "758:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "operatorIds", "nameLocation": "808:11:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "792:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 770, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "792:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 771, "nodeType": "ArrayTypeName", "src": "792:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 774, "mutability": "mutable", "name": "sharesData", "nameLocation": "844:10:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "829:25:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 773, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "829:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "amount", "nameLocation": "872:6:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "864:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "864:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "cluster", "nameLocation": "903:7:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "888:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 778, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 777, "name": "Cluster", "nameLocations": ["888:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "888:7:10"}, "referencedDeclaration": 1906, "src": "888:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "748:168:10"}, "returnParameters": {"id": 782, "nodeType": "ParameterList", "parameters": [], "src": "935:0:10"}, "scope": 1851, "src": "722:4084:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2147], "body": {"id": 1318, "nodeType": "Block", "src": "4966:1370:10", "statements": [{"assignments": [1175], "declarations": [{"constant": false, "id": 1175, "mutability": "mutable", "name": "s", "nameLocation": "4996:1:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "4976:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1174, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1173, "name": "StorageData", "nameLocations": ["4976:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "4976:11:10"}, "referencedDeclaration": 2024, "src": "4976:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1179, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1176, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "5000:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5011:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "5000:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5000:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4976:41:10"}, {"assignments": [1181], "declarations": [{"constant": false, "id": 1181, "mutability": "mutable", "name": "hashedValidator", "nameLocation": "5036:15:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5028:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1180, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5028:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1190, "initialValue": {"arguments": [{"arguments": [{"id": 1185, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "5081:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 1186, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5092:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5096:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5092:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 1183, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5064:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5068:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5064:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5064:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1182, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5054:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5054:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5028:76:10"}, {"assignments": [1192], "declarations": [{"constant": false, "id": 1192, "mutability": "mutable", "name": "mask", "nameLocation": "5123:4:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5115:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1191, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5115:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1201, "initialValue": {"id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "~", "prefix": true, "src": "5130:20:10", "subExpression": {"arguments": [{"arguments": [{"hexValue": "31", "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5147:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 1196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5139:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1195, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5139:7:10", "typeDescriptions": {}}}, "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5139:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5131:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1193, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5131:7:10", "typeDescriptions": {}}}, "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5131:19:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5115:35:10"}, {"assignments": [1203], "declarations": [{"constant": false, "id": 1203, "mutability": "mutable", "name": "validatorData", "nameLocation": "5200:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5192:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1202, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5192:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1208, "initialValue": {"baseExpression": {"expression": {"id": 1204, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5216:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1205, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5218:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "5216:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1207, "indexExpression": {"id": 1206, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "5231:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5216:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5192:55:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1209, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5262:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5287:1:10", "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": 1211, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5279:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1210, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5279:7:10", "typeDescriptions": {}}}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5279:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5262:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1219, "nodeType": "IfStatement", "src": "5258:88:10", "trueBody": {"id": 1218, "nodeType": "Block", "src": "5291:55:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1215, "name": "ValidatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1926, "src": "5312:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5312:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1217, "nodeType": "RevertStatement", "src": "5305:30:10"}]}}, {"assignments": [1221], "declarations": [{"constant": false, "id": 1221, "mutability": "mutable", "name": "hashedOperatorIds", "nameLocation": "5364:17:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5356:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1220, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5356:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1230, "initialValue": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 1225, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5411:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}], "expression": {"id": 1223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5394:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1224, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5398:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5394:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5394:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1222, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5384:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5384:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1228, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5427:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5384:47:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5356:75:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1231, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5484:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1232, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5500:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5484:20:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 1234, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5483:22:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1235, "name": "hashedOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1221, "src": "5509:17:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5483:43:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1241, "nodeType": "IfStatement", "src": "5479:168:10", "trueBody": {"id": 1240, "nodeType": "Block", "src": "5528:119:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1237, "name": "IncorrectValidatorState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1928, "src": "5611:23:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5611:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1239, "nodeType": "RevertStatement", "src": "5604:32:10"}]}}, {"assignments": [1243], "declarations": [{"constant": false, "id": 1243, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "5665:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5657:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1242, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5657:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1251, "initialValue": {"arguments": [{"expression": {"id": 1246, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5711:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5715:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5711:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1248, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5723:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1249, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5736:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1244, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5681:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1245, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5689:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "5681:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5681:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5657:81:10"}, {"id": 1289, "nodeType": "Block", "src": "5749:356:10", "statements": [{"condition": {"expression": {"id": 1252, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5767:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5775:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "5767:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1288, "nodeType": "IfStatement", "src": "5763:332:10", "trueBody": {"id": 1287, "nodeType": "Block", "src": "5783:312:10", "statements": [{"assignments": [1255, null], "declarations": [{"constant": false, "id": 1255, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "5809:12:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5802:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5802:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, null], "id": 1263, "initialValue": {"arguments": [{"id": 1258, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "66616c7365", "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5868:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1260, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5875:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, {"id": 1261, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5878:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1256, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "5827:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5839:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "5827:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5827:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "5801:79:10"}, {"assignments": [1266], "declarations": [{"constant": false, "id": 1266, "mutability": "mutable", "name": "sp", "nameLocation": "5922:2:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5898:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1265, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1264, "name": "StorageProtocol", "nameLocations": ["5898:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "5898:15:10"}, "referencedDeclaration": 2854, "src": "5898:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1270, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1267, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "5927:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5946:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "5927:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5927:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5898:54:10"}, {"expression": {"arguments": [{"id": 1274, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1255, "src": "5997:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1275, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6011:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1276, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6014:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6011:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6011:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1271, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5971:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5979:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "5971:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5971:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1279, "nodeType": "ExpressionStatement", "src": "5971:68:10"}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6071:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6078:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1280, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6058:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6061:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "6058:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6058:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1286, "nodeType": "ExpressionStatement", "src": "6058:22:10"}]}}]}, {"expression": {"id": 1292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "6115:24:10", "subExpression": {"expression": {"id": 1290, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6117:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1291, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6125:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6117:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1293, "nodeType": "ExpressionStatement", "src": "6115:24:10"}, {"expression": {"id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6150:38:10", "subExpression": {"baseExpression": {"expression": {"id": 1294, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6157:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6159:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "6157:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1297, "indexExpression": {"id": 1296, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "6172:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6157:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "ExpressionStatement", "src": "6150:38:10"}, {"expression": {"id": 1308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6199:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6201:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "6199:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1304, "indexExpression": {"id": 1302, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "6210:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6199:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1305, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6227:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1306, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6235:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "6227:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6227:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "6199:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1309, "nodeType": "ExpressionStatement", "src": "6199:53:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1311, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6285:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6289:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "6285:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1313, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "6297:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1314, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "6310:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1315, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6321:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1310, "name": "ValidatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2225, "src": "6268:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6268:61:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1317, "nodeType": "EmitStatement", "src": "6263:66:10"}]}, "functionSelector": "12b3fc19", "id": 1319, "implemented": true, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "4821:15:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1171, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4957:8:10"}, "parameters": {"id": 1170, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1163, "mutability": "mutable", "name": "publicKey", "nameLocation": "4861:9:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4846:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1162, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4846:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1166, "mutability": "mutable", "name": "operatorIds", "nameLocation": "4898:11:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4880:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1164, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4880:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1165, "nodeType": "ArrayTypeName", "src": "4880:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1169, "mutability": "mutable", "name": "cluster", "nameLocation": "4934:7:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4919:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1168, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1167, "name": "Cluster", "nameLocations": ["4919:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "4919:7:10"}, "referencedDeclaration": 1906, "src": "4919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "4836:111:10"}, "returnParameters": {"id": 1172, "nodeType": "ParameterList", "parameters": [], "src": "4966:0:10"}, "scope": 1851, "src": "4812:1524:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2159], "body": {"id": 1477, "nodeType": "Block", "src": "6454:1429:10", "statements": [{"assignments": [1333], "declarations": [{"constant": false, "id": 1333, "mutability": "mutable", "name": "s", "nameLocation": "6484:1:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6464:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1332, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1331, "name": "StorageData", "nameLocations": ["6464:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "6464:11:10"}, "referencedDeclaration": 2024, "src": "6464:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1337, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1334, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "6488:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6499:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "6488:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6488:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6464:41:10"}, {"assignments": [1339], "declarations": [{"constant": false, "id": 1339, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "6524:13:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6516:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1338, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6516:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1346, "initialValue": {"arguments": [{"id": 1342, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "6570:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1343, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6584:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1344, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6597:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1340, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6540:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6548:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "6540:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6540:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "6516:83:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1347, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6609:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6617:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "6609:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6609:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1351, "nodeType": "ExpressionStatement", "src": "6609:40:10"}, {"assignments": [1354], "declarations": [{"constant": false, "id": 1354, "mutability": "mutable", "name": "sp", "nameLocation": "6684:2:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6660:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1353, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1352, "name": "StorageProtocol", "nameLocations": ["6660:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "6660:15:10"}, "referencedDeclaration": 2854, "src": "6660:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1358, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1355, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "6689:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6708:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "6689:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6689:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6660:54:10"}, {"assignments": [1360, 1362], "declarations": [{"constant": false, "id": 1360, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "6733:12:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6726:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1359, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6726:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1362, "mutability": "mutable", "name": "burnRate", "nameLocation": "6754:8:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6747:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1361, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6747:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1371, "initialValue": {"arguments": [{"id": 1365, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6807:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"hexValue": "66616c7365", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6832:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1367, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6851:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6859:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6851:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1369, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6887:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1363, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "6766:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6778:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "6766:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6766:132:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "6725:173:10"}, {"expression": {"arguments": [{"id": 1375, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1360, "src": "6931:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1376, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "6945:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1377, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6948:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6945:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6945:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1372, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6909:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6917:13:10", "memberName": "updateBalance", "nodeType": "MemberAccess", "referencedDeclaration": 545, "src": "6909:21:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6909:64:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1380, "nodeType": "ExpressionStatement", "src": "6909:64:10"}, {"assignments": [1382], "declarations": [{"constant": false, "id": 1382, "mutability": "mutable", "name": "balanceLiquidatable", "nameLocation": "6992:19:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6984:27:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6984:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1383, "nodeType": "VariableDeclarationStatement", "src": "6984:27:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1384, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7039:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1385, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7055:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7059:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7055:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7039:26:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "7081:194:10", "subExpression": {"arguments": [{"id": 1390, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1362, "src": "7122:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1391, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7148:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7151:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "7148:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1393, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7179:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7182:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "7179:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1395, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7230:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1396, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "7230:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1388, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7082:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7090:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "7082:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7082:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7039:236:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1404, "nodeType": "IfStatement", "src": "7022:320:10", "trueBody": {"id": 1403, "nodeType": "Block", "src": "7286:56:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1400, "name": "ClusterNotLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1930, "src": "7307:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7307:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1402, "nodeType": "RevertStatement", "src": "7300:31:10"}]}}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7365:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1409, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7372:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7380:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "7372:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1405, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7352:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1407, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7355:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "7352:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7352:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "7352:43:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1413, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7410:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7418:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7410:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7429:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7410:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1429, "nodeType": "IfStatement", "src": "7406:121:10", "trueBody": {"id": 1428, "nodeType": "Block", "src": "7432:95:10", "statements": [{"expression": {"id": 1420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1417, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7446:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1418, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7468:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7476:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7468:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7446:37:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1421, "nodeType": "ExpressionStatement", "src": "7446:37:10"}, {"expression": {"id": 1426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1422, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7497:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7505:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7497:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7515:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7497:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1427, "nodeType": "ExpressionStatement", "src": "7497:19:10"}]}}, {"expression": {"id": 1434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1430, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7536:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7544:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "7536:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7552:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7536:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1435, "nodeType": "ExpressionStatement", "src": "7536:17:10"}, {"expression": {"id": 1440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1436, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7563:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1438, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7571:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "7563:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7589:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7563:27:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1441, "nodeType": "ExpressionStatement", "src": "7563:27:10"}, {"expression": {"id": 1446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1442, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7600:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7608:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "7600:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7617:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "7600:22:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1447, "nodeType": "ExpressionStatement", "src": "7600:22:10"}, {"expression": {"id": 1456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1448, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "7633:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1451, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7635:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "7633:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1452, "indexExpression": {"id": 1450, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1339, "src": "7644:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7633:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1453, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7661:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7669:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "7661:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7661:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "7633:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1457, "nodeType": "ExpressionStatement", "src": "7633:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1458, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7701:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7724:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7701:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1470, "nodeType": "IfStatement", "src": "7697:111:10", "trueBody": {"id": 1469, "nodeType": "Block", "src": "7727:81:10", "statements": [{"expression": {"arguments": [{"expression": {"id": 1464, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7765:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7769:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7765:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1466, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7777:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1461, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "7741:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7749:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "7741:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7741:56:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "ExpressionStatement", "src": "7741:56:10"}]}}, {"eventCall": {"arguments": [{"id": 1472, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7841:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1473, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "7855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1474, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7868:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1471, "name": "ClusterLiquidated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "7823:17:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7823:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1476, "nodeType": "EmitStatement", "src": "7818:58:10"}]}, "functionSelector": "bf0f2fb2", "id": 1478, "implemented": true, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "6351:9:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1329, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6445:8:10"}, "parameters": {"id": 1328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1321, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "6369:12:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6361:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1320, "name": "address", "nodeType": "ElementaryTypeName", "src": "6361:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1324, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6399:11:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6383:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1322, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6383:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1323, "nodeType": "ArrayTypeName", "src": "6383:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1327, "mutability": "mutable", "name": "cluster", "nameLocation": "6427:7:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6412:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1326, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1325, "name": "Cluster", "nameLocations": ["6412:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "6412:7:10"}, "referencedDeclaration": 1906, "src": "6412:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6360:75:10"}, "returnParameters": {"id": 1330, "nodeType": "ParameterList", "parameters": [], "src": "6454:0:10"}, "scope": 1851, "src": "6342:1541:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2171], "body": {"id": 1610, "nodeType": "Block", "src": "7998:1169:10", "statements": [{"assignments": [1492], "declarations": [{"constant": false, "id": 1492, "mutability": "mutable", "name": "s", "nameLocation": "8028:1:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8008:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1490, "name": "StorageData", "nameLocations": ["8008:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "8008:11:10"}, "referencedDeclaration": 2024, "src": "8008:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1496, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1493, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "8032:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8043:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "8032:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8032:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8008:41:10"}, {"assignments": [1498], "declarations": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "8068:13:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8060:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1497, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8060:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1506, "initialValue": {"arguments": [{"expression": {"id": 1501, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8114:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8118:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "8114:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1503, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8126:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1504, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8139:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1499, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8084:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8092:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "8084:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8084:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "8060:81:10"}, {"condition": {"expression": {"id": 1507, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8155:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8163:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8155:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1512, "nodeType": "IfStatement", "src": "8151:50:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1509, "name": "ClusterAlreadyEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1936, "src": "8178:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8178:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1511, "nodeType": "RevertStatement", "src": "8171:30:10"}}, {"assignments": [1515], "declarations": [{"constant": false, "id": 1515, "mutability": "mutable", "name": "sp", "nameLocation": "8236:2:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8212:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1514, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1513, "name": "StorageProtocol", "nameLocations": ["8212:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "8212:15:10"}, "referencedDeclaration": 2854, "src": "8212:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1519, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1516, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "8241:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8260:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "8241:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8241:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8212:54:10"}, {"assignments": [1521, 1523], "declarations": [{"constant": false, "id": 1521, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "8285:12:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8278:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1520, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8278:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1523, "mutability": "mutable", "name": "burnRate", "nameLocation": "8306:8:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8299:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1522, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8299:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1532, "initialValue": {"arguments": [{"id": 1526, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8359:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "74727565", "id": 1527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8384:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1528, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8402:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1529, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8410:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8402:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1530, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8438:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1524, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "8318:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8330:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "8318:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8318:131:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "8277:172:10"}, {"expression": {"id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1533, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8460:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1535, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8468:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "8460:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1536, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "8479:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8460:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1538, "nodeType": "ExpressionStatement", "src": "8460:25:10"}, {"expression": {"id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1539, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8503:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8495:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8512:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "8495:21:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1544, "nodeType": "ExpressionStatement", "src": "8495:21:10"}, {"expression": {"id": 1549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1545, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8526:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8534:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "8526:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1548, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "8542:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8526:28:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1550, "nodeType": "ExpressionStatement", "src": "8526:28:10"}, {"expression": {"id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1551, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8564:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8572:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "8564:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8590:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1555, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8593:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "8590:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8590:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8564:53:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1558, "nodeType": "ExpressionStatement", "src": "8564:53:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8641:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1563, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8647:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8655:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8647:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1559, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8628:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1561, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8631:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "8628:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8628:42:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1566, "nodeType": "ExpressionStatement", "src": "8628:42:10"}, {"condition": {"arguments": [{"id": 1569, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "8738:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1570, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8764:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1571, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8767:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "8764:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1572, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8795:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1573, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8798:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "8795:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1574, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8846:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1575, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8849:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "8846:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1567, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8698:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1568, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8706:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "8698:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8698:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1581, "nodeType": "IfStatement", "src": "8681:274:10", "trueBody": {"id": 1580, "nodeType": "Block", "src": "8902:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1577, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "8923:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8923:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1579, "nodeType": "RevertStatement", "src": "8916:28:10"}]}}, {"expression": {"id": 1590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8965:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8967:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "8965:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1586, "indexExpression": {"id": 1584, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "8976:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8965:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1587, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8993:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9001:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "8993:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8993:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "8965:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1591, "nodeType": "ExpressionStatement", "src": "8965:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1592, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9033:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9042:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9033:10:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1602, "nodeType": "IfStatement", "src": "9029:64:10", "trueBody": {"id": 1601, "nodeType": "Block", "src": "9045:48:10", "statements": [{"expression": {"arguments": [{"id": 1598, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9075:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1595, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9059:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9067:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9059:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9059:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1600, "nodeType": "ExpressionStatement", "src": "9059:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1604, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9127:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9131:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9127:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1606, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "9139:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1607, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "9152:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1603, "name": "ClusterReactivated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2245, "src": "9108:18:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9108:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1609, "nodeType": "EmitStatement", "src": "9103:57:10"}]}, "functionSelector": "5fec6dd0", "id": 1611, "implemented": true, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "7898:10:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7989:8:10"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1481, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7927:11:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7909:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1479, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7909:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1480, "nodeType": "ArrayTypeName", "src": "7909:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1483, "mutability": "mutable", "name": "amount", "nameLocation": "7948:6:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7940:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7940:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1486, "mutability": "mutable", "name": "cluster", "nameLocation": "7971:7:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7956:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1485, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1484, "name": "Cluster", "nameLocations": ["7956:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "7956:7:10"}, "referencedDeclaration": 1906, "src": "7956:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7908:71:10"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "7998:0:10"}, "scope": 1851, "src": "7889:1278:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2185], "body": {"id": 1670, "nodeType": "Block", "src": "9339:362:10", "statements": [{"assignments": [1627], "declarations": [{"constant": false, "id": 1627, "mutability": "mutable", "name": "s", "nameLocation": "9369:1:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9349:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1625, "name": "StorageData", "nameLocations": ["9349:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9349:11:10"}, "referencedDeclaration": 2024, "src": "9349:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1631, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1628, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9373:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9384:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9373:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9373:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9349:41:10"}, {"assignments": [1633], "declarations": [{"constant": false, "id": 1633, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9409:13:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9401:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1632, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9401:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1640, "initialValue": {"arguments": [{"id": 1636, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9455:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1637, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9469:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1638, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9482:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1634, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9425:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1635, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9433:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9425:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9425:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9401:83:10"}, {"expression": {"id": 1645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9503:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "9495:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1644, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9514:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9495:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1646, "nodeType": "ExpressionStatement", "src": "9495:25:10"}, {"expression": {"id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1647, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9531:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9533:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "9531:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1651, "indexExpression": {"id": 1649, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "9542:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9531:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1652, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9559:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9567:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "9559:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9559:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "9531:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1656, "nodeType": "ExpressionStatement", "src": "9531:53:10"}, {"expression": {"arguments": [{"id": 1660, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9611:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1657, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9595:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9603:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9595:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9595:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1662, "nodeType": "ExpressionStatement", "src": "9595:23:10"}, {"eventCall": {"arguments": [{"id": 1664, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9651:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1665, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9665:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1666, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9678:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1667, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9686:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1663, "name": "ClusterDeposited", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2269, "src": "9634:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9634:60:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1669, "nodeType": "EmitStatement", "src": "9629:65:10"}]}, "functionSelector": "bc26e7e5", "id": 1671, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "9182:7:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1623, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9330:8:10"}, "parameters": {"id": 1622, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1613, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "9207:12:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9199:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1612, "name": "address", "nodeType": "ElementaryTypeName", "src": "9199:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1616, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9247:11:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9229:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9229:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1615, "nodeType": "ArrayTypeName", "src": "9229:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1618, "mutability": "mutable", "name": "amount", "nameLocation": "9276:6:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9268:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1617, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9268:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1621, "mutability": "mutable", "name": "cluster", "nameLocation": "9307:7:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9292:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1620, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1619, "name": "Cluster", "nameLocations": ["9292:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9292:7:10"}, "referencedDeclaration": 1906, "src": "9292:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9189:131:10"}, "returnParameters": {"id": 1624, "nodeType": "ParameterList", "parameters": [], "src": "9339:0:10"}, "scope": 1851, "src": "9173:528:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2197], "body": {"id": 1849, "nodeType": "Block", "src": "9814:1686:10", "statements": [{"assignments": [1685], "declarations": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "s", "nameLocation": "9844:1:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9824:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1684, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1683, "name": "StorageData", "nameLocations": ["9824:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9824:11:10"}, "referencedDeclaration": 2024, "src": "9824:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1689, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1686, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9848:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9859:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9848:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9848:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9824:41:10"}, {"assignments": [1691], "declarations": [{"constant": false, "id": 1691, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9884:13:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9876:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1690, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9876:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1699, "initialValue": {"arguments": [{"expression": {"id": 1694, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9930:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9934:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9930:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1696, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "9942:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1697, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "9955:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1692, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9900:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9908:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9900:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9900:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9876:81:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1700, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9967:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1702, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9975:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "9967:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9967:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1704, "nodeType": "ExpressionStatement", "src": "9967:40:10"}, {"assignments": [1707], "declarations": [{"constant": false, "id": 1707, "mutability": "mutable", "name": "sp", "nameLocation": "10042:2:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10018:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1706, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1705, "name": "StorageProtocol", "nameLocations": ["10018:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "10018:15:10"}, "referencedDeclaration": 2854, "src": "10018:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1711, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1708, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "10047:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10066:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "10047:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10047:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "10018:54:10"}, {"assignments": [1713], "declarations": [{"constant": false, "id": 1713, "mutability": "mutable", "name": "burnRate", "nameLocation": "10090:8:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10083:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1712, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10083:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1714, "nodeType": "VariableDeclarationStatement", "src": "10083:15:10"}, {"condition": {"expression": {"id": 1715, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10112:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10120:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10112:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1785, "nodeType": "IfStatement", "src": "10108:733:10", "trueBody": {"id": 1784, "nodeType": "Block", "src": "10128:713:10", "statements": [{"assignments": [1718], "declarations": [{"constant": false, "id": 1718, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "10149:12:10", "nodeType": "VariableDeclaration", "scope": 1784, "src": "10142:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1717, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10142:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1719, "nodeType": "VariableDeclarationStatement", "src": "10142:19:10"}, {"id": 1774, "nodeType": "Block", "src": "10175:573:10", "statements": [{"assignments": [1721], "declarations": [{"constant": false, "id": 1721, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "10201:15:10", "nodeType": "VariableDeclaration", "scope": 1774, "src": "10193:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1720, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10193:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1724, "initialValue": {"expression": {"id": 1722, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10219:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10231:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "10219:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10193:44:10"}, {"body": {"id": 1772, "nodeType": "Block", "src": "10294:440:10", "statements": [{"assignments": [1733], "declarations": [{"constant": false, "id": 1733, "mutability": "mutable", "name": "operator", "nameLocation": "10333:8:10", "nodeType": "VariableDeclaration", "scope": 1772, "src": "10316:25:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1732, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1731, "name": "Operator", "nameLocations": ["10316:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "10316:8:10"}, "referencedDeclaration": 1880, "src": "10316:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1742, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1734, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "10344:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10355:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "10344:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10344:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1737, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10362:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "10344:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1741, "indexExpression": {"baseExpression": {"id": 1738, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10372:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1740, "indexExpression": {"id": 1739, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10384:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10372:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10344:43:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "10316:71:10"}, {"expression": {"id": 1761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1743, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10409:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1744, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10449:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10458:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10449:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10467:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "10449:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1749, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10507:5:10", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10513:6:10", "memberName": "number", "nodeType": "MemberAccess", "src": "10507:12:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1748, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10500:6:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1747, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10500:6:10", "typeDescriptions": {}}}, "id": 1751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10500:20:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1752, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10523:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10532:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10523:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1754, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10541:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "10523:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "10500:46:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1756, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10499:48:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1757, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10574:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1758, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10583:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10574:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10499:87:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10449:137:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10409:177:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1762, "nodeType": "ExpressionStatement", "src": "10409:177:10"}, {"expression": {"id": 1766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1763, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "10608:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1764, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10620:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1765, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10629:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10620:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10608:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1767, "nodeType": "ExpressionStatement", "src": "10608:24:10"}, {"id": 1771, "nodeType": "UncheckedBlock", "src": "10654:62:10", "statements": [{"expression": {"id": 1769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "10690:3:10", "subExpression": {"id": 1768, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10692:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1770, "nodeType": "ExpressionStatement", "src": "10690:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1728, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10271:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1729, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1721, "src": "10275:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10271:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1773, "initializationExpression": {"assignments": [1726], "declarations": [{"constant": false, "id": 1726, "mutability": "mutable", "name": "i", "nameLocation": "10268:1:10", "nodeType": "VariableDeclaration", "scope": 1773, "src": "10260:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10260:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1727, "nodeType": "VariableDeclarationStatement", "src": "10260:9:10"}, "nodeType": "ForStatement", "src": "10255:479:10"}]}, {"expression": {"arguments": [{"id": 1778, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10788:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "10802:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1780, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10805:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "10802:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10802:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1775, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10762:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10770:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "10762:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10762:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1783, "nodeType": "ExpressionStatement", "src": "10762:68:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1786, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10854:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1787, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10862:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10854:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1788, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10872:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10854:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1793, "nodeType": "IfStatement", "src": "10850:58:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1790, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "10887:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10887:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1792, "nodeType": "RevertStatement", "src": "10880:28:10"}}, {"expression": {"id": 1798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1794, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1796, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "10927:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10919:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1797, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10938:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10919:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1799, "nodeType": "ExpressionStatement", "src": "10919:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1800, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10972:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10980:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10972:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1802, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11002:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11010:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "11002:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11028:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11002:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"arguments": [{"id": 1809, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "11085:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1810, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11111:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1811, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11114:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "11111:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1812, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11142:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11145:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "11142:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1814, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11193:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1815, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11196:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "11193:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1807, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11045:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1808, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11053:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "11045:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11045:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:266:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1822, "nodeType": "IfStatement", "src": "10955:347:10", "trueBody": {"id": 1821, "nodeType": "Block", "src": "11249:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1818, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "11270:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11270:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1820, "nodeType": "RevertStatement", "src": "11263:28:10"}]}}, {"expression": {"id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1823, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "11312:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11314:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "11312:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1827, "indexExpression": {"id": 1825, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1691, "src": "11323:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11312:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1828, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11340:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1829, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11348:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "11340:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11340:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "11312:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1832, "nodeType": "ExpressionStatement", "src": "11312:53:10"}, {"expression": {"arguments": [{"expression": {"id": 1836, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11400:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11404:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11400:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1838, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11412:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1833, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "11376:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11384:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "11376:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11376:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1840, "nodeType": "ExpressionStatement", "src": "11376:43:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1842, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11452:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11456:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11452:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1844, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "11464:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1845, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11477:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1846, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11485:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1841, "name": "ClusterWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2257, "src": "11435:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11435:58:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1848, "nodeType": "EmitStatement", "src": "11430:63:10"}]}, "functionSelector": "686e682c", "id": 1850, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "9716:8:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1681, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9805:8:10"}, "parameters": {"id": 1680, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1674, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9743:11:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9725:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1672, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9725:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1673, "nodeType": "ArrayTypeName", "src": "9725:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1676, "mutability": "mutable", "name": "amount", "nameLocation": "9764:6:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9756:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9756:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1679, "mutability": "mutable", "name": "cluster", "nameLocation": "9787:7:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9772:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1677, "name": "Cluster", "nameLocations": ["9772:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9772:7:10"}, "referencedDeclaration": 1906, "src": "9772:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9724:71:10"}, "returnParameters": {"id": 1682, "nodeType": "ParameterList", "parameters": [], "src": "9814:0:10"}, "scope": 1851, "src": "9707:1793:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1852, "src": "347:11155:10", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:11458:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2955]}, "id": 2956, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2879, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2880, "nodeType": "StructuredDocumentation", "src": "131:70:11", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2955, "linearizedBaseContracts": [2955], "name": "IERC20", "nameLocation": "212:6:11", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2881, "nodeType": "StructuredDocumentation", "src": "225:158:11", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2889, "name": "Transfer", "nameLocation": "394:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2883, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "403:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2882, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2885, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "425:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2884, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2887, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "445:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:11"}, "src": "388:72:11"}, {"anonymous": false, "documentation": {"id": 2890, "nodeType": "StructuredDocumentation", "src": "466:148:11", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2898, "name": "Approval", "nameLocation": "625:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2897, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2892, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "634:21:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2891, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2894, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "657:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2893, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2896, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "682:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2895, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:11"}, "src": "619:78:11"}, {"documentation": {"id": 2899, "nodeType": "StructuredDocumentation", "src": "703:66:11", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2904, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2900, "nodeType": "ParameterList", "parameters": [], "src": "794:2:11"}, "returnParameters": {"id": 2903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2902, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2904, "src": "820:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:11"}, "scope": 2955, "src": "774:55:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2905, "nodeType": "StructuredDocumentation", "src": "835:72:11", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2912, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2907, "mutability": "mutable", "name": "account", "nameLocation": "939:7:11", "nodeType": "VariableDeclaration", "scope": 2912, "src": "931:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2906, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:11"}, "returnParameters": {"id": 2911, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2910, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2912, "src": "971:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:11"}, "scope": 2955, "src": "912:68:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2913, "nodeType": "StructuredDocumentation", "src": "986:202:11", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2922, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2915, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1211:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2914, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2917, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1223:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2916, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:11"}, "returnParameters": {"id": 2921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2920, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1257:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2919, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:11"}, "scope": 2955, "src": "1193:70:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2923, "nodeType": "StructuredDocumentation", "src": "1269:264:11", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2932, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2928, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2925, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1557:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2924, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2927, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1572:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2926, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:11"}, "returnParameters": {"id": 2931, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2930, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1612:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:11"}, "scope": 2955, "src": "1538:83:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2933, "nodeType": "StructuredDocumentation", "src": "1627:642:11", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2942, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2935, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2291:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2934, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2937, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2308:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:11"}, "returnParameters": {"id": 2941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2940, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2342:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2939, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:11"}, "scope": 2955, "src": "2274:74:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2943, "nodeType": "StructuredDocumentation", "src": "2354:287:11", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2954, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2945, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2668:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2947, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2682:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2946, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2949, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2694:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:11"}, "returnParameters": {"id": 2953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2952, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2728:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2951, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:11"}, "scope": 2955, "src": "2646:88:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2956, "src": "202:2534:11", "usedErrors": []}], "src": "106:2631:11"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [3029]}, "id": 3030, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2957, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:12"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2958, "nodeType": "StructuredDocumentation", "src": "112:311:12", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 3029, "linearizedBaseContracts": [3029], "name": "Counters", "nameLocation": "432:8:12", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2961, "members": [{"constant": false, "id": 2960, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:12", "nodeType": "VariableDeclaration", "scope": 2961, "src": "786:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2959, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:12", "nodeType": "StructDefinition", "scope": 3029, "src": "447:374:12", "visibility": "public"}, {"body": {"id": 2972, "nodeType": "Block", "src": "901:38:12", "statements": [{"expression": {"expression": {"id": 2969, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2964, "src": "918:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2970, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "918:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2968, "id": 2971, "nodeType": "Return", "src": "911:21:12"}]}, "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2965, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2964, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:12", "nodeType": "VariableDeclaration", "scope": 2973, "src": "844:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2963, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2962, "name": "Counter", "nameLocations": ["844:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "844:7:12"}, "referencedDeclaration": 2961, "src": "844:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:12"}, "returnParameters": {"id": 2968, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2967, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2973, "src": "892:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2966, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:12"}, "scope": 3029, "src": "827:112:12", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2986, "nodeType": "Block", "src": "998:70:12", "statements": [{"id": 2985, "nodeType": "UncheckedBlock", "src": "1008:54:12", "statements": [{"expression": {"id": 2983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2979, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "1032:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1032:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2984, "nodeType": "ExpressionStatement", "src": "1032:19:12"}]}]}, "id": 2987, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:12", "nodeType": "VariableDeclaration", "scope": 2987, "src": "964:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2975, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2974, "name": "Counter", "nameLocations": ["964:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "964:7:12"}, "referencedDeclaration": 2961, "src": "964:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:12"}, "returnParameters": {"id": 2978, "nodeType": "ParameterList", "parameters": [], "src": "998:0:12"}, "scope": 3029, "src": "945:123:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3014, "nodeType": "Block", "src": "1127:176:12", "statements": [{"assignments": [2994], "declarations": [{"constant": false, "id": 2994, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:12", "nodeType": "VariableDeclaration", "scope": 3014, "src": "1137:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2997, "initialValue": {"expression": {"id": 2995, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1153:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1153:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:12"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2999, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1185:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 3002, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2998, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3003, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3004, "nodeType": "ExpressionStatement", "src": "1177:49:12"}, {"id": 3013, "nodeType": "UncheckedBlock", "src": "1236:61:12", "statements": [{"expression": {"id": 3011, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3005, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1260:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3007, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1260:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3008, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1277:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 3009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3012, "nodeType": "ExpressionStatement", "src": "1260:26:12"}]}]}, "id": 3015, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2990, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:12", "nodeType": "VariableDeclaration", "scope": 3015, "src": "1093:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2989, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2988, "name": "Counter", "nameLocations": ["1093:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1093:7:12"}, "referencedDeclaration": 2961, "src": "1093:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:12"}, "returnParameters": {"id": 2992, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:12"}, "scope": 3029, "src": "1074:229:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3027, "nodeType": "Block", "src": "1358:35:12", "statements": [{"expression": {"id": 3025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3021, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3018, "src": "1368:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1368:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 3024, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3026, "nodeType": "ExpressionStatement", "src": "1368:18:12"}]}, "id": 3028, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3018, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:12", "nodeType": "VariableDeclaration", "scope": 3028, "src": "1324:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 3017, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3016, "name": "Counter", "nameLocations": ["1324:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1324:7:12"}, "referencedDeclaration": 2961, "src": "1324:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:12"}, "returnParameters": {"id": 3020, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:12"}, "scope": 3029, "src": "1309:84:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 3030, "src": "424:971:12", "usedErrors": []}], "src": "87:1309:12"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol:ISSVClusters": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Deposits tokens into a cluster"}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Liquidates a cluster"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Withdraws tokens from a cluster"}}, "notice": null}, "devdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster where the deposit will be made", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster to be liquidated", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster where the withdrawal will be made", "operatorIds": "Array of IDs of operators managing the cluster", "tokenAmount": "Amount of SSV tokens to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol:ClusterLib": {"srcmap": "164:2774:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "164:2774:2:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol:Clusters": {"srcmap": "137:3963:9:-:0;;;563:1;539:25;;211:16;;;;;;;;;;137:3963;;;;;;", "srcmap-runtime": "137:3963:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:242;;;:::i;:::-;;722:4084:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4053:45:9;;;:::i;:::-;;9707:1793:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;287:27:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3538:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2544:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3805:242;3862:21;3886:17;:15;:17::i;:::-;3862:41;;3919:8;3914:127;3937:14;:21;;;;3933:1;:25;;;3914:127;;;4027:1;4019:10;;3986:1;:10;;:29;3997:14;4012:1;3997:17;;;;;;;;;;:::i;:::-;;;;;;;;;;3986:29;;;;;;;;;;;;:43;3979:51;;;;:::i;:::-;;3960:3;;;;;:::i;:::-;;;;3914:127;;;;3852:195;3805:242::o;722:4084:10:-;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;4053:45:9:-;:::o;9707:1793:10:-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;287:27:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3538:261::-;3696:10;:17;;;;3675:11;:39;;;;:::i;:::-;3661:53;;3725:4;:20;;;3746:10;3757:11;3746:23;;;;;;;;;;:::i;:::-;;;;;;;;;3771:11;;3784:7;3725:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3538:261;;;;:::o;2544:988::-;2662:21;2686:17;:15;:17::i;:::-;2662:41;;2714:23;2740:20;:18;:20::i;:::-;2714:46;;2770:28;2801:22;:20;:22::i;:::-;2770:53;;2834:22;2886:10;2898:12;2869:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2859:53;;;;;;2834:78;;2923:19;2945:1;:10;;:26;2956:14;2945:26;;;;;;;;;;;;2923:48;;3008:1;3000:10;;2985:11;:25;2981:307;;3051:1;3026:7;:22;;:26;;;;;;;;;;;3092:1;3066:7;:23;;:27;;;;;;;;;;;3123:1;3107:7;:13;;:17;;;;;;;;;;;3156:1;3138:7;:15;;:19;;;;;3188:4;3171:7;:14;;:21;;;;;;;;;;;2981:307;;;3252:25;:7;:23;:25::i;:::-;3223:1;:10;;:26;3234:14;3223:26;;;;;;;;;;;:54;;;;2981:307;3302:4;:22;;;3325:10;3337:12;3351:10;;3363:6;3371:7;3302:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;;3509:5;3502:13;;;;:::i;:::-;;3298:228;;;3394:10;3410;3394:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3435:14;3455;3435:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;2652:880;;;;;2544:988;;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;571:368:9:-;619:12;643:24;680:2;670:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;643:40;;698:6;693:195;714:2;710:1;:6;693:195;;;859:3;816:5;;823:15;840:10;852:1;799:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;789:66;;;;;;784:72;;:78;;;;:::i;:::-;754:123;;737:11;749:1;737:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;718:3;;;;;:::i;:::-;;;;693:195;;;;897:5;;:7;;;;;;;;;:::i;:::-;;;;;;921:11;914:18;;;571:368;:::o;945:1169::-;995:27;1034:18;368:1;1056:107;;1091:15;1108:10;1120:5;;1074:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1064:63;;;;;;1056:72;;:107;;;;:::i;:::-;1034:130;;1174:14;1208:1;1195:10;:14;;;;:::i;:::-;1191:1;:18;;;;:::i;:::-;1174:35;;1264:5;;:7;;;;;;;;;:::i;:::-;;;;;;1309:6;1296:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1282:34;;1331:9;1326:754;1350:6;1346:1;:10;1326:754;;;1377:15;1406:11;1431:207;1452:5;;:7;;;;;;;;;:::i;:::-;;;;;;1537:19;:17;:19::i;:::-;1526:30;;1584:22;1597:8;1584:12;:22::i;:::-;1583:23;1574:32;;1630:6;1629:7;1431:207;;1715:9;1727:1;1715:13;;1742:237;1753:1;1749;:5;:38;;;;;1779:8;1758:29;;:11;1774:1;1770;:5;;;;:::i;:::-;1758:18;;;;;;;;:::i;:::-;;;;;;;;:29;;;1749:38;1742:237;;;1815:11;:18;1811:1;:22;1807:137;;;1874:11;1890:1;1886;:5;;;;:::i;:::-;1874:18;;;;;;;;:::i;:::-;;;;;;;;1857:11;1869:1;1857:14;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;1807:137;1961:3;;;;;:::i;:::-;;;;1742:237;;;2009:8;1992:11;2004:1;1992:14;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;1363:717;;;1358:3;;;;;:::i;:::-;;;;1326:754;;;;2089:18;;945:1169;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;2120:169:9:-;2167:6;2274:7;2234:15;2251:10;2263:5;;2217:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2207:63;;;;;;2199:72;;:82;;;;:::i;:::-;2185:97;;2120:169;:::o;2295:243::-;2351:4;2372:9;2384:1;2372:13;;2367:143;2391:11;:18;;;;2387:1;:22;2367:143;;;2452:2;2434:20;;:11;2446:1;2434:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;2430:70;;2481:4;2474:11;;;;;2430:70;2411:3;;;;;:::i;:::-;;;;2367:143;;;;2526:5;2519:12;;2295:243;;;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:329::-;12916:6;12965:2;12953:9;12944:7;12940:23;12936:32;12933:119;;;12971:79;;:::i;:::-;12933:119;13091:1;13116:53;13161:7;13152:6;13141:9;13137:22;13116:53;:::i;:::-;13106:63;;13062:117;12857:329;;;;:::o;13192:115::-;13277:23;13294:5;13277:23;:::i;:::-;13272:3;13265:36;13192:115;;:::o;13313:218::-;13404:4;13442:2;13431:9;13427:18;13419:26;;13455:69;13521:1;13510:9;13506:17;13497:6;13455:69;:::i;:::-;13313:218;;;;:::o;13537:896::-;13664:6;13672;13680;13688;13737:3;13725:9;13716:7;13712:23;13708:33;13705:120;;;13744:79;;:::i;:::-;13705:120;13864:1;13889:52;13933:7;13924:6;13913:9;13909:22;13889:52;:::i;:::-;13879:62;;13835:116;14018:2;14007:9;14003:18;13990:32;14049:18;14041:6;14038:30;14035:117;;;14071:79;;:::i;:::-;14035:117;14184:79;14255:7;14246:6;14235:9;14231:22;14184:79;:::i;:::-;14166:97;;;;13961:312;14312:2;14338:78;14408:7;14399:6;14388:9;14384:22;14338:78;:::i;:::-;14328:88;;14283:143;13537:896;;;;;;;:::o;14439:868::-;14552:6;14560;14568;14576;14625:3;14613:9;14604:7;14600:23;14596:33;14593:120;;;14632:79;;:::i;:::-;14593:120;14780:1;14769:9;14765:17;14752:31;14810:18;14802:6;14799:30;14796:117;;;14832:79;;:::i;:::-;14796:117;14945:64;15001:7;14992:6;14981:9;14977:22;14945:64;:::i;:::-;14927:82;;;;14723:296;15058:2;15084:53;15129:7;15120:6;15109:9;15105:22;15084:53;:::i;:::-;15074:63;;15029:118;15186:2;15212:78;15282:7;15273:6;15262:9;15258:22;15212:78;:::i;:::-;15202:88;;15157:143;14439:868;;;;;;;:::o;15313:180::-;15361:77;15358:1;15351:88;15458:4;15455:1;15448:15;15482:4;15479:1;15472:15;15499:180;15547:77;15544:1;15537:88;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15685:180;15733:77;15730:1;15723:88;15830:4;15827:1;15820:15;15854:4;15851:1;15844:15;15871:183;15909:3;15932:23;15949:5;15932:23;:::i;:::-;15923:32;;15977:18;15970:5;15967:29;15964:55;;15999:18;;:::i;:::-;15964:55;16046:1;16039:5;16035:13;16028:20;;15871:183;;;:::o;16060:180::-;16108:77;16105:1;16098:88;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16246:176;16278:1;16295:20;16313:1;16295:20;:::i;:::-;16290:25;;16329:20;16347:1;16329:20;:::i;:::-;16324:25;;16368:1;16358:35;;16373:18;;:::i;:::-;16358:35;16414:1;16411;16407:9;16402:14;;16246:176;;;;:::o;16428:147::-;16529:11;16566:3;16551:18;;16428:147;;;;:::o;16581:146::-;16678:6;16673:3;16668;16655:30;16719:1;16710:6;16705:3;16701:16;16694:27;16581:146;;;:::o;16755:327::-;16869:3;16890:88;16971:6;16966:3;16890:88;:::i;:::-;16883:95;;16988:56;17037:6;17032:3;17025:5;16988:56;:::i;:::-;17069:6;17064:3;17060:16;17053:23;;16755:327;;;;;:::o;17088:94::-;17121:8;17169:5;17165:2;17161:14;17140:35;;17088:94;;;:::o;17188:::-;17227:7;17256:20;17270:5;17256:20;:::i;:::-;17245:31;;17188:94;;;:::o;17288:100::-;17327:7;17356:26;17376:5;17356:26;:::i;:::-;17345:37;;17288:100;;;:::o;17394:157::-;17499:45;17519:24;17537:5;17519:24;:::i;:::-;17499:45;:::i;:::-;17494:3;17487:58;17394:157;;:::o;17557:432::-;17725:3;17747:103;17846:3;17837:6;17829;17747:103;:::i;:::-;17740:110;;17860:75;17931:3;17922:6;17860:75;:::i;:::-;17960:2;17955:3;17951:12;17944:19;;17980:3;17973:10;;17557:432;;;;;;:::o;17995:113::-;18061:6;18095:5;18089:12;18079:22;;17995:113;;;:::o;18114:162::-;18230:11;18267:3;18252:18;;18114:162;;;;:::o;18282:131::-;18348:4;18371:3;18363:11;;18401:4;18396:3;18392:14;18384:22;;18282:131;;;:::o;18419:113::-;18502:23;18519:5;18502:23;:::i;:::-;18497:3;18490:36;18419:113;;:::o;18538:191::-;18613:10;18634:52;18682:3;18674:6;18634:52;:::i;:::-;18718:4;18713:3;18709:14;18695:28;;18538:191;;;;:::o;18735:112::-;18804:4;18836;18831:3;18827:14;18819:22;;18735:112;;;:::o;18881:768::-;19016:3;19045:53;19092:5;19045:53;:::i;:::-;19114:103;19210:6;19205:3;19114:103;:::i;:::-;19107:110;;19241:55;19290:5;19241:55;:::i;:::-;19319:7;19350:1;19335:289;19360:6;19357:1;19354:13;19335:289;;;19436:6;19430:13;19463:69;19528:3;19513:13;19463:69;:::i;:::-;19456:76;;19555:59;19607:6;19555:59;:::i;:::-;19545:69;;19395:229;19382:1;19379;19375:9;19370:14;;19335:289;;;19339:14;19640:3;19633:10;;19021:628;;;18881:768;;;;:::o;19655:331::-;19815:3;19837:123;19956:3;19947:6;19837:123;:::i;:::-;19830:130;;19977:3;19970:10;;19655:331;;;;:::o;19992:472::-;20180:3;20195:75;20266:3;20257:6;20195:75;:::i;:::-;20295:2;20290:3;20286:12;20279:19;;20315:123;20434:3;20425:6;20315:123;:::i;:::-;20308:130;;20455:3;20448:10;;19992:472;;;;;:::o;20470:191::-;20510:3;20529:20;20547:1;20529:20;:::i;:::-;20524:25;;20563:20;20581:1;20563:20;:::i;:::-;20558:25;;20606:1;20603;20599:9;20592:16;;20627:3;20624:1;20621:10;20618:36;;;20634:18;;:::i;:::-;20618:36;20470:191;;;;:::o;20667:175::-;20705:3;20728:23;20745:5;20728:23;:::i;:::-;20719:32;;20773:10;20766:5;20763:21;20760:47;;20787:18;;:::i;:::-;20760:47;20834:1;20827:5;20823:13;20816:20;;20667:175;;;:::o;20848:205::-;20887:3;20906:19;20923:1;20906:19;:::i;:::-;20901:24;;20939:19;20956:1;20939:19;:::i;:::-;20934:24;;20981:1;20978;20974:9;20967:16;;21004:18;20999:3;20996:27;20993:53;;;21026:18;;:::i;:::-;20993:53;20848:205;;;;:::o;21059:183::-;21157:11;21191:6;21186:3;21179:19;21231:4;21226:3;21222:14;21207:29;;21059:183;;;;:::o;21248:105::-;21323:23;21340:5;21323:23;:::i;:::-;21318:3;21311:36;21248:105;;:::o;21359:175::-;21426:10;21447:44;21487:3;21479:6;21447:44;:::i;:::-;21523:4;21518:3;21514:14;21500:28;;21359:175;;;;:::o;21568:724::-;21685:3;21714:53;21761:5;21714:53;:::i;:::-;21783:85;21861:6;21856:3;21783:85;:::i;:::-;21776:92;;21892:55;21941:5;21892:55;:::i;:::-;21970:7;22001:1;21986:281;22011:6;22008:1;22005:13;21986:281;;;22087:6;22081:13;22114:61;22171:3;22156:13;22114:61;:::i;:::-;22107:68;;22198:59;22250:6;22198:59;:::i;:::-;22188:69;;22046:221;22033:1;22030;22026:9;22021:14;;21986:281;;;21990:14;22283:3;22276:10;;21690:602;;;21568:724;;;;:::o;22298:168::-;22381:11;22415:6;22410:3;22403:19;22455:4;22450:3;22446:14;22431:29;;22298:168;;;;:::o;22494:314::-;22590:3;22611:70;22674:6;22669:3;22611:70;:::i;:::-;22604:77;;22691:56;22740:6;22735:3;22728:5;22691:56;:::i;:::-;22772:29;22794:6;22772:29;:::i;:::-;22767:3;22763:39;22756:46;;22494:314;;;;;:::o;22814:105::-;22889:23;22906:5;22889:23;:::i;:::-;22884:3;22877:36;22814:105;;:::o;22925:99::-;22996:21;23011:5;22996:21;:::i;:::-;22991:3;22984:34;22925:99;;:::o;23030:108::-;23107:24;23125:5;23107:24;:::i;:::-;23102:3;23095:37;23030:108;;:::o;23216:1044::-;23363:4;23358:3;23354:14;23460:4;23453:5;23449:16;23443:23;23479:61;23534:4;23529:3;23525:14;23511:12;23479:61;:::i;:::-;23378:172;23643:4;23636:5;23632:16;23626:23;23662:61;23717:4;23712:3;23708:14;23694:12;23662:61;:::i;:::-;23560:173;23816:4;23809:5;23805:16;23799:23;23835:61;23890:4;23885:3;23881:14;23867:12;23835:61;:::i;:::-;23743:163;23990:4;23983:5;23979:16;23973:23;24009:57;24060:4;24055:3;24051:14;24037:12;24009:57;:::i;:::-;23916:160;24161:4;24154:5;24150:16;24144:23;24180:63;24237:4;24232:3;24228:14;24214:12;24180:63;:::i;:::-;24086:167;23332:928;23216:1044;;:::o;24266:1014::-;24597:4;24635:3;24624:9;24620:19;24612:27;;24685:9;24679:4;24675:20;24671:1;24660:9;24656:17;24649:47;24713:106;24814:4;24805:6;24713:106;:::i;:::-;24705:114;;24866:9;24860:4;24856:20;24851:2;24840:9;24836:18;24829:48;24894:86;24975:4;24966:6;24958;24894:86;:::i;:::-;24886:94;;25027:9;25021:4;25017:20;25012:2;25001:9;24997:18;24990:48;25055:86;25136:4;25127:6;25119;25055:86;:::i;:::-;25047:94;;25151:122;25269:2;25258:9;25254:18;25245:6;25151:122;:::i;:::-;24266:1014;;;;;;;;;:::o;25286:101::-;25354:4;25377:3;25369:11;;25286:101;;;:::o;25393:120::-;25444:5;25469:38;25503:2;25498:3;25494:12;25489:3;25469:38;:::i;:::-;25460:47;;25393:120;;;;:::o;25519:114::-;25590:4;25622;25617:3;25613:14;25605:22;;25519:114;;;:::o;25667:735::-;25812:3;25835:103;25931:6;25926:3;25835:103;:::i;:::-;25828:110;;25962:57;26013:5;25962:57;:::i;:::-;26042:7;26073:1;26058:319;26083:6;26080:1;26077:13;26058:319;;;26153:41;26187:6;26178:7;26153:41;:::i;:::-;26214:69;26279:3;26264:13;26214:69;:::i;:::-;26207:76;;26306:61;26360:6;26306:61;:::i;:::-;26296:71;;26118:259;26105:1;26102;26098:9;26093:14;;26058:319;;;26062:14;26393:3;26386:10;;25817:585;;25667:735;;;;;:::o;26408:351::-;26578:3;26600:133;26729:3;26720:6;26712;26600:133;:::i;:::-;26593:140;;26750:3;26743:10;;26408:351;;;;;:::o;26765:169::-;26803:3;26826:23;26843:5;26826:23;:::i;:::-;26817:32;;26871:4;26864:5;26861:15;26858:41;;26879:18;;:::i;:::-;26858:41;26926:1;26919:5;26915:13;26908:20;;26765:169;;;:::o;26968:691::-;27095:3;27118:85;27196:6;27191:3;27118:85;:::i;:::-;27111:92;;27227:57;27278:5;27227:57;:::i;:::-;27307:7;27338:1;27323:311;27348:6;27345:1;27342:13;27323:311;;;27418:41;27452:6;27443:7;27418:41;:::i;:::-;27479:61;27536:3;27521:13;27479:61;:::i;:::-;27472:68;;27563:61;27617:6;27563:61;:::i;:::-;27553:71;;27383:251;27370:1;27367;27363:9;27358:14;;27323:311;;;27327:14;27650:3;27643:10;;27100:559;;26968:691;;;;;:::o;27665:817::-;27950:4;27988:3;27977:9;27973:19;27965:27;;28038:9;28032:4;28028:20;28024:1;28013:9;28009:17;28002:47;28066:116;28177:4;28168:6;28160;28066:116;:::i;:::-;28058:124;;28229:9;28223:4;28219:20;28214:2;28203:9;28199:18;28192:48;28257:86;28338:4;28329:6;28321;28257:86;:::i;:::-;28249:94;;28353:122;28471:2;28460:9;28456:18;28447:6;28353:122;:::i;:::-;27665:817;;;;;;;;:::o;28488:600::-;28717:4;28755:3;28744:9;28740:19;28732:27;;28805:9;28799:4;28795:20;28791:1;28780:9;28776:17;28769:47;28833:116;28944:4;28935:6;28927;28833:116;:::i;:::-;28825:124;;28959:122;29077:2;29066:9;29062:18;29053:6;28959:122;:::i;:::-;28488:600;;;;;;:::o;29094:327::-;29152:6;29201:2;29189:9;29180:7;29176:23;29172:32;29169:119;;;29207:79;;:::i;:::-;29169:119;29327:1;29352:52;29396:7;29387:6;29376:9;29372:22;29352:52;:::i;:::-;29342:62;;29298:116;29094:327;;;;:::o;29427:208::-;29466:4;29486:19;29503:1;29486:19;:::i;:::-;29481:24;;29519:19;29536:1;29519:19;:::i;:::-;29514:24;;29562:1;29559;29555:9;29547:17;;29586:18;29580:4;29577:28;29574:54;;;29608:18;;:::i;:::-;29574:54;29427:208;;;;:::o;29641:275::-;29680:7;29703:19;29720:1;29703:19;:::i;:::-;29698:24;;29736:19;29753:1;29736:19;:::i;:::-;29731:24;;29790:1;29787;29783:9;29812:29;29829:11;29812:29;:::i;:::-;29801:40;;29873:11;29864:7;29861:24;29851:58;;29889:18;;:::i;:::-;29851:58;29688:228;29641:275;;;;:::o;29922:194::-;29962:4;29982:20;30000:1;29982:20;:::i;:::-;29977:25;;30016:20;30034:1;30016:20;:::i;:::-;30011:25;;30060:1;30057;30053:9;30045:17;;30084:1;30078:4;30075:11;30072:37;;;30089:18;;:::i;:::-;30072:37;29922:194;;;;:::o;30122:118::-;30209:24;30227:5;30209:24;:::i;:::-;30204:3;30197:37;30122:118;;:::o;30246:710::-;30503:4;30541:3;30530:9;30526:19;30518:27;;30591:9;30585:4;30581:20;30577:1;30566:9;30562:17;30555:47;30619:116;30730:4;30721:6;30713;30619:116;:::i;:::-;30611:124;;30745:72;30813:2;30802:9;30798:18;30789:6;30745:72;:::i;:::-;30827:122;30945:2;30934:9;30930:18;30921:6;30827:122;:::i;:::-;30246:710;;;;;;;:::o;30962:580::-;31181:4;31219:3;31208:9;31204:19;31196:27;;31269:9;31263:4;31259:20;31255:1;31244:9;31240:17;31233:47;31297:106;31398:4;31389:6;31297:106;:::i;:::-;31289:114;;31413:122;31531:2;31520:9;31516:18;31507:6;31413:122;:::i;:::-;30962:580;;;;;:::o;31548:173::-;31579:1;31596:19;31613:1;31596:19;:::i;:::-;31591:24;;31629:19;31646:1;31629:19;:::i;:::-;31624:24;;31667:1;31657:35;;31672:18;;:::i;:::-;31657:35;31713:1;31710;31706:9;31701:14;;31548:173;;;;:::o;31727:180::-;31775:77;31772:1;31765:88;31872:4;31869:1;31862:15;31896:4;31893:1;31886:15;31913:320;31957:6;31994:1;31988:4;31984:12;31974:22;;32041:1;32035:4;32031:12;32062:18;32052:81;;32118:4;32110:6;32106:17;32096:27;;32052:81;32180:2;32172:6;32169:14;32149:18;32146:38;32143:84;;32199:18;;:::i;:::-;32143:84;31964:269;31913:320;;;:::o;32239:140::-;32287:4;32310:3;32302:11;;32333:3;32330:1;32323:14;32367:4;32364:1;32354:18;32346:26;;32239:140;;;:::o;32407:827::-;32490:3;32527:5;32521:12;32556:36;32582:9;32556:36;:::i;:::-;32608:70;32671:6;32666:3;32608:70;:::i;:::-;32601:77;;32709:1;32698:9;32694:17;32725:1;32720:164;;;;32898:1;32893:335;;;;32687:541;;32720:164;32804:4;32800:9;32789;32785:25;32780:3;32773:38;32864:6;32857:14;32850:22;32844:4;32840:33;32835:3;32831:43;32824:50;;32720:164;;32893:335;32960:37;32991:5;32960:37;:::i;:::-;33019:1;33033:154;33047:6;33044:1;33041:13;33033:154;;;33121:7;33115:14;33111:1;33106:3;33102:11;33095:35;33171:1;33162:7;33158:15;33147:26;;33069:4;33066:1;33062:12;33057:17;;33033:154;;;33216:1;33211:3;33207:11;33200:18;;32900:328;;32687:541;;32494:740;;32407:827;;;;:::o;33240:791::-;33512:4;33550:3;33539:9;33535:19;33527:27;;33600:9;33594:4;33590:20;33586:1;33575:9;33571:17;33564:47;33628:73;33696:4;33687:6;33628:73;:::i;:::-;33620:81;;33748:9;33742:4;33738:20;33733:2;33722:9;33718:18;33711:48;33776:116;33887:4;33878:6;33870;33776:116;:::i;:::-;33768:124;;33902:122;34020:2;34009:9;34005:18;33996:6;33902:122;:::i;:::-;33240:791;;;;;;;:::o;34037:98::-;34088:6;34122:5;34116:12;34106:22;;34037:98;;;:::o;34141:246::-;34222:1;34232:113;34246:6;34243:1;34240:13;34232:113;;;34331:1;34326:3;34322:11;34316:18;34312:1;34307:3;34303:11;34296:39;34268:2;34265:1;34261:10;34256:15;;34232:113;;;34379:1;34370:6;34365:3;34361:16;34354:27;34203:184;34141:246;;;:::o;34393:373::-;34479:3;34507:38;34539:5;34507:38;:::i;:::-;34561:70;34624:6;34619:3;34561:70;:::i;:::-;34554:77;;34640:65;34698:6;34693:3;34686:4;34679:5;34675:16;34640:65;:::i;:::-;34730:29;34752:6;34730:29;:::i;:::-;34725:3;34721:39;34714:46;;34483:283;34393:373;;;;:::o;34772:1105::-;35121:4;35159:3;35148:9;35144:19;35136:27;;35209:9;35203:4;35199:20;35195:1;35184:9;35180:17;35173:47;35237:76;35308:4;35299:6;35237:76;:::i;:::-;35229:84;;35360:9;35354:4;35350:20;35345:2;35334:9;35330:18;35323:48;35388:106;35489:4;35480:6;35388:106;:::i;:::-;35380:114;;35541:9;35535:4;35531:20;35526:2;35515:9;35511:18;35504:48;35569:86;35650:4;35641:6;35633;35569:86;:::i;:::-;35561:94;;35665:72;35733:2;35722:9;35718:18;35709:6;35665:72;:::i;:::-;35747:123;35865:3;35854:9;35850:19;35841:6;35747:123;:::i;:::-;34772:1105;;;;;;;;;:::o;35883:93::-;35920:6;35967:2;35962;35955:5;35951:14;35947:23;35937:33;;35883:93;;;:::o;35982:107::-;36026:8;36076:5;36070:4;36066:16;36045:37;;35982:107;;;;:::o;36095:393::-;36164:6;36214:1;36202:10;36198:18;36237:97;36267:66;36256:9;36237:97;:::i;:::-;36355:39;36385:8;36374:9;36355:39;:::i;:::-;36343:51;;36427:4;36423:9;36416:5;36412:21;36403:30;;36476:4;36466:8;36462:19;36455:5;36452:30;36442:40;;36171:317;;36095:393;;;;;:::o;36494:60::-;36522:3;36543:5;36536:12;;36494:60;;;:::o;36560:142::-;36610:9;36643:53;36661:34;36670:24;36688:5;36670:24;:::i;:::-;36661:34;:::i;:::-;36643:53;:::i;:::-;36630:66;;36560:142;;;:::o;36708:75::-;36751:3;36772:5;36765:12;;36708:75;;;:::o;36789:269::-;36899:39;36930:7;36899:39;:::i;:::-;36960:91;37009:41;37033:16;37009:41;:::i;:::-;37001:6;36994:4;36988:11;36960:91;:::i;:::-;36954:4;36947:105;36865:193;36789:269;;;:::o;37064:73::-;37109:3;37064:73;:::o;37143:189::-;37220:32;;:::i;:::-;37261:65;37319:6;37311;37305:4;37261:65;:::i;:::-;37196:136;37143:189;;:::o;37338:186::-;37398:120;37415:3;37408:5;37405:14;37398:120;;;37469:39;37506:1;37499:5;37469:39;:::i;:::-;37442:1;37435:5;37431:13;37422:22;;37398:120;;;37338:186;;:::o;37530:541::-;37630:2;37625:3;37622:11;37619:445;;;37664:37;37695:5;37664:37;:::i;:::-;37747:29;37765:10;37747:29;:::i;:::-;37737:8;37733:44;37930:2;37918:10;37915:18;37912:49;;;37951:8;37936:23;;37912:49;37974:80;38030:22;38048:3;38030:22;:::i;:::-;38020:8;38016:37;38003:11;37974:80;:::i;:::-;37634:430;;37619:445;37530:541;;;:::o;38077:117::-;38131:8;38181:5;38175:4;38171:16;38150:37;;38077:117;;;;:::o;38200:169::-;38244:6;38277:51;38325:1;38321:6;38313:5;38310:1;38306:13;38277:51;:::i;:::-;38273:56;38358:4;38352;38348:15;38338:25;;38251:118;38200:169;;;;:::o;38374:295::-;38450:4;38596:29;38621:3;38615:4;38596:29;:::i;:::-;38588:37;;38658:3;38655:1;38651:11;38645:4;38642:21;38634:29;;38374:295;;;;:::o;38674:1390::-;38789:36;38821:3;38789:36;:::i;:::-;38890:18;38882:6;38879:30;38876:56;;;38912:18;;:::i;:::-;38876:56;38956:38;38988:4;38982:11;38956:38;:::i;:::-;39041:66;39100:6;39092;39086:4;39041:66;:::i;:::-;39134:1;39158:4;39145:17;;39190:2;39182:6;39179:14;39207:1;39202:617;;;;39863:1;39880:6;39877:77;;;39929:9;39924:3;39920:19;39914:26;39905:35;;39877:77;39980:67;40040:6;40033:5;39980:67;:::i;:::-;39974:4;39967:81;39836:222;39172:886;;39202:617;39254:4;39250:9;39242:6;39238:22;39288:36;39319:4;39288:36;:::i;:::-;39346:1;39360:208;39374:7;39371:1;39368:14;39360:208;;;39453:9;39448:3;39444:19;39438:26;39430:6;39423:42;39504:1;39496:6;39492:14;39482:24;;39551:2;39540:9;39536:18;39523:31;;39397:4;39394:1;39390:12;39385:17;;39360:208;;;39596:6;39587:7;39584:19;39581:179;;;39654:9;39649:3;39645:19;39639:26;39697:48;39739:4;39731:6;39727:17;39716:9;39697:48;:::i;:::-;39689:6;39682:64;39604:156;39581:179;39806:1;39802;39794:6;39790:14;39786:22;39780:4;39773:36;39209:610;;;39172:886;;38764:1300;;;38674:1390;;:::o;40070:96::-;40104:8;40153:5;40148:3;40144:15;40123:36;;40070:96;;;:::o;40172:94::-;40210:7;40239:21;40254:5;40239:21;:::i;:::-;40228:32;;40172:94;;;:::o;40272:153::-;40375:43;40394:23;40411:5;40394:23;:::i;:::-;40375:43;:::i;:::-;40370:3;40363:56;40272:153;;:::o;40431:96::-;40465:8;40514:5;40509:3;40505:15;40484:36;;40431:96;;;:::o;40533:94::-;40571:7;40600:21;40615:5;40600:21;:::i;:::-;40589:32;;40533:94;;;:::o;40633:153::-;40736:43;40755:23;40772:5;40755:23;:::i;:::-;40736:43;:::i;:::-;40731:3;40724:56;40633:153;;:::o;40792:79::-;40831:7;40860:5;40849:16;;40792:79;;;:::o;40877:157::-;40982:45;41002:24;41020:5;41002:24;:::i;:::-;40982:45;:::i;:::-;40977:3;40970:58;40877:157;;:::o;41040:96::-;41074:8;41123:5;41118:3;41114:15;41093:36;;41040:96;;;:::o;41142:93::-;41179:7;41208:21;41223:5;41208:21;:::i;:::-;41197:32;;41142:93;;;:::o;41241:95::-;41277:7;41306:24;41324:5;41306:24;:::i;:::-;41295:35;;41241:95;;;:::o;41342:145::-;41441:39;41458:21;41473:5;41458:21;:::i;:::-;41441:39;:::i;:::-;41436:3;41429:52;41342:145;;:::o;41493:792::-;41705:3;41720:73;41789:3;41780:6;41720:73;:::i;:::-;41818:1;41813:3;41809:11;41802:18;;41830:73;41899:3;41890:6;41830:73;:::i;:::-;41928:1;41923:3;41919:11;41912:18;;41940:73;42009:3;42000:6;41940:73;:::i;:::-;42038:1;42033:3;42029:11;42022:18;;42050:75;42121:3;42112:6;42050:75;:::i;:::-;42150:2;42145:3;42141:12;42134:19;;42163:69;42228:3;42219:6;42163:69;:::i;:::-;42257:1;42252:3;42248:11;42241:18;;42276:3;42269:10;;41493:792;;;;;;;;:::o;42291:200::-;42330:4;42350:19;42367:1;42350:19;:::i;:::-;42345:24;;42383:19;42400:1;42383:19;:::i;:::-;42378:24;;42426:1;42423;42419:9;42411:17;;42450:10;42444:4;42441:20;42438:46;;;42464:18;;:::i;:::-;42438:46;42291:200;;;;:::o;42497:197::-;42536:3;42555:19;42572:1;42555:19;:::i;:::-;42550:24;;42588:19;42605:1;42588:19;:::i;:::-;42583:24;;42630:1;42627;42623:9;42616:16;;42653:10;42648:3;42645:19;42642:45;;;42667:18;;:::i;:::-;42642:45;42497:197;;;;:::o;42700:118::-;42787:24;42805:5;42787:24;:::i;:::-;42782:3;42775:37;42700:118;;:::o;42824:442::-;42973:4;43011:2;43000:9;42996:18;42988:26;;43024:71;43092:1;43081:9;43077:17;43068:6;43024:71;:::i;:::-;43105:72;43173:2;43162:9;43158:18;43149:6;43105:72;:::i;:::-;43187;43255:2;43244:9;43240:18;43231:6;43187:72;:::i;:::-;42824:442;;;;;;:::o;43272:137::-;43326:5;43357:6;43351:13;43342:22;;43373:30;43397:5;43373:30;:::i;:::-;43272:137;;;;:::o;43415:345::-;43482:6;43531:2;43519:9;43510:7;43506:23;43502:32;43499:119;;;43537:79;;:::i;:::-;43499:119;43657:1;43682:61;43735:7;43726:6;43715:9;43711:22;43682:61;:::i;:::-;43672:71;;43628:125;43415:345;;;;:::o;43766:332::-;43887:4;43925:2;43914:9;43910:18;43902:26;;43938:71;44006:1;43995:9;43991:17;43982:6;43938:71;:::i;:::-;44019:72;44087:2;44076:9;44072:18;44063:6;44019:72;:::i;:::-;43766:332;;;;;:::o;44104:679::-;44300:3;44315:75;44386:3;44377:6;44315:75;:::i;:::-;44415:2;44410:3;44406:12;44399:19;;44428:75;44499:3;44490:6;44428:75;:::i;:::-;44528:2;44523:3;44519:12;44512:19;;44541:75;44612:3;44603:6;44541:75;:::i;:::-;44641:2;44636:3;44632:12;44625:19;;44654:75;44725:3;44716:6;44654:75;:::i;:::-;44754:2;44749:3;44745:12;44738:19;;44774:3;44767:10;;44104:679;;;;;;;:::o;44789:233::-;44828:3;44851:24;44869:5;44851:24;:::i;:::-;44842:33;;44897:66;44890:5;44887:77;44884:103;;44967:18;;:::i;:::-;44884:103;45014:1;45007:5;45003:13;44996:20;;44789:233;;;:::o;45028:538::-;45196:3;45211:75;45282:3;45273:6;45211:75;:::i;:::-;45311:2;45306:3;45302:12;45295:19;;45324:75;45395:3;45386:6;45324:75;:::i;:::-;45424:2;45419:3;45415:12;45408:19;;45437:75;45508:3;45499:6;45437:75;:::i;:::-;45537:2;45532:3;45528:12;45521:19;;45557:3;45550:10;;45028:538;;;;;;:::o;45572:410::-;45612:7;45635:20;45653:1;45635:20;:::i;:::-;45630:25;;45669:20;45687:1;45669:20;:::i;:::-;45664:25;;45724:1;45721;45717:9;45746:30;45764:11;45746:30;:::i;:::-;45735:41;;45925:1;45916:7;45912:15;45909:1;45906:22;45886:1;45879:9;45859:83;45836:139;;45955:18;;:::i;:::-;45836:139;45620:362;45572:410;;;;:::o;45988:171::-;46027:3;46050:24;46068:5;46050:24;:::i;:::-;46041:33;;46096:4;46089:5;46086:15;46083:41;;46104:18;;:::i;:::-;46083:41;46151:1;46144:5;46140:13;46133:20;;45988:171;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_validatorPKs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_numberOfValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"publicKeyId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"check_removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"helper_registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorIds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "6080604052600060035534801561001557600080fd5b506144cd806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol:SSVClusters": {"srcmap": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:4084;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9707:1793;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;722:4084;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;9707:1793::-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:180::-;12905:77;12902:1;12895:88;13002:4;12999:1;12992:15;13026:4;13023:1;13016:15;13043:176;13075:1;13092:20;13110:1;13092:20;:::i;:::-;13087:25;;13126:20;13144:1;13126:20;:::i;:::-;13121:25;;13165:1;13155:35;;13170:18;;:::i;:::-;13155:35;13211:1;13208;13204:9;13199:14;;13043:176;;;;:::o;13225:147::-;13326:11;13363:3;13348:18;;13225:147;;;;:::o;13378:146::-;13475:6;13470:3;13465;13452:30;13516:1;13507:6;13502:3;13498:16;13491:27;13378:146;;;:::o;13552:327::-;13666:3;13687:88;13768:6;13763:3;13687:88;:::i;:::-;13680:95;;13785:56;13834:6;13829:3;13822:5;13785:56;:::i;:::-;13866:6;13861:3;13857:16;13850:23;;13552:327;;;;;:::o;13885:94::-;13918:8;13966:5;13962:2;13958:14;13937:35;;13885:94;;;:::o;13985:::-;14024:7;14053:20;14067:5;14053:20;:::i;:::-;14042:31;;13985:94;;;:::o;14085:100::-;14124:7;14153:26;14173:5;14153:26;:::i;:::-;14142:37;;14085:100;;;:::o;14191:157::-;14296:45;14316:24;14334:5;14316:24;:::i;:::-;14296:45;:::i;:::-;14291:3;14284:58;14191:157;;:::o;14354:432::-;14522:3;14544:103;14643:3;14634:6;14626;14544:103;:::i;:::-;14537:110;;14657:75;14728:3;14719:6;14657:75;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14777:3;14770:10;;14354:432;;;;;;:::o;14792:113::-;14858:6;14892:5;14886:12;14876:22;;14792:113;;;:::o;14911:162::-;15027:11;15064:3;15049:18;;14911:162;;;;:::o;15079:131::-;15145:4;15168:3;15160:11;;15198:4;15193:3;15189:14;15181:22;;15079:131;;;:::o;15216:113::-;15299:23;15316:5;15299:23;:::i;:::-;15294:3;15287:36;15216:113;;:::o;15335:191::-;15410:10;15431:52;15479:3;15471:6;15431:52;:::i;:::-;15515:4;15510:3;15506:14;15492:28;;15335:191;;;;:::o;15532:112::-;15601:4;15633;15628:3;15624:14;15616:22;;15532:112;;;:::o;15678:768::-;15813:3;15842:53;15889:5;15842:53;:::i;:::-;15911:103;16007:6;16002:3;15911:103;:::i;:::-;15904:110;;16038:55;16087:5;16038:55;:::i;:::-;16116:7;16147:1;16132:289;16157:6;16154:1;16151:13;16132:289;;;16233:6;16227:13;16260:69;16325:3;16310:13;16260:69;:::i;:::-;16253:76;;16352:59;16404:6;16352:59;:::i;:::-;16342:69;;16192:229;16179:1;16176;16172:9;16167:14;;16132:289;;;16136:14;16437:3;16430:10;;15818:628;;;15678:768;;;;:::o;16452:331::-;16612:3;16634:123;16753:3;16744:6;16634:123;:::i;:::-;16627:130;;16774:3;16767:10;;16452:331;;;;:::o;16789:472::-;16977:3;16992:75;17063:3;17054:6;16992:75;:::i;:::-;17092:2;17087:3;17083:12;17076:19;;17112:123;17231:3;17222:6;17112:123;:::i;:::-;17105:130;;17252:3;17245:10;;16789:472;;;;;:::o;17267:180::-;17315:77;17312:1;17305:88;17412:4;17409:1;17402:15;17436:4;17433:1;17426:15;17453:191;17493:3;17512:20;17530:1;17512:20;:::i;:::-;17507:25;;17546:20;17564:1;17546:20;:::i;:::-;17541:25;;17589:1;17586;17582:9;17575:16;;17610:3;17607:1;17604:10;17601:36;;;17617:18;;:::i;:::-;17601:36;17453:191;;;;:::o;17650:180::-;17698:77;17695:1;17688:88;17795:4;17792:1;17785:15;17819:4;17816:1;17809:15;17836:175;17874:3;17897:23;17914:5;17897:23;:::i;:::-;17888:32;;17942:10;17935:5;17932:21;17929:47;;17956:18;;:::i;:::-;17929:47;18003:1;17996:5;17992:13;17985:20;;17836:175;;;:::o;18017:205::-;18056:3;18075:19;18092:1;18075:19;:::i;:::-;18070:24;;18108:19;18125:1;18108:19;:::i;:::-;18103:24;;18150:1;18147;18143:9;18136:16;;18173:18;18168:3;18165:27;18162:53;;;18195:18;;:::i;:::-;18162:53;18017:205;;;;:::o;18228:183::-;18326:11;18360:6;18355:3;18348:19;18400:4;18395:3;18391:14;18376:29;;18228:183;;;;:::o;18417:105::-;18492:23;18509:5;18492:23;:::i;:::-;18487:3;18480:36;18417:105;;:::o;18528:175::-;18595:10;18616:44;18656:3;18648:6;18616:44;:::i;:::-;18692:4;18687:3;18683:14;18669:28;;18528:175;;;;:::o;18737:724::-;18854:3;18883:53;18930:5;18883:53;:::i;:::-;18952:85;19030:6;19025:3;18952:85;:::i;:::-;18945:92;;19061:55;19110:5;19061:55;:::i;:::-;19139:7;19170:1;19155:281;19180:6;19177:1;19174:13;19155:281;;;19256:6;19250:13;19283:61;19340:3;19325:13;19283:61;:::i;:::-;19276:68;;19367:59;19419:6;19367:59;:::i;:::-;19357:69;;19215:221;19202:1;19199;19195:9;19190:14;;19155:281;;;19159:14;19452:3;19445:10;;18859:602;;;18737:724;;;;:::o;19467:168::-;19550:11;19584:6;19579:3;19572:19;19624:4;19619:3;19615:14;19600:29;;19467:168;;;;:::o;19663:314::-;19759:3;19780:70;19843:6;19838:3;19780:70;:::i;:::-;19773:77;;19860:56;19909:6;19904:3;19897:5;19860:56;:::i;:::-;19941:29;19963:6;19941:29;:::i;:::-;19936:3;19932:39;19925:46;;19663:314;;;;;:::o;19983:105::-;20058:23;20075:5;20058:23;:::i;:::-;20053:3;20046:36;19983:105;;:::o;20094:99::-;20165:21;20180:5;20165:21;:::i;:::-;20160:3;20153:34;20094:99;;:::o;20199:108::-;20276:24;20294:5;20276:24;:::i;:::-;20271:3;20264:37;20199:108;;:::o;20385:1044::-;20532:4;20527:3;20523:14;20629:4;20622:5;20618:16;20612:23;20648:61;20703:4;20698:3;20694:14;20680:12;20648:61;:::i;:::-;20547:172;20812:4;20805:5;20801:16;20795:23;20831:61;20886:4;20881:3;20877:14;20863:12;20831:61;:::i;:::-;20729:173;20985:4;20978:5;20974:16;20968:23;21004:61;21059:4;21054:3;21050:14;21036:12;21004:61;:::i;:::-;20912:163;21159:4;21152:5;21148:16;21142:23;21178:57;21229:4;21224:3;21220:14;21206:12;21178:57;:::i;:::-;21085:160;21330:4;21323:5;21319:16;21313:23;21349:63;21406:4;21401:3;21397:14;21383:12;21349:63;:::i;:::-;21255:167;20501:928;20385:1044;;:::o;21435:1014::-;21766:4;21804:3;21793:9;21789:19;21781:27;;21854:9;21848:4;21844:20;21840:1;21829:9;21825:17;21818:47;21882:106;21983:4;21974:6;21882:106;:::i;:::-;21874:114;;22035:9;22029:4;22025:20;22020:2;22009:9;22005:18;21998:48;22063:86;22144:4;22135:6;22127;22063:86;:::i;:::-;22055:94;;22196:9;22190:4;22186:20;22181:2;22170:9;22166:18;22159:48;22224:86;22305:4;22296:6;22288;22224:86;:::i;:::-;22216:94;;22320:122;22438:2;22427:9;22423:18;22414:6;22320:122;:::i;:::-;21435:1014;;;;;;;;;:::o;22455:101::-;22523:4;22546:3;22538:11;;22455:101;;;:::o;22562:120::-;22613:5;22638:38;22672:2;22667:3;22663:12;22658:3;22638:38;:::i;:::-;22629:47;;22562:120;;;;:::o;22688:114::-;22759:4;22791;22786:3;22782:14;22774:22;;22688:114;;;:::o;22836:735::-;22981:3;23004:103;23100:6;23095:3;23004:103;:::i;:::-;22997:110;;23131:57;23182:5;23131:57;:::i;:::-;23211:7;23242:1;23227:319;23252:6;23249:1;23246:13;23227:319;;;23322:41;23356:6;23347:7;23322:41;:::i;:::-;23383:69;23448:3;23433:13;23383:69;:::i;:::-;23376:76;;23475:61;23529:6;23475:61;:::i;:::-;23465:71;;23287:259;23274:1;23271;23267:9;23262:14;;23227:319;;;23231:14;23562:3;23555:10;;22986:585;;22836:735;;;;;:::o;23577:351::-;23747:3;23769:133;23898:3;23889:6;23881;23769:133;:::i;:::-;23762:140;;23919:3;23912:10;;23577:351;;;;;:::o;23934:169::-;23972:3;23995:23;24012:5;23995:23;:::i;:::-;23986:32;;24040:4;24033:5;24030:15;24027:41;;24048:18;;:::i;:::-;24027:41;24095:1;24088:5;24084:13;24077:20;;23934:169;;;:::o;24137:691::-;24264:3;24287:85;24365:6;24360:3;24287:85;:::i;:::-;24280:92;;24396:57;24447:5;24396:57;:::i;:::-;24476:7;24507:1;24492:311;24517:6;24514:1;24511:13;24492:311;;;24587:41;24621:6;24612:7;24587:41;:::i;:::-;24648:61;24705:3;24690:13;24648:61;:::i;:::-;24641:68;;24732:61;24786:6;24732:61;:::i;:::-;24722:71;;24552:251;24539:1;24536;24532:9;24527:14;;24492:311;;;24496:14;24819:3;24812:10;;24269:559;;24137:691;;;;;:::o;24834:817::-;25119:4;25157:3;25146:9;25142:19;25134:27;;25207:9;25201:4;25197:20;25193:1;25182:9;25178:17;25171:47;25235:116;25346:4;25337:6;25329;25235:116;:::i;:::-;25227:124;;25398:9;25392:4;25388:20;25383:2;25372:9;25368:18;25361:48;25426:86;25507:4;25498:6;25490;25426:86;:::i;:::-;25418:94;;25522:122;25640:2;25629:9;25625:18;25616:6;25522:122;:::i;:::-;24834:817;;;;;;;;:::o;25657:600::-;25886:4;25924:3;25913:9;25909:19;25901:27;;25974:9;25968:4;25964:20;25960:1;25949:9;25945:17;25938:47;26002:116;26113:4;26104:6;26096;26002:116;:::i;:::-;25994:124;;26128:122;26246:2;26235:9;26231:18;26222:6;26128:122;:::i;:::-;25657:600;;;;;;:::o;26263:327::-;26321:6;26370:2;26358:9;26349:7;26345:23;26341:32;26338:119;;;26376:79;;:::i;:::-;26338:119;26496:1;26521:52;26565:7;26556:6;26545:9;26541:22;26521:52;:::i;:::-;26511:62;;26467:116;26263:327;;;;:::o;26596:208::-;26635:4;26655:19;26672:1;26655:19;:::i;:::-;26650:24;;26688:19;26705:1;26688:19;:::i;:::-;26683:24;;26731:1;26728;26724:9;26716:17;;26755:18;26749:4;26746:28;26743:54;;;26777:18;;:::i;:::-;26743:54;26596:208;;;;:::o;26810:275::-;26849:7;26872:19;26889:1;26872:19;:::i;:::-;26867:24;;26905:19;26922:1;26905:19;:::i;:::-;26900:24;;26959:1;26956;26952:9;26981:29;26998:11;26981:29;:::i;:::-;26970:40;;27042:11;27033:7;27030:24;27020:58;;27058:18;;:::i;:::-;27020:58;26857:228;26810:275;;;;:::o;27091:194::-;27131:4;27151:20;27169:1;27151:20;:::i;:::-;27146:25;;27185:20;27203:1;27185:20;:::i;:::-;27180:25;;27229:1;27226;27222:9;27214:17;;27253:1;27247:4;27244:11;27241:37;;;27258:18;;:::i;:::-;27241:37;27091:194;;;;:::o;27291:118::-;27378:24;27396:5;27378:24;:::i;:::-;27373:3;27366:37;27291:118;;:::o;27415:710::-;27672:4;27710:3;27699:9;27695:19;27687:27;;27760:9;27754:4;27750:20;27746:1;27735:9;27731:17;27724:47;27788:116;27899:4;27890:6;27882;27788:116;:::i;:::-;27780:124;;27914:72;27982:2;27971:9;27967:18;27958:6;27914:72;:::i;:::-;27996:122;28114:2;28103:9;28099:18;28090:6;27996:122;:::i;:::-;27415:710;;;;;;;:::o;28131:580::-;28350:4;28388:3;28377:9;28373:19;28365:27;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:106;28567:4;28558:6;28466:106;:::i;:::-;28458:114;;28582:122;28700:2;28689:9;28685:18;28676:6;28582:122;:::i;:::-;28131:580;;;;;:::o;28717:96::-;28751:8;28800:5;28795:3;28791:15;28770:36;;28717:96;;;:::o;28819:94::-;28857:7;28886:21;28901:5;28886:21;:::i;:::-;28875:32;;28819:94;;;:::o;28919:153::-;29022:43;29041:23;29058:5;29041:23;:::i;:::-;29022:43;:::i;:::-;29017:3;29010:56;28919:153;;:::o;29078:96::-;29112:8;29161:5;29156:3;29152:15;29131:36;;29078:96;;;:::o;29180:94::-;29218:7;29247:21;29262:5;29247:21;:::i;:::-;29236:32;;29180:94;;;:::o;29280:153::-;29383:43;29402:23;29419:5;29402:23;:::i;:::-;29383:43;:::i;:::-;29378:3;29371:56;29280:153;;:::o;29439:79::-;29478:7;29507:5;29496:16;;29439:79;;;:::o;29524:157::-;29629:45;29649:24;29667:5;29649:24;:::i;:::-;29629:45;:::i;:::-;29624:3;29617:58;29524:157;;:::o;29687:96::-;29721:8;29770:5;29765:3;29761:15;29740:36;;29687:96;;;:::o;29789:93::-;29826:7;29855:21;29870:5;29855:21;:::i;:::-;29844:32;;29789:93;;;:::o;29888:95::-;29924:7;29953:24;29971:5;29953:24;:::i;:::-;29942:35;;29888:95;;;:::o;29989:145::-;30088:39;30105:21;30120:5;30105:21;:::i;:::-;30088:39;:::i;:::-;30083:3;30076:52;29989:145;;:::o;30140:792::-;30352:3;30367:73;30436:3;30427:6;30367:73;:::i;:::-;30465:1;30460:3;30456:11;30449:18;;30477:73;30546:3;30537:6;30477:73;:::i;:::-;30575:1;30570:3;30566:11;30559:18;;30587:73;30656:3;30647:6;30587:73;:::i;:::-;30685:1;30680:3;30676:11;30669:18;;30697:75;30768:3;30759:6;30697:75;:::i;:::-;30797:2;30792:3;30788:12;30781:19;;30810:69;30875:3;30866:6;30810:69;:::i;:::-;30904:1;30899:3;30895:11;30888:18;;30923:3;30916:10;;30140:792;;;;;;;;:::o;30938:200::-;30977:4;30997:19;31014:1;30997:19;:::i;:::-;30992:24;;31030:19;31047:1;31030:19;:::i;:::-;31025:24;;31073:1;31070;31066:9;31058:17;;31097:10;31091:4;31088:20;31085:46;;;31111:18;;:::i;:::-;31085:46;30938:200;;;;:::o;31144:197::-;31183:3;31202:19;31219:1;31202:19;:::i;:::-;31197:24;;31235:19;31252:1;31235:19;:::i;:::-;31230:24;;31277:1;31274;31270:9;31263:16;;31300:10;31295:3;31292:19;31289:45;;;31314:18;;:::i;:::-;31289:45;31144:197;;;;:::o;31347:118::-;31434:24;31452:5;31434:24;:::i;:::-;31429:3;31422:37;31347:118;;:::o;31471:442::-;31620:4;31658:2;31647:9;31643:18;31635:26;;31671:71;31739:1;31728:9;31724:17;31715:6;31671:71;:::i;:::-;31752:72;31820:2;31809:9;31805:18;31796:6;31752:72;:::i;:::-;31834;31902:2;31891:9;31887:18;31878:6;31834:72;:::i;:::-;31471:442;;;;;;:::o;31919:137::-;31973:5;32004:6;31998:13;31989:22;;32020:30;32044:5;32020:30;:::i;:::-;31919:137;;;;:::o;32062:345::-;32129:6;32178:2;32166:9;32157:7;32153:23;32149:32;32146:119;;;32184:79;;:::i;:::-;32146:119;32304:1;32329:61;32382:7;32373:6;32362:9;32358:22;32329:61;:::i;:::-;32319:71;;32275:125;32062:345;;;;:::o;32413:332::-;32534:4;32572:2;32561:9;32557:18;32549:26;;32585:71;32653:1;32642:9;32638:17;32629:6;32585:71;:::i;:::-;32666:72;32734:2;32723:9;32719:18;32710:6;32666:72;:::i;:::-;32413:332;;;;;:::o;32751:410::-;32791:7;32814:20;32832:1;32814:20;:::i;:::-;32809:25;;32848:20;32866:1;32848:20;:::i;:::-;32843:25;;32903:1;32900;32896:9;32925:30;32943:11;32925:30;:::i;:::-;32914:41;;33104:1;33095:7;33091:15;33088:1;33085:22;33065:1;33058:9;33038:83;33015:139;;33134:18;;:::i;:::-;33015:139;32799:362;32751:410;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613516806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml index 40e739b4..b06df9f5 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,8 +1,9 @@ testMode: assertion -testLimit: 5000 +testLimit: 2000 corpusDir: 'echidna-corpus' cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] format: text +# filterFunctions: ['helper_createOperator()'] # contractAddr: '0xContractAddress' # filterBlacklist: false From ee2b891bca20bfe0406d8a055611994a4a0fd615 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 12 Feb 2024 19:56:37 +0100 Subject: [PATCH 12/19] fix: moved the testing contracts --- .echidna.test.js | 6 +++--- contracts/{modules => echidna}/Clusters.sol | 2 +- contracts/{modules => echidna}/DAO.sol | 2 +- contracts/{modules => echidna}/Operators.sol | 2 +- crytic-export/combined_solc.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename contracts/{modules => echidna}/Clusters.sol (99%) rename contracts/{modules => echidna}/DAO.sol (93%) rename contracts/{modules => echidna}/Operators.sol (99%) diff --git a/.echidna.test.js b/.echidna.test.js index 0cdfaa0e..a1d69b7d 100644 --- a/.echidna.test.js +++ b/.echidna.test.js @@ -12,13 +12,13 @@ const echidnaPath = '/usr/local/bin/echidna'; console.log(echidnaPath); switch (contract) { case 'Operators': - exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/modules/Operators.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/echidna/Operators.sol'); break; case 'Clusters': - exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/modules/Clusters.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/echidna/Clusters.sol'); break; case 'DAO': - exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/modules/DAO.sol'); + exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/echidna/DAO.sol'); break; default: console.log(chalk.redBright('Invalid contract name. Use Operators, Clusters, or DAO.')); diff --git a/contracts/modules/Clusters.sol b/contracts/echidna/Clusters.sol similarity index 99% rename from contracts/modules/Clusters.sol rename to contracts/echidna/Clusters.sol index 4e47590c..acc74b3b 100644 --- a/contracts/modules/Clusters.sol +++ b/contracts/echidna/Clusters.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVClusters.sol"; +import "../modules/SSVClusters.sol"; import "../libraries/ClusterLib.sol"; contract Clusters is SSVClusters { diff --git a/contracts/modules/DAO.sol b/contracts/echidna/DAO.sol similarity index 93% rename from contracts/modules/DAO.sol rename to contracts/echidna/DAO.sol index a40480d4..9016a18e 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/echidna/DAO.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVDAO.sol"; +import "../modules/SSVDAO.sol"; contract DAO is SSVDAO { constructor() { diff --git a/contracts/modules/Operators.sol b/contracts/echidna/Operators.sol similarity index 99% rename from contracts/modules/Operators.sol rename to contracts/echidna/Operators.sol index 03b3e182..1919a4a0 100644 --- a/contracts/modules/Operators.sol +++ b/contracts/echidna/Operators.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "./SSVOperators.sol"; +import "../modules/SSVOperators.sol"; import "../libraries/ProtocolLib.sol"; contract Operators is SSVOperators { diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 5543e36e..ed8ca6e8 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "exportedSymbols": {"ISSVClusters": [2270], "ISSVNetworkCore": [1967]}, "id": 2271, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2116, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 2117, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2271, "sourceUnit": 1968, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 2118, "name": "ISSVNetworkCore", "nameLocations": ["129:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1967, "src": "129:15:0"}, "id": 2119, "nodeType": "InheritanceSpecifier", "src": "129:15:0"}], "canonicalName": "ISSVClusters", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2270, "linearizedBaseContracts": [2270, 1967], "name": "ISSVClusters", "nameLocation": "113:12:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2120, "nodeType": "StructuredDocumentation", "src": "151:390:0", "text": "@notice Registers a new validator on the SSV Network\n @param publicKey The public key of the new validator\n @param operatorIds Array of IDs of operators managing this validator\n @param sharesData Encrypted shares related to the new validator\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster to be used with the new validator"}, "functionSelector": "06e8fb9c", "id": 2135, "implemented": false, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "555:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2133, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2122, "mutability": "mutable", "name": "publicKey", "nameLocation": "597:9:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "582:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2121, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "582:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2125, "mutability": "mutable", "name": "operatorIds", "nameLocation": "632:11:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "616:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2123, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "616:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2124, "nodeType": "ArrayTypeName", "src": "616:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2127, "mutability": "mutable", "name": "sharesData", "nameLocation": "668:10:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "653:25:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2126, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "653:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2129, "mutability": "mutable", "name": "amount", "nameLocation": "696:6:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "688:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "688:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2132, "mutability": "mutable", "name": "cluster", "nameLocation": "727:7:0", "nodeType": "VariableDeclaration", "scope": 2135, "src": "712:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2131, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2130, "name": "Cluster", "nameLocations": ["712:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "712:7:0"}, "referencedDeclaration": 1906, "src": "712:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "572:168:0"}, "returnParameters": {"id": 2134, "nodeType": "ParameterList", "parameters": [], "src": "749:0:0"}, "scope": 2270, "src": "546:204:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2136, "nodeType": "StructuredDocumentation", "src": "756:270:0", "text": "@notice Removes an existing validator from the SSV Network\n @param publicKey The public key of the validator to be removed\n @param operatorIds Array of IDs of operators managing the validator\n @param cluster Cluster associated with the validator"}, "functionSelector": "12b3fc19", "id": 2147, "implemented": false, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "1040:15:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2138, "mutability": "mutable", "name": "publicKey", "nameLocation": "1071:9:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1056:24:0", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2137, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1056:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2141, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1098:11:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1082:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2139, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1082:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2140, "nodeType": "ArrayTypeName", "src": "1082:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2144, "mutability": "mutable", "name": "cluster", "nameLocation": "1126:7:0", "nodeType": "VariableDeclaration", "scope": 2147, "src": "1111:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2143, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2142, "name": "Cluster", "nameLocations": ["1111:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1111:7:0"}, "referencedDeclaration": 1906, "src": "1111:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1055:79:0"}, "returnParameters": {"id": 2146, "nodeType": "ParameterList", "parameters": [], "src": "1143:0:0"}, "scope": 2270, "src": "1031:113:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2148, "nodeType": "StructuredDocumentation", "src": "1254:200:0", "text": "@notice Liquidates a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param cluster Cluster to be liquidated"}, "functionSelector": "bf0f2fb2", "id": 2159, "implemented": false, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "1468:9:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2157, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2150, "mutability": "mutable", "name": "owner", "nameLocation": "1486:5:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1478:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2149, "name": "address", "nodeType": "ElementaryTypeName", "src": "1478:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2153, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1509:11:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1493:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1493:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2152, "nodeType": "ArrayTypeName", "src": "1493:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2156, "mutability": "mutable", "name": "cluster", "nameLocation": "1537:7:0", "nodeType": "VariableDeclaration", "scope": 2159, "src": "1522:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2155, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2154, "name": "Cluster", "nameLocations": ["1522:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1522:7:0"}, "referencedDeclaration": 1906, "src": "1522:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1477:68:0"}, "returnParameters": {"id": 2158, "nodeType": "ParameterList", "parameters": [], "src": "1554:0:0"}, "scope": 2270, "src": "1459:96:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2160, "nodeType": "StructuredDocumentation", "src": "1561:232:0", "text": "@notice Reactivates a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited for reactivation\n @param cluster Cluster to be reactivated"}, "functionSelector": "5fec6dd0", "id": 2171, "implemented": false, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "1807:10:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2169, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2163, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1834:11:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1818:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2161, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2162, "nodeType": "ArrayTypeName", "src": "1818:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2165, "mutability": "mutable", "name": "amount", "nameLocation": "1855:6:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1847:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1847:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2168, "mutability": "mutable", "name": "cluster", "nameLocation": "1878:7:0", "nodeType": "VariableDeclaration", "scope": 2171, "src": "1863:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2167, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2166, "name": "Cluster", "nameLocations": ["1863:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1863:7:0"}, "referencedDeclaration": 1906, "src": "1863:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1817:69:0"}, "returnParameters": {"id": 2170, "nodeType": "ParameterList", "parameters": [], "src": "1895:0:0"}, "scope": 2270, "src": "1798:98:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2172, "nodeType": "StructuredDocumentation", "src": "2014:283:0", "text": "@notice Deposits tokens into a cluster\n @param owner The owner of the cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param amount Amount of SSV tokens to be deposited\n @param cluster Cluster where the deposit will be made"}, "functionSelector": "bc26e7e5", "id": 2185, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "2311:7:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2183, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2174, "mutability": "mutable", "name": "owner", "nameLocation": "2327:5:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2319:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2173, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2177, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2350:11:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2334:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2175, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2334:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2176, "nodeType": "ArrayTypeName", "src": "2334:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2179, "mutability": "mutable", "name": "amount", "nameLocation": "2371:6:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2363:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2363:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2182, "mutability": "mutable", "name": "cluster", "nameLocation": "2394:7:0", "nodeType": "VariableDeclaration", "scope": 2185, "src": "2379:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2181, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2180, "name": "Cluster", "nameLocations": ["2379:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2379:7:0"}, "referencedDeclaration": 1906, "src": "2379:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2318:84:0"}, "returnParameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "2411:0:0"}, "scope": 2270, "src": "2302:110:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2186, "nodeType": "StructuredDocumentation", "src": "2418:246:0", "text": "@notice Withdraws tokens from a cluster\n @param operatorIds Array of IDs of operators managing the cluster\n @param tokenAmount Amount of SSV tokens to be withdrawn\n @param cluster Cluster where the withdrawal will be made"}, "functionSelector": "686e682c", "id": 2197, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2678:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 2195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2189, "mutability": "mutable", "name": "operatorIds", "nameLocation": "2703:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2687:27:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2187, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2188, "nodeType": "ArrayTypeName", "src": "2687:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2191, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "2724:11:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2716:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2190, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2716:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2194, "mutability": "mutable", "name": "cluster", "nameLocation": "2752:7:0", "nodeType": "VariableDeclaration", "scope": 2197, "src": "2737:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2193, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2192, "name": "Cluster", "nameLocations": ["2737:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2737:7:0"}, "referencedDeclaration": 1906, "src": "2737:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2686:74:0"}, "returnParameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "2769:0:0"}, "scope": 2270, "src": "2669:101:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 2198, "nodeType": "StructuredDocumentation", "src": "2776:299:0", "text": " @dev Emitted when the validator has been added.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param shares snappy compressed shares(a set of encrypted and public shares).\n @param cluster All the cluster data."}, "eventSelector": "48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e5", "id": 2212, "name": "ValidatorAdded", "nameLocation": "3086:14:0", "nodeType": "EventDefinition", "parameters": {"id": 2211, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2200, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3117:5:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3101:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2199, "name": "address", "nodeType": "ElementaryTypeName", "src": "3101:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2203, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3133:11:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3124:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2201, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3124:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2202, "nodeType": "ArrayTypeName", "src": "3124:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2205, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3152:9:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3146:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2204, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3146:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2207, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "3169:6:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3163:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2206, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3163:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2210, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3185:7:0", "nodeType": "VariableDeclaration", "scope": 2212, "src": "3177:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2209, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2208, "name": "Cluster", "nameLocations": ["3177:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3177:7:0"}, "referencedDeclaration": 1906, "src": "3177:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3100:93:0"}, "src": "3080:114:0"}, {"anonymous": false, "documentation": {"id": 2213, "nodeType": "StructuredDocumentation", "src": "3200:210:0", "text": " @dev Emitted when the validator is removed.\n @param publicKey The public key of a validator.\n @param operatorIds The operator ids list.\n @param cluster All the cluster data."}, "eventSelector": "ccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e", "id": 2225, "name": "ValidatorRemoved", "nameLocation": "3421:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2215, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3454:5:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3438:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2214, "name": "address", "nodeType": "ElementaryTypeName", "src": "3438:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2218, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3470:11:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3461:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2216, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2217, "nodeType": "ArrayTypeName", "src": "3461:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2220, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "3489:9:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3483:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2219, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3483:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2223, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3508:7:0", "nodeType": "VariableDeclaration", "scope": 2225, "src": "3500:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2222, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2221, "name": "Cluster", "nameLocations": ["3500:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3500:7:0"}, "referencedDeclaration": 1906, "src": "3500:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3437:79:0"}, "src": "3415:102:0"}, {"anonymous": false, "eventSelector": "1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e688", "id": 2235, "name": "ClusterLiquidated", "nameLocation": "3529:17:0", "nodeType": "EventDefinition", "parameters": {"id": 2234, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2227, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3563:5:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3547:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2226, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2230, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3579:11:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3570:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2228, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2229, "nodeType": "ArrayTypeName", "src": "3570:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2233, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3600:7:0", "nodeType": "VariableDeclaration", "scope": 2235, "src": "3592:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2232, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2231, "name": "Cluster", "nameLocations": ["3592:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3592:7:0"}, "referencedDeclaration": 1906, "src": "3592:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3546:62:0"}, "src": "3523:86:0"}, {"anonymous": false, "eventSelector": "c803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b6859", "id": 2245, "name": "ClusterReactivated", "nameLocation": "3621:18:0", "nodeType": "EventDefinition", "parameters": {"id": 2244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2237, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3656:5:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3640:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2236, "name": "address", "nodeType": "ElementaryTypeName", "src": "3640:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2240, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3672:11:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3663:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2238, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3663:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ArrayTypeName", "src": "3663:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2243, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3693:7:0", "nodeType": "VariableDeclaration", "scope": 2245, "src": "3685:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2242, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2241, "name": "Cluster", "nameLocations": ["3685:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3685:7:0"}, "referencedDeclaration": 1906, "src": "3685:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3639:62:0"}, "src": "3615:87:0"}, {"anonymous": false, "eventSelector": "39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0", "id": 2257, "name": "ClusterWithdrawn", "nameLocation": "3714:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2247, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3747:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3731:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2246, "name": "address", "nodeType": "ElementaryTypeName", "src": "3731:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2250, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3763:11:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3754:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3754:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2249, "nodeType": "ArrayTypeName", "src": "3754:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2252, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3784:5:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3776:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2251, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3776:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2255, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3799:7:0", "nodeType": "VariableDeclaration", "scope": 2257, "src": "3791:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2254, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2253, "name": "Cluster", "nameLocations": ["3791:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3791:7:0"}, "referencedDeclaration": 1906, "src": "3791:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3730:77:0"}, "src": "3708:100:0"}, {"anonymous": false, "eventSelector": "2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2", "id": 2269, "name": "ClusterDeposited", "nameLocation": "3820:16:0", "nodeType": "EventDefinition", "parameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2259, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3853:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3837:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2258, "name": "address", "nodeType": "ElementaryTypeName", "src": "3837:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2262, "indexed": false, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3869:11:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3860:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2260, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3860:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2261, "nodeType": "ArrayTypeName", "src": "3860:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2264, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3890:5:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3882:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3882:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2267, "indexed": false, "mutability": "mutable", "name": "cluster", "nameLocation": "3905:7:0", "nodeType": "VariableDeclaration", "scope": 2269, "src": "3897:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 2266, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2265, "name": "Cluster", "nameLocations": ["3897:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3897:7:0"}, "referencedDeclaration": 1906, "src": "3897:7:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3836:77:0"}, "src": "3814:100:0"}], "scope": 2271, "src": "103:3813:0", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3872:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1967]}, "id": 1968, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1967, "linearizedBaseContracts": [1967], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1863, "members": [{"constant": false, "id": 1856, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1855, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1859, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1858, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1862, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1863, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1861, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1880, "members": [{"constant": false, "id": 1866, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1865, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1869, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1868, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1872, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1871, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1875, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1874, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1880, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1878, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1877, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1863, "src": "1129:8:1"}, "referencedDeclaration": 1863, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1967, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1890, "members": [{"constant": false, "id": 1883, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1882, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1886, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1885, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1889, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1890, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1888, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1906, "members": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1892, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1896, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1899, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1898, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1902, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1901, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1905, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1906, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1967, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1908, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1907, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1910, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1909, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1912, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1914, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1913, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1916, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1915, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1918, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1920, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1919, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1922, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1924, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1923, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1926, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1928, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1927, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1930, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1932, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1931, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1934, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1936, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1935, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1938, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1940, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1942, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1944, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1943, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1946, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1945, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1948, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1947, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1950, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1949, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1952, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1951, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1954, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1956, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1958, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1957, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1960, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1962, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1961, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1964, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1963, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1966, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1968, "src": "70:3477:1", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol": {"AST": {"absolutePath": "contracts/libraries/ClusterLib.sol", "exportedSymbols": {"ClusterLib": [732], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024], "Types256": [2114], "Types64": [2065]}, "id": 733, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 483, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 484, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 1968, "src": "70:43:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 485, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2048, "src": "114:26:2", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 486, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 733, "sourceUnit": 2115, "src": "141:21:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ClusterLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 732, "linearizedBaseContracts": [732], "name": "ClusterLib", "nameLocation": "172:10:2", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 489, "libraryName": {"id": 487, "name": "Types64", "nameLocations": ["195:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "195:7:2"}, "nodeType": "UsingForDirective", "src": "189:25:2", "typeName": {"id": 488, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "375:306:2", "statements": [{"assignments": [500], "declarations": [{"constant": false, "id": 500, "mutability": "mutable", "name": "networkFee", "nameLocation": "392:10:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "385:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 499, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "385:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 511, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 503, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 496, "src": "412:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 504, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "437:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "445:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "437:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "412:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "405:6:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 501, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "405:6:2", "typeDescriptions": {}}}, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "405:56:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 508, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "464:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "472:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "464:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "405:81:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "385:101:2"}, {"assignments": [513], "declarations": [{"constant": false, "id": 513, "mutability": "mutable", "name": "usage", "nameLocation": "503:5:2", "nodeType": "VariableDeclaration", "scope": 544, "src": "496:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 512, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "496:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 524, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 523, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 514, "name": "newIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 494, "src": "512:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 515, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "523:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 516, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "531:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "523:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "512:24:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 518, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "511:26:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 519, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "540:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "548:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "540:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "511:51:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 522, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "565:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "511:64:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "496:79:2"}, {"expression": {"id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 525, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "585:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "593:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "585:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 528, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "603:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "609:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "603:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "603:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 531, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "620:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 532, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "628:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "620:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "603:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 535, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "642:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "650:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "642:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 537, "name": "usage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "660:5:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "666:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "660:12:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "660:14:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "642:32:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "603:71:2", "trueExpression": {"hexValue": "30", "id": 534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "638:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "585:89:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "585:89:2"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "updateBalance", "nameLocation": "229:13:2", "nodeType": "FunctionDefinition", "parameters": {"id": 497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 492, "mutability": "mutable", "name": "cluster", "nameLocation": "283:7:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "252:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 490, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["252:15:2", "268:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "252:23:2"}, "referencedDeclaration": 1906, "src": "252:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 494, "mutability": "mutable", "name": "newIndex", "nameLocation": "307:8:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "300:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 493, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "300:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "332:22:2", "nodeType": "VariableDeclaration", "scope": 545, "src": "325:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 495, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "325:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "242:118:2"}, "returnParameters": {"id": 498, "nodeType": "ParameterList", "parameters": [], "src": "375:0:2"}, "scope": 732, "src": "220:461:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "951:372:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 561, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "965:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 562, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "973:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "965:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "991:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "965:27:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 594, "nodeType": "IfStatement", "src": "961:356:2", "trueBody": {"id": 593, "nodeType": "Block", "src": "994:323:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 565, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1012:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1020:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1012:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 567, "name": "minimumLiquidationCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 556, "src": "1030:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1059:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1030:35:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1030:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1012:55:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 573, "nodeType": "IfStatement", "src": "1008:72:2", "trueBody": {"expression": {"hexValue": "74727565", "id": 571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1076:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 560, "id": 572, "nodeType": "Return", "src": "1069:11:2"}}, {"assignments": [575], "declarations": [{"constant": false, "id": 575, "mutability": "mutable", "name": "liquidationThreshold", "nameLocation": "1101:20:2", "nodeType": "VariableDeclaration", "scope": 593, "src": "1094:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 574, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1094:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 585, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 576, "name": "minimumBlocksBeforeLiquidation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 554, "src": "1124:30:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 577, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "1174:8:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 578, "name": "networkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 552, "src": "1185:10:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1174:21:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 580, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1173:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1124:72:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 582, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1215:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1223:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "1215:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1124:113:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1094:143:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 586, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "1259:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1267:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "1259:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 588, "name": "liquidationThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 575, "src": "1277:20:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1298:6:2", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 2064, "src": "1277:27:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1277:29:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1259:47:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 560, "id": 592, "nodeType": "Return", "src": "1252:54:2"}]}}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "isLiquidatable", "nameLocation": "696:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 557, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "cluster", "nameLocation": "751:7:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "720:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["720:15:2", "736:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "720:23:2"}, "referencedDeclaration": 1906, "src": "720:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "burnRate", "nameLocation": "775:8:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "768:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 549, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "768:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 552, "mutability": "mutable", "name": "networkFee", "nameLocation": "800:10:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "793:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 551, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "793:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 554, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "827:30:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "820:37:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 553, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "820:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 556, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "874:28:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "867:35:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 555, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "867:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "710:198:2"}, "returnParameters": {"id": 560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 559, "mutability": "mutable", "name": "liquidatable", "nameLocation": "937:12:2", "nodeType": "VariableDeclaration", "scope": 596, "src": "932:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 558, "name": "bool", "nodeType": "ElementaryTypeName", "src": "932:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "931:19:2"}, "scope": 732, "src": "687:636:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 611, "nodeType": "Block", "src": "1423:82:2", "statements": [{"condition": {"id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1437:15:2", "subExpression": {"expression": {"id": 602, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1438:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1446:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "1438:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 610, "nodeType": "IfStatement", "src": "1433:65:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 605, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1461:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1477:19:2", "memberName": "ClusterIsLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 1938, "src": "1461:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1461:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "RevertStatement", "src": "1454:44:2"}}]}, "id": 612, "implemented": true, "kind": "function", "modifiers": [], "name": "validateClusterIsNotLiquidated", "nameLocation": "1338:30:2", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "cluster", "nameLocation": "1400:7:2", "nodeType": "VariableDeclaration", "scope": 612, "src": "1369:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1369:15:2", "1385:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1369:23:2"}, "referencedDeclaration": 1906, "src": "1369:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "1368:40:2"}, "returnParameters": {"id": 601, "nodeType": "ParameterList", "parameters": [], "src": "1423:0:2"}, "scope": 732, "src": "1329:176:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 676, "nodeType": "Block", "src": "1719:464:2", "statements": [{"assignments": [629], "declarations": [{"constant": false, "id": 629, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1737:13:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1729:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 637, "initialValue": {"arguments": [{"arguments": [{"id": 633, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 617, "src": "1780:5:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 634, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 620, "src": "1787:11:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 631, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1763:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 632, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1767:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1763:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1763:36:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 630, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1753:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1753:47:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1729:71:2"}, {"assignments": [639], "declarations": [{"constant": false, "id": 639, "mutability": "mutable", "name": "hashedClusterData", "nameLocation": "1818:17:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1810:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 638, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1810:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 643, "initialValue": {"arguments": [{"id": 641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 615, "src": "1854:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 640, "name": "hashClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1838:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1838:24:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1810:52:2"}, {"assignments": [645], "declarations": [{"constant": false, "id": 645, "mutability": "mutable", "name": "clusterData", "nameLocation": "1881:11:2", "nodeType": "VariableDeclaration", "scope": 676, "src": "1873:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 644, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1873:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 650, "initialValue": {"baseExpression": {"expression": {"id": 646, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 623, "src": "1895:1:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1897:8:2", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1895:10:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 649, "indexExpression": {"id": 648, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1906:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1895:25:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1873:47:2"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 651, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "1934:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1957:1:2", "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": 653, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1949:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 652, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1949:7:2", "typeDescriptions": {}}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1949:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1934:25:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 663, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 645, "src": "2041:11:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 664, "name": "hashedClusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 639, "src": "2056:17:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2041:32:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 672, "nodeType": "IfStatement", "src": "2037:109:2", "trueBody": {"id": 671, "nodeType": "Block", "src": "2075:71:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 666, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2096:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2112:21:2", "memberName": "IncorrectClusterState", "nodeType": "MemberAccess", "referencedDeclaration": 1942, "src": "2096:37:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 670, "nodeType": "RevertStatement", "src": "2089:46:2"}]}}, "id": 673, "nodeType": "IfStatement", "src": "1930:216:2", "trueBody": {"id": 662, "nodeType": "Block", "src": "1961:70:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 657, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1982:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1998:20:2", "memberName": "ClusterDoesNotExists", "nodeType": "MemberAccess", "referencedDeclaration": 1940, "src": "1982:36:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1982:38:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 661, "nodeType": "RevertStatement", "src": "1975:45:2"}]}}, {"expression": {"id": 674, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "2163:13:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 627, "id": 675, "nodeType": "Return", "src": "2156:20:2"}]}, "id": 677, "implemented": true, "kind": "function", "modifiers": [], "name": "validateHashedCluster", "nameLocation": "1520:21:2", "nodeType": "FunctionDefinition", "parameters": {"id": 624, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "cluster", "nameLocation": "1582:7:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1551:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 614, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 613, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["1551:15:2", "1567:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "1551:23:2"}, "referencedDeclaration": 1906, "src": "1551:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 617, "mutability": "mutable", "name": "owner", "nameLocation": "1607:5:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1599:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 616, "name": "address", "nodeType": "ElementaryTypeName", "src": "1599:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 620, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1638:11:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1622:27:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1622:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 619, "nodeType": "ArrayTypeName", "src": "1622:8:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 623, "mutability": "mutable", "name": "s", "nameLocation": "1679:1:2", "nodeType": "VariableDeclaration", "scope": 677, "src": "1659:21:2", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 622, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 621, "name": "StorageData", "nameLocations": ["1659:11:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1659:11:2"}, "referencedDeclaration": 2024, "src": "1659:11:2", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1541:145:2"}, "returnParameters": {"id": 627, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 626, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 677, "src": "1710:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 625, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1710:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1709:9:2"}, "scope": 732, "src": "1511:672:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 705, "nodeType": "Block", "src": "2352:173:2", "statements": [{"expression": {"arguments": [{"id": 688, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2376:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, {"id": 689, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2385:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 690, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2399:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 687, "name": "updateBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "2362:13:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2362:60:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 692, "nodeType": "ExpressionStatement", "src": "2362:60:2"}, {"expression": {"id": 697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 693, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2432:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 695, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2440:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2432:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 696, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 682, "src": "2448:12:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2432:28:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 698, "nodeType": "ExpressionStatement", "src": "2432:28:2"}, {"expression": {"id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 699, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 680, "src": "2470:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 701, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2478:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2470:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 702, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 684, "src": "2496:22:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2470:48:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "2470:48:2"}]}, "id": 706, "implemented": true, "kind": "function", "modifiers": [], "name": "updateClusterData", "nameLocation": "2198:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 680, "mutability": "mutable", "name": "cluster", "nameLocation": "2256:7:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2225:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 679, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 678, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2225:15:2", "2241:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2225:23:2"}, "referencedDeclaration": 1906, "src": "2225:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}, {"constant": false, "id": 682, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2280:12:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2273:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 681, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2273:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 684, "mutability": "mutable", "name": "currentNetworkFeeIndex", "nameLocation": "2309:22:2", "nodeType": "VariableDeclaration", "scope": 706, "src": "2302:29:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2302:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2215:122:2"}, "returnParameters": {"id": 686, "nodeType": "ParameterList", "parameters": [], "src": "2352:0:2"}, "scope": 732, "src": "2189:336:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 730, "nodeType": "Block", "src": "2628:308:2", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"id": 717, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2722:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 718, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2730:14:2", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2722:22:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"expression": {"id": 719, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2766:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 720, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2774:15:2", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2766:23:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 721, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2811:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 722, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2819:5:2", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2811:13:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 723, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2846:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 724, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2854:7:2", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2846:15:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 725, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 709, "src": "2883:7:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 726, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2891:6:2", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2883:14:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"id": 715, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2684:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2688:12:2", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2684:16:2", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2684:231:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 714, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2657:9:2", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:272:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 713, "id": 729, "nodeType": "Return", "src": "2638:291:2"}]}, "id": 731, "implemented": true, "kind": "function", "modifiers": [], "name": "hashClusterData", "nameLocation": "2540:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 709, "mutability": "mutable", "name": "cluster", "nameLocation": "2587:7:2", "nodeType": "VariableDeclaration", "scope": 731, "src": "2556:38:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 708, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 707, "name": "ISSVNetworkCore.Cluster", "nameLocations": ["2556:15:2", "2572:7:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2556:23:2"}, "referencedDeclaration": 1906, "src": "2556:23:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2555:40:2"}, "returnParameters": {"id": 713, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 712, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 731, "src": "2619:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 711, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2619:7:2", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2618:9:2"}, "scope": 732, "src": "2531:405:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 733, "src": "164:2774:2", "usedErrors": []}], "src": "45:2894:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2401], "Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2402, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2272, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2273, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2402, "sourceUnit": 2048, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2401, "linearizedBaseContracts": [2401], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2280, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2279, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2276, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2275, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2274, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "141:10:3"}, "referencedDeclaration": 1977, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2278, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2280, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2277, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2287, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2284, "id": 2286, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2288, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2281, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2284, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2283, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2288, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2282, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2401, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2311, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2300, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2301, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2295, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2298, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2922, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2310, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2309, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2304, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2308, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2312, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2290, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2289, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2312, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2294, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2401, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2338, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2322, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2326, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2401", "typeString": "library CoreLib"}], "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2324, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2328, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2314, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2317, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2319, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2019, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "id": 2321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2954, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2337, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2336, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2331, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1950, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2335, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2339, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2315, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2314, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2339, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2316, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2401, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2365, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2347, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2342, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "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": 2349, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2348, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2355, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2346, "id": 2354, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2358], "declarations": [{"constant": false, "id": 2358, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2365, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2359, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2342, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2358, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2360, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2361, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2358, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2346, "id": 2364, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2340, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2366, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2342, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2341, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2345, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2366, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2344, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2401, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2399, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2375, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2374, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2366, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2383, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2378, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1962, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2382, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2384, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2387, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 1998, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2390, "indexExpression": {"id": 2389, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2391, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2393, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2395, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2369, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, {"id": 2396, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2371, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2394, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$1977_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2398, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2400, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2369, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}, "typeName": {"id": 2368, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2367, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1826:10:3"}, "referencedDeclaration": 1977, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2371, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2400, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2370, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2373, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2401, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2402, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2645, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2403, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2404, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 1968, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2405, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2048, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2406, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2878, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2407, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2645, "sourceUnit": 2115, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2644, "linearizedBaseContracts": [2644], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2410, "libraryName": {"id": 2408, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2065, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2463, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2417], "declarations": [{"constant": false, "id": 2417, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2463, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2416, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2431, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2420, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2418, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2423, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2425, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2427, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2436, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2437, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2439, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2440, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2445, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2417, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2446, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2450, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2451, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2413, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2455, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2458, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2457, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2456, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2460, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2462, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2464, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2413, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2464, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2412, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2411, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "280:24:4"}, "referencedDeclaration": 1880, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2415, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2644, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2517, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2471], "declarations": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2517, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2470, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2485, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2474, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2472, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2477, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2479, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2482, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2483, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2486, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2489, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2490, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2491, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2493, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2494, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2497, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1862, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2499, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2471, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2500, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2504, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2505, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2467, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2512, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2511, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2510, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2518, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2468, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2467, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2518, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2466, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2465, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "653:24:4"}, "referencedDeclaration": 1880, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2644, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2546, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2524, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2534, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2529, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1920, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2533, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2535, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1872, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2537, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2545, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2540, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1908, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2544, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2547, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2521, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2547, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2520, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2519, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1016:24:4"}, "referencedDeclaration": 1880, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2644, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2642, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2640, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2572], "declarations": [{"constant": false, "id": 2572, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2571, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2576, "initialValue": {"baseExpression": {"id": 2573, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2575, "indexExpression": {"id": 2574, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2581], "declarations": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2640, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2580, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2579, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1599:24:4"}, "referencedDeclaration": 1880, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2586, "initialValue": {"baseExpression": {"expression": {"id": 2582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2583, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2585, "indexExpression": {"id": 2584, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2572, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2587, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2629, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2628, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2593, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2592, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2518, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1880_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2595, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2596, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2605, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2607, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2609, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2610, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2613, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2621, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2620, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2615, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1948, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2619, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2622, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2604, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2598, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2601, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2603, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2623, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2562, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2624, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2627, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2630, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2560, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2631, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2581, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2633, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2635, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2639, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2636, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2638, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2567, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2568, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2641, "initializationExpression": {"assignments": [2565], "declarations": [{"constant": false, "id": 2565, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2641, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2564, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2566, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2643, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2550, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2548, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2549, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2551, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2554, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2553, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2556, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2555, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1401:11:4"}, "referencedDeclaration": 2024, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2560, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2559, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2562, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2643, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2561, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2644, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2645, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "ISSVNetworkCore": [1967], "ProtocolLib": [2812], "SSVStorageProtocol": [2877], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 2813, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2646, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2647, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 1968, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2648, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2115, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2813, "sourceUnit": 2878, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2812, "linearizedBaseContracts": [2812], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2652, "libraryName": {"id": 2650, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2114, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 2651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 2675, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2664, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2666, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2663, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2662, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 2669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2670, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2655, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2659, "id": 2674, "nodeType": "Return", "src": "443:96:5"}]}, "id": 2676, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2655, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 2676, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2654, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2653, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "374:15:5"}, "referencedDeclaration": 2854, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 2659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2658, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2676, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2657, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 2812, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2714, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 2685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2684, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2686, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2687, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 2694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2688, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2690, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2832, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2692, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2691, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2676, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2693, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2695, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 2704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2696, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2698, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2817, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2701, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2699, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 2703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2705, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 2712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2706, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2708, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2709, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2681, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 2094, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2713, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 2715, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2682, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2679, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2677, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "578:15:5"}, "referencedDeclaration": 2854, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2681, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 2715, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 2683, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 2812, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2739, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 2727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2721, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2723, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2725, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2724, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2768, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 2726, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2728, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 2737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2729, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2718, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2731, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2734, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2733, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2732, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 2736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2738, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 2740, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2718, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 2740, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2717, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2716, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "956:15:5"}, "referencedDeclaration": 2854, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 2720, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 2812, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2767, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2748, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2749, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2835, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2752, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2751, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2750, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 2755, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 2823, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 2758, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2759, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2760, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2762, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2743, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2763, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2747, "id": 2766, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 2768, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2744, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2743, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2742, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2741, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1141:15:5"}, "referencedDeclaration": 2854, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 2747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2746, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2768, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 2812, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2810, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 2779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 2778, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2740, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2781, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 2783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 2782, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2773, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2791, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2792, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2793, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2795, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 2798, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2797, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 2796, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 2800, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2808, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 2807, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2802, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1967, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1967_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1964, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2806, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 2809, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 2790, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 2788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2784, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2771, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2786, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 2820, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2787, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2775, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2789, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 2811, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 2776, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2771, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2770, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2769, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1351:15:5"}, "referencedDeclaration": 2854, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 2773, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2772, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2775, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 2811, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2774, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 2777, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 2812, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2813, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [3029], "IERC20": [2955], "ISSVNetworkCore": [1967], "SSVModules": [1977], "SSVStorage": [2047], "StorageData": [2024]}, "id": 2048, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1969, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 1970, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 1968, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 1971, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 3030, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1972, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2048, "sourceUnit": 2956, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 1977, "members": [{"id": 1973, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 1974, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 1975, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 1976, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2024, "members": [{"constant": false, "id": 1982, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1981, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1979, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1980, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1987, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 1986, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1984, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1985, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 1992, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 1991, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1989, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1990, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 1998, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 1997, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 1995, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1994, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1977, "src": "1006:10:6"}, "referencedDeclaration": 1977, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$1977", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$1977_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 1996, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2003, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2002, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2000, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2009, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2008, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2005, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1890_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2007, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2006, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1890, "src": "1322:40:6"}, "referencedDeclaration": 1890, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1890_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2015, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2014, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2011, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2013, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2012, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "1488:24:6"}, "referencedDeclaration": 1880, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2019, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}, "typeName": {"id": 2018, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2017, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2955, "src": "1599:6:6"}, "referencedDeclaration": 2955, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2955", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2023, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2024, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2022, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2021, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1686:16:6"}, "referencedDeclaration": 2961, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2048, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2047, "linearizedBaseContracts": [2047], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2034, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2047, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2025, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2028, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2030, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2032, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2045, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2041], "declarations": [{"constant": false, "id": 2041, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2045, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2043, "initialValue": {"id": 2042, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2041, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2038, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2044, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2046, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2035, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2038, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2046, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2037, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2036, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "1891:11:6"}, "referencedDeclaration": 2024, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2047, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2048, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [2877], "StorageProtocol": [2854]}, "id": 2878, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2814, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 2854, "members": [{"constant": false, "id": 2817, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2816, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2820, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2819, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2823, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2822, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2826, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2825, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2829, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2828, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2832, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2831, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2835, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2834, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2838, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2837, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2841, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2840, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2844, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2843, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2847, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2846, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2850, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2849, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2853, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 2854, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2852, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 2878, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2877, "linearizedBaseContracts": [2877], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2864, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 2877, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2855, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2863, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 2859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 2858, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2857, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 2861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2875, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [2871], "declarations": [{"constant": false, "id": 2871, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 2875, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2873, "initialValue": {"id": 2872, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2864, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2871, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 2868, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 2874, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 2876, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 2865, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 2869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2868, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 2876, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2867, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2866, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "1711:15:7"}, "referencedDeclaration": 2854, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 2877, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2878, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [2052], "Types256": [2114], "Types64": [2065]}, "id": 2115, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2049, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 2052, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 2115, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2050, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 2051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2065, "linearizedBaseContracts": [2065], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2063, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2059, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2054, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2060, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2058, "id": 2062, "nodeType": "Return", "src": "212:30:8"}]}, "id": 2064, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2054, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 2064, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2053, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 2058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2064, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2056, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 2065, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2114, "linearizedBaseContracts": [2114], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2093, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2073, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2078, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 2075, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2077, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2079, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 2081, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 2072, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2083, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2087, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2086, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2089, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 2084, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 2071, "id": 2092, "nodeType": "Return", "src": "425:50:8"}]}, "id": 2094, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2067, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 2094, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2066, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 2071, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2070, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2094, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2069, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 2114, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2112, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2102, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2103, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 2107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 2101, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2109, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 2110, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2100, "id": 2111, "nodeType": "Return", "src": "638:12:8"}]}, "id": 2113, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 2113, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2113, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 2114, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2115, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol": {"AST": {"absolutePath": "contracts/modules/Clusters.sol", "exportedSymbols": {"ClusterLib": [732], "Clusters": [481], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 482, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/modules/SSVClusters.sol", "file": "./SSVClusters.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 1852, "src": "70:27:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 482, "sourceUnit": 733, "src": "98:37:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVClusters", "nameLocations": ["158:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1851, "src": "158:11:9"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "158:11:9"}], "canonicalName": "Clusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 481, "linearizedBaseContracts": [481, 1851, 2270, 1967], "name": "Clusters", "nameLocation": "146:8:9", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 9, "libraryName": {"id": 6, "name": "ClusterLib", "nameLocations": ["182:10:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "182:10:9"}, "nodeType": "UsingForDirective", "src": "176:29:9", "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "Cluster", "nameLocations": ["197:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "197:7:9"}, "referencedDeclaration": 1906, "src": "197:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"body": {"id": 12, "nodeType": "Block", "src": "225:2:9", "statements": []}, "id": 13, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "222:2:9"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "225:0:9"}, "scope": 481, "src": "211:16:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"constant": false, "id": 16, "mutability": "mutable", "name": "publicKeys", "nameLocation": "241:10:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "233:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes[]"}, "typeName": {"baseType": {"id": 14, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "233:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "id": 15, "nodeType": "ArrayTypeName", "src": "233:7:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]"}}, "visibility": "internal"}, {"constant": false, "id": 19, "mutability": "mutable", "name": "hashedClusters", "nameLocation": "267:14:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "257:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[]"}, "typeName": {"baseType": {"id": 17, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "257:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 18, "nodeType": "ArrayTypeName", "src": "257:9:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]"}}, "visibility": "internal"}, {"constant": false, "functionSelector": "bfbdaffd", "id": 22, "mutability": "mutable", "name": "operatorIds", "nameLocation": "303:11:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "287:27:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 20, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "287:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ArrayTypeName", "src": "287:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "public"}, {"constant": true, "id": 25, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "345:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "321:48:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 23, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "321:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "368:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 28, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "399:20:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "375:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 26, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 27, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "422:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 31, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "454:23:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "430:51:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "430:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 30, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "480:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 34, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "511:17:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "487:46:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "487:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 33, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "531:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"constant": false, "id": 37, "mutability": "mutable", "name": "sault", "nameLocation": "555:5:9", "nodeType": "VariableDeclaration", "scope": 481, "src": "539:25:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 35, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "539:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "30", "id": 36, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "563:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "visibility": "private"}, {"body": {"id": 93, "nodeType": "Block", "src": "633:306:9", "statements": [{"assignments": [43], "declarations": [{"constant": false, "id": 43, "mutability": "mutable", "name": "randomBytes", "nameLocation": "656:11:9", "nodeType": "VariableDeclaration", "scope": 93, "src": "643:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 42, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "643:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 48, "initialValue": {"arguments": [{"hexValue": "3438", "id": 46, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "680:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 45, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "670:9:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 44, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "674:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "670:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "643:40:9"}, {"body": {"id": 86, "nodeType": "Block", "src": "723:165:9", "statements": [{"expression": {"id": 84, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 59, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "737:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 61, "indexExpression": {"id": 60, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "737:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 71, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "816:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 72, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "823:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 73, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "829:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "823:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 74, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "840:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "844:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "840:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 76, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "852:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 69, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "799:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "803:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "799:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 77, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "799:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 68, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "789:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 78, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "789:66:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "784:4:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 66, "name": "uint", "nodeType": "ElementaryTypeName", "src": "784:4:9", "typeDescriptions": {}}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "784:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "859:3:9", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "784:78:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "778:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 64, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "778:5:9", "typeDescriptions": {}}}, "id": 82, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "778:85:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "754:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 62, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "754:6:9", "typeDescriptions": {}}}, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "754:123:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "737:140:9", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "737:140:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 53, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "710:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 54, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "710:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 87, "initializationExpression": {"assignments": [50], "declarations": [{"constant": false, "id": 50, "mutability": "mutable", "name": "i", "nameLocation": "703:1:9", "nodeType": "VariableDeclaration", "scope": 87, "src": "698:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 49, "name": "uint", "nodeType": "ElementaryTypeName", "src": "698:4:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 52, "initialValue": {"hexValue": "30", "id": 51, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "707:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "698:10:9"}, "loopExpression": {"expression": {"id": 57, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "718:3:9", "subExpression": {"id": 56, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50, "src": "718:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 58, "nodeType": "ExpressionStatement", "src": "718:3:9"}, "nodeType": "ForStatement", "src": "693:195:9"}, {"expression": {"id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "897:7:9", "subExpression": {"id": 88, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "897:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 90, "nodeType": "ExpressionStatement", "src": "897:7:9"}, {"expression": {"id": 91, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "921:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 41, "id": 92, "nodeType": "Return", "src": "914:18:9"}]}, "id": 94, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "580:18:9", "nodeType": "FunctionDefinition", "parameters": {"id": 38, "nodeType": "ParameterList", "parameters": [], "src": "598:2:9"}, "returnParameters": {"id": 41, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 40, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 94, "src": "619:12:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 39, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "619:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "618:14:9"}, "scope": 481, "src": "571:368:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1024:1090:9", "statements": [{"assignments": [101], "declarations": [{"constant": false, "id": 101, "mutability": "mutable", "name": "baseLength", "nameLocation": "1042:10:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1034:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 100, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1034:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 118, "initialValue": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 107, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1091:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1097:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1091:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 109, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1108:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1112:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1108:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 111, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1120:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 105, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1074:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1078:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1074:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1074:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 104, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1064:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1064:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1056:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 102, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1056:7:9", "typeDescriptions": {}}}, "id": 114, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1056:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 115, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "1143:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1056:107:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 117, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1055:109:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1034:130:9"}, {"assignments": [120], "declarations": [{"constant": false, "id": 120, "mutability": "mutable", "name": "length", "nameLocation": "1182:6:9", "nodeType": "VariableDeclaration", "scope": 219, "src": "1174:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1174:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 126, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "34", "id": 121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1191:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 122, "name": "baseLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 101, "src": "1195:10:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "33", "id": 123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1208:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "src": "1195:14:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1191:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1174:35:9"}, {"expression": {"id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1264:7:9", "subExpression": {"id": 127, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1264:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 129, "nodeType": "ExpressionStatement", "src": "1264:7:9"}, {"expression": {"id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 130, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1282:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 134, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1309:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1296:12:9", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint64[] memory)"}, "typeName": {"baseType": {"id": 131, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1300:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 132, "nodeType": "ArrayTypeName", "src": "1300:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}}, "id": 135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1296:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "src": "1282:34:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 137, "nodeType": "ExpressionStatement", "src": "1282:34:9"}, {"body": {"id": 215, "nodeType": "Block", "src": "1363:717:9", "statements": [{"assignments": [149], "declarations": [{"constant": false, "id": 149, "mutability": "mutable", "name": "randomId", "nameLocation": "1384:8:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1377:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 148, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1377:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 150, "nodeType": "VariableDeclarationStatement", "src": "1377:15:9"}, {"assignments": [152], "declarations": [{"constant": false, "id": 152, "mutability": "mutable", "name": "unique", "nameLocation": "1411:6:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1406:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 151, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1406:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 153, "nodeType": "VariableDeclarationStatement", "src": "1406:11:9"}, {"body": {"id": 169, "nodeType": "Block", "src": "1434:187:9", "statements": [{"expression": {"id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1452:7:9", "subExpression": {"id": 154, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1452:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 156, "nodeType": "ExpressionStatement", "src": "1452:7:9"}, {"expression": {"id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 157, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1526:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "id": 158, "name": "_generateRandomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 247, "src": "1537:17:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint64_$", "typeString": "function () returns (uint64)"}}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1537:19:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1526:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 161, "nodeType": "ExpressionStatement", "src": "1526:30:9"}, {"expression": {"id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 162, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1574:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1583:23:9", "subExpression": {"arguments": [{"id": 164, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1597:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 163, "name": "_isDuplicate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 279, "src": "1584:12:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$", "typeString": "function (uint64) view returns (bool)"}}, "id": 165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1584:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1574:32:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 168, "nodeType": "ExpressionStatement", "src": "1574:32:9"}]}, "condition": {"id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1629:7:9", "subExpression": {"id": 170, "name": "unique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 152, "src": "1630:6:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 172, "nodeType": "DoWhileStatement", "src": "1431:207:9"}, {"assignments": [174], "declarations": [{"constant": false, "id": 174, "mutability": "mutable", "name": "j", "nameLocation": "1723:1:9", "nodeType": "VariableDeclaration", "scope": 215, "src": "1715:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1715:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 176, "initialValue": {"id": 175, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1727:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1715:13:9"}, {"body": {"id": 207, "nodeType": "Block", "src": "1789:190:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 188, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1811:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 189, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1815:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1827:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1815:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1811:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 203, "nodeType": "IfStatement", "src": "1807:137:9", "trueBody": {"id": 202, "nodeType": "Block", "src": "1835:109:9", "statements": [{"expression": {"id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 192, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1857:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 194, "indexExpression": {"id": 193, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1869:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1857:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 195, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1874:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 199, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 196, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1886:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1890:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1886:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1874:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1857:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 201, "nodeType": "ExpressionStatement", "src": "1857:35:9"}]}}, {"expression": {"id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "1961:3:9", "subExpression": {"id": 204, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1961:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 206, "nodeType": "ExpressionStatement", "src": "1961:3:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1749:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1753:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1749:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 180, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1758:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 184, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 181, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "1770:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1774:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1770:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1758:18:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 185, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "1779:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1758:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1749:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 208, "nodeType": "WhileStatement", "src": "1742:237:9"}, {"expression": {"id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 209, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1992:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 211, "indexExpression": {"id": 210, "name": "j", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "2004:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1992:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 212, "name": "randomId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 149, "src": "2009:8:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1992:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 214, "nodeType": "ExpressionStatement", "src": "1992:25:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 142, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1346:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 143, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1350:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1346:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 216, "initializationExpression": {"assignments": [139], "declarations": [{"constant": false, "id": 139, "mutability": "mutable", "name": "i", "nameLocation": "1339:1:9", "nodeType": "VariableDeclaration", "scope": 216, "src": "1331:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1331:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 141, "initialValue": {"hexValue": "30", "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1343:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1331:13:9"}, "loopExpression": {"expression": {"id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1358:3:9", "subExpression": {"id": 145, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 139, "src": "1358:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 147, "nodeType": "ExpressionStatement", "src": "1358:3:9"}, "nodeType": "ForStatement", "src": "1326:754:9"}, {"expression": {"id": 217, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "2096:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "functionReturnParameters": 99, "id": 218, "nodeType": "Return", "src": "2089:18:9"}]}, "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateOperatorIds", "nameLocation": "954:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 95, "nodeType": "ParameterList", "parameters": [], "src": "974:2:9"}, "returnParameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1011:11:9", "nodeType": "VariableDeclaration", "scope": 220, "src": "995:27:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 96, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "995:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 97, "nodeType": "ArrayTypeName", "src": "995:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "src": "994:29:9"}, "scope": 481, "src": "945:1169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 246, "nodeType": "Block", "src": "2175:114:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"expression": {"id": 232, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2234:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2240:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2234:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 234, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2251:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2255:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2251:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 236, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2263:5:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 230, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2217:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2221:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2217:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2217:52:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 229, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2207:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2207:63:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2199:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2199:7:9", "typeDescriptions": {}}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2199:72:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 242, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2274:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2279:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "2274:7:9", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "src": "2199:82:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 226, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2192:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 225, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2192:6:9", "typeDescriptions": {}}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2192:90:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 224, "id": 245, "nodeType": "Return", "src": "2185:97:9"}]}, "id": 247, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateRandomId", "nameLocation": "2129:17:9", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "2146:2:9"}, "returnParameters": {"id": 224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 223, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 247, "src": "2167:6:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 222, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2167:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2166:8:9"}, "scope": 481, "src": "2120:169:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 278, "nodeType": "Block", "src": "2357:181:9", "statements": [{"body": {"id": 274, "nodeType": "Block", "src": "2416:94:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 265, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2434:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 267, "indexExpression": {"id": 266, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2446:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2434:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 268, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "2452:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2434:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 273, "nodeType": "IfStatement", "src": "2430:70:9", "trueBody": {"id": 272, "nodeType": "Block", "src": "2456:44:9", "statements": [{"expression": {"hexValue": "74727565", "id": 270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2481:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 253, "id": 271, "nodeType": "Return", "src": "2474:11:9"}]}}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 258, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2387:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 259, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22, "src": "2391:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2403:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "2391:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2387:22:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 275, "initializationExpression": {"assignments": [255], "declarations": [{"constant": false, "id": 255, "mutability": "mutable", "name": "i", "nameLocation": "2380:1:9", "nodeType": "VariableDeclaration", "scope": 275, "src": "2372:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2372:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 257, "initialValue": {"hexValue": "30", "id": 256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2384:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2372:13:9"}, "loopExpression": {"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2411:3:9", "subExpression": {"id": 262, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 255, "src": "2411:1:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2411:3:9"}, "nodeType": "ForStatement", "src": "2367:143:9"}, {"expression": {"hexValue": "66616c7365", "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2526:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 253, "id": 277, "nodeType": "Return", "src": "2519:12:9"}]}, "id": 279, "implemented": true, "kind": "function", "modifiers": [], "name": "_isDuplicate", "nameLocation": "2304:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 250, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 249, "mutability": "mutable", "name": "id", "nameLocation": "2324:2:9", "nodeType": "VariableDeclaration", "scope": 279, "src": "2317:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 248, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2317:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2316:11:9"}, "returnParameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 279, "src": "2351:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 251, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2351:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2350:6:9"}, "scope": 481, "src": "2295:243:9", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 405, "nodeType": "Block", "src": "2652:880:9", "statements": [{"assignments": [291], "declarations": [{"constant": false, "id": 291, "mutability": "mutable", "name": "s", "nameLocation": "2682:1:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2662:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 290, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 289, "name": "StorageData", "nameLocations": ["2662:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "2662:11:9"}, "referencedDeclaration": 2024, "src": "2662:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 295, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 292, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "2686:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2697:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "2686:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2686:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2662:41:9"}, {"assignments": [297], "declarations": [{"constant": false, "id": 297, "mutability": "mutable", "name": "_publicKey", "nameLocation": "2727:10:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2714:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 296, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2714:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 300, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 298, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, "src": "2740:18:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2714:46:9"}, {"assignments": [305], "declarations": [{"constant": false, "id": 305, "mutability": "mutable", "name": "_operatorIds", "nameLocation": "2786:12:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2770:28:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 303, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2770:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 304, "nodeType": "ArrayTypeName", "src": "2770:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "id": 308, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 306, "name": "_generateOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2801:20:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_array$_t_uint64_$dyn_memory_ptr_$", "typeString": "function () returns (uint64[] memory)"}}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2801:22:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2770:53:9"}, {"assignments": [310], "declarations": [{"constant": false, "id": 310, "mutability": "mutable", "name": "_hashedCluster", "nameLocation": "2842:14:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2834:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 309, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2834:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 319, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 314, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2886:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2890:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "2886:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 316, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2898:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 312, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2869:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2873:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2869:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 317, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2869:42:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 311, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2859:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2859:53:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2834:78:9"}, {"assignments": [321], "declarations": [{"constant": false, "id": 321, "mutability": "mutable", "name": "clusterData", "nameLocation": "2931:11:9", "nodeType": "VariableDeclaration", "scope": 405, "src": "2923:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 320, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2923:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 326, "initialValue": {"baseExpression": {"expression": {"id": 322, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2945:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2947:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "2945:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 325, "indexExpression": {"id": 324, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "2956:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2945:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "2923:48:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 327, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "2985:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3008:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 329, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3000:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 328, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3000:7:9", "typeDescriptions": {}}}, "id": 331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3000:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2985:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 374, "nodeType": "Block", "src": "3209:79:9", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 364, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "3223:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3225:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3223:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 368, "indexExpression": {"id": 366, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3234:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3223:26:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 369, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3252:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3260:15:9", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "3252:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3252:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3223:54:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3223:54:9"}]}, "id": 375, "nodeType": "IfStatement", "src": "2981:307:9", "trueBody": {"id": 363, "nodeType": "Block", "src": "3012:191:9", "statements": [{"expression": {"id": 337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 333, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3026:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3034:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "3026:22:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3051:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3026:26:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 338, "nodeType": "ExpressionStatement", "src": "3026:26:9"}, {"expression": {"id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 339, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3066:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3074:15:9", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "3066:23:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 342, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3092:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3066:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 344, "nodeType": "ExpressionStatement", "src": "3066:27:9"}, {"expression": {"id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 345, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3107:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 347, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3115:5:9", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "3107:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3123:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3107:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 350, "nodeType": "ExpressionStatement", "src": "3107:17:9"}, {"expression": {"id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 351, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3138:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 353, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3146:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "3138:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3156:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3138:19:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 356, "nodeType": "ExpressionStatement", "src": "3138:19:9"}, {"expression": {"id": 361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 357, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3171:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3179:6:9", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "3171:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3188:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3171:21:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 362, "nodeType": "ExpressionStatement", "src": "3171:21:9"}]}}, {"clauses": [{"block": {"id": 396, "nodeType": "Block", "src": "3380:101:9", "statements": [{"expression": {"arguments": [{"id": 387, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3410:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 384, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3394:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3405:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3394:15:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_bytes_storage_$returns$__$attached_to$_t_array$_t_bytes_storage_$dyn_storage_ptr_$", "typeString": "function (bytes storage ref[] storage pointer,bytes storage ref)"}}, "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3394:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 389, "nodeType": "ExpressionStatement", "src": "3394:27:9"}, {"expression": {"arguments": [{"id": 393, "name": "_hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 310, "src": "3455:14:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 390, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3435:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3450:4:9", "memberName": "push", "nodeType": "MemberAccess", "src": "3435:19:9", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", "typeString": "function (bytes32[] storage pointer,bytes32)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3435:35:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3435:35:9"}]}, "errorName": "", "id": 397, "nodeType": "TryCatchClause", "src": "3380:101:9"}, {"block": {"id": 402, "nodeType": "Block", "src": "3488:38:9", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3509:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 398, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3502:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3502:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3502:13:9"}]}, "errorName": "", "id": 403, "nodeType": "TryCatchClause", "src": "3482:44:9"}], "externalCall": {"arguments": [{"id": 378, "name": "_publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3325:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 379, "name": "_operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "3337:12:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 380, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 281, "src": "3351:10:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 381, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 283, "src": "3363:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 382, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 286, "src": "3371:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 376, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3302:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3307:17:9", "memberName": "registerValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1161, "src": "3302:22:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,bytes memory,uint256,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3302:77:9", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 404, "nodeType": "TryStatement", "src": "3298:228:9"}]}, "functionSelector": "d86eda8c", "id": 406, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_registerValidator", "nameLocation": "2553:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 281, "mutability": "mutable", "name": "sharesData", "nameLocation": "2593:10:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2578:25:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 280, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2578:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 283, "mutability": "mutable", "name": "amount", "nameLocation": "2613:6:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2605:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2605:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 286, "mutability": "mutable", "name": "cluster", "nameLocation": "2636:7:9", "nodeType": "VariableDeclaration", "scope": 406, "src": "2621:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 285, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 284, "name": "Cluster", "nameLocations": ["2621:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "2621:7:9"}, "referencedDeclaration": 1906, "src": "2621:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "2577:67:9"}, "returnParameters": {"id": 288, "nodeType": "ParameterList", "parameters": [], "src": "2652:0:9"}, "scope": 481, "src": "2544:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 437, "nodeType": "Block", "src": "3651:148:9", "statements": [{"expression": {"id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 417, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3661:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 418, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3675:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 421, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3696:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3707:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3696:17:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 420, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3689:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 419, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3689:6:9", "typeDescriptions": {}}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3689:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3675:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3661:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 426, "nodeType": "ExpressionStatement", "src": "3661:53:9"}, {"expression": {"arguments": [{"baseExpression": {"id": 430, "name": "publicKeys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "3746:10:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage", "typeString": "bytes storage ref[] storage ref"}}, "id": 432, "indexExpression": {"id": 431, "name": "publicKeyId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 408, "src": "3757:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3746:23:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}}, {"id": 433, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "3771:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 434, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "3784:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_storage", "typeString": "bytes storage ref"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "expression": {"id": 427, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3725:4:9", "typeDescriptions": {"typeIdentifier": "t_contract$_Clusters_$481", "typeString": "contract Clusters"}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3730:15:9", "memberName": "removeValidator", "nodeType": "MemberAccess", "referencedDeclaration": 1319, "src": "3725:20:9", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (bytes memory,uint64[] memory,struct ISSVNetworkCore.Cluster memory) external"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3725:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 436, "nodeType": "ExpressionStatement", "src": "3725:67:9"}]}, "functionSelector": "d7b8edbd", "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removeValidator", "nameLocation": "3547:21:9", "nodeType": "FunctionDefinition", "parameters": {"id": 415, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 408, "mutability": "mutable", "name": "publicKeyId", "nameLocation": "3576:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3569:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 407, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3569:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "operatorIds", "nameLocation": "3607:11:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3589:29:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 409, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3589:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 410, "nodeType": "ArrayTypeName", "src": "3589:8:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 414, "mutability": "mutable", "name": "cluster", "nameLocation": "3635:7:9", "nodeType": "VariableDeclaration", "scope": 438, "src": "3620:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 413, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 412, "name": "Cluster", "nameLocations": ["3620:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "3620:7:9"}, "referencedDeclaration": 1906, "src": "3620:7:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "3568:75:9"}, "returnParameters": {"id": 416, "nodeType": "ParameterList", "parameters": [], "src": "3651:0:9"}, "scope": 481, "src": "3538:261:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 475, "nodeType": "Block", "src": "3852:195:9", "statements": [{"assignments": [443], "declarations": [{"constant": false, "id": 443, "mutability": "mutable", "name": "s", "nameLocation": "3882:1:9", "nodeType": "VariableDeclaration", "scope": 475, "src": "3862:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 442, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 441, "name": "StorageData", "nameLocations": ["3862:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "3862:11:9"}, "referencedDeclaration": 2024, "src": "3862:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 447, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 444, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "3886:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3897:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "3886:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3886:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3862:41:9"}, {"body": {"id": 473, "nodeType": "Block", "src": "3965:76:9", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 460, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 443, "src": "3986:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3988:8:9", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "3986:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 465, "indexExpression": {"baseExpression": {"id": 462, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3997:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 464, "indexExpression": {"id": 463, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "4012:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3997:17:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3986:29:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4027:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4019:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 466, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4019:7:9", "typeDescriptions": {}}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4019:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3986:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 459, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3979:6:9", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3979:51:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "3979:51:9"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3933:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 453, "name": "hashedClusters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 19, "src": "3937:14:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes32_$dyn_storage", "typeString": "bytes32[] storage ref"}}, "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3952:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:21:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3933:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 474, "initializationExpression": {"assignments": [449], "declarations": [{"constant": false, "id": 449, "mutability": "mutable", "name": "i", "nameLocation": "3926:1:9", "nodeType": "VariableDeclaration", "scope": 474, "src": "3919:8:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 448, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3919:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 451, "initialValue": {"hexValue": "30", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3930:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3919:12:9"}, "loopExpression": {"expression": {"id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3960:3:9", "subExpression": {"id": 456, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 449, "src": "3960:1:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 458, "nodeType": "ExpressionStatement", "src": "3960:3:9"}, "nodeType": "ForStatement", "src": "3914:127:9"}]}, "functionSelector": "01ddff09", "id": 476, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_validatorPKs", "nameLocation": "3814:28:9", "nodeType": "FunctionDefinition", "parameters": {"id": 439, "nodeType": "ParameterList", "parameters": [], "src": "3842:2:9"}, "returnParameters": {"id": 440, "nodeType": "ParameterList", "parameters": [], "src": "3852:0:9"}, "scope": 481, "src": "3805:242:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 479, "nodeType": "Block", "src": "4096:2:9", "statements": []}, "functionSelector": "626b6b8d", "id": 480, "implemented": true, "kind": "function", "modifiers": [], "name": "check_numberOfValidators", "nameLocation": "4062:24:9", "nodeType": "FunctionDefinition", "parameters": {"id": 477, "nodeType": "ParameterList", "parameters": [], "src": "4086:2:9"}, "returnParameters": {"id": 478, "nodeType": "ParameterList", "parameters": [], "src": "4096:0:9"}, "scope": 481, "src": "4053:45:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 482, "src": "137:3963:9", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:4056:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol": {"AST": {"absolutePath": "contracts/modules/SSVClusters.sol", "exportedSymbols": {"ClusterLib": [732], "CoreLib": [2401], "Counters": [3029], "DEDUCTED_DIGITS": [2052], "IERC20": [2955], "ISSVClusters": [2270], "ISSVNetworkCore": [1967], "OperatorLib": [2644], "ProtocolLib": [2812], "SSVClusters": [1851], "SSVModules": [1977], "SSVStorage": [2047], "SSVStorageProtocol": [2877], "StorageData": [2024], "StorageProtocol": [2854], "Types256": [2114], "Types64": [2065]}, "id": 1852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 734, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:10"}, {"absolutePath": "contracts/interfaces/ISSVClusters.sol", "file": "../interfaces/ISSVClusters.sol", "id": 735, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2271, "src": "70:40:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ClusterLib.sol", "file": "../libraries/ClusterLib.sol", "id": 736, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 733, "src": "111:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 737, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2645, "src": "149:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 738, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2813, "src": "188:38:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 739, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2402, "src": "227:34:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 740, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2048, "src": "262:37:10", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 741, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1852, "sourceUnit": 2878, "src": "300:45:10", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 742, "name": "ISSVClusters", "nameLocations": ["371:12:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2270, "src": "371:12:10"}, "id": 743, "nodeType": "InheritanceSpecifier", "src": "371:12:10"}], "canonicalName": "SSVClusters", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1851, "linearizedBaseContracts": [1851, 2270, 1967], "name": "SSVClusters", "nameLocation": "356:11:10", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 747, "libraryName": {"id": 744, "name": "ClusterLib", "nameLocations": ["396:10:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 732, "src": "396:10:10"}, "nodeType": "UsingForDirective", "src": "390:29:10", "typeName": {"id": 746, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 745, "name": "Cluster", "nameLocations": ["411:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "411:7:10"}, "referencedDeclaration": 1906, "src": "411:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}}, {"global": false, "id": 751, "libraryName": {"id": 748, "name": "OperatorLib", "nameLocations": ["430:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2644, "src": "430:11:10"}, "nodeType": "UsingForDirective", "src": "424:31:10", "typeName": {"id": 750, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 749, "name": "Operator", "nameLocations": ["446:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "446:8:10"}, "referencedDeclaration": 1880, "src": "446:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"global": false, "id": 755, "libraryName": {"id": 752, "name": "ProtocolLib", "nameLocations": ["466:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2812, "src": "466:11:10"}, "nodeType": "UsingForDirective", "src": "460:38:10", "typeName": {"id": 754, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 753, "name": "StorageProtocol", "nameLocations": ["482:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "482:15:10"}, "referencedDeclaration": 2854, "src": "482:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 758, "mutability": "constant", "name": "MIN_OPERATORS_LENGTH", "nameLocation": "527:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "503:48:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "503:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "34", "id": 757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "550:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "visibility": "private"}, {"constant": true, "id": 761, "mutability": "constant", "name": "MAX_OPERATORS_LENGTH", "nameLocation": "581:20:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "557:49:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "557:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3133", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "604:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_13_by_1", "typeString": "int_const 13"}, "value": "13"}, "visibility": "private"}, {"constant": true, "id": 764, "mutability": "constant", "name": "MODULO_OPERATORS_LENGTH", "nameLocation": "636:23:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "612:51:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "612:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "33", "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "visibility": "private"}, {"constant": true, "id": 767, "mutability": "constant", "name": "PUBLIC_KEY_LENGTH", "nameLocation": "693:17:10", "nodeType": "VariableDeclaration", "scope": 1851, "src": "669:46:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "669:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3438", "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "713:2:10", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "visibility": "private"}, {"baseFunctions": [2135], "body": {"id": 1160, "nodeType": "Block", "src": "935:3871:10", "statements": [{"assignments": [785], "declarations": [{"constant": false, "id": 785, "mutability": "mutable", "name": "s", "nameLocation": "965:1:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "945:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 784, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 783, "name": "StorageData", "nameLocations": ["945:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "945:11:10"}, "referencedDeclaration": 2024, "src": "945:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 789, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 786, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "969:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "980:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "969:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "969:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "945:41:10"}, {"assignments": [792], "declarations": [{"constant": false, "id": 792, "mutability": "mutable", "name": "sp", "nameLocation": "1020:2:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "996:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 790, "name": "StorageProtocol", "nameLocations": ["996:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "996:15:10"}, "referencedDeclaration": 2854, "src": "996:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 796, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 793, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "1025:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1044:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "1025:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1025:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "996:54:10"}, {"assignments": [798], "declarations": [{"constant": false, "id": 798, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "1069:15:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1061:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 797, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1061:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 801, "initialValue": {"expression": {"id": 799, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1087:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1099:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1087:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1061:44:10"}, {"id": 877, "nodeType": "Block", "src": "1115:715:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 808, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 802, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1150:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 803, "name": "MIN_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 758, "src": "1168:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1150:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 805, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1208:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 806, "name": "MAX_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "1226:20:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1208:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:96:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "1266:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 810, "name": "MODULO_OPERATORS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1284:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1266:41:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "31", "id": 812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1311:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1266:46:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1150:162:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 819, "nodeType": "IfStatement", "src": "1129:264:10", "trueBody": {"id": 818, "nodeType": "Block", "src": "1327:66:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 815, "name": "InvalidOperatorIdsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1934, "src": "1352:24:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1352:26:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 817, "nodeType": "RevertStatement", "src": "1345:33:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 820, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1411:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1421:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "1411:16:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 822, "name": "PUBLIC_KEY_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "1431:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1411:37:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 827, "nodeType": "IfStatement", "src": "1407:74:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 824, "name": "InvalidPublicKeyLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1932, "src": "1457:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1457:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 826, "nodeType": "RevertStatement", "src": "1450:31:10"}}, {"assignments": [829], "declarations": [{"constant": false, "id": 829, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1504:8:10", "nodeType": "VariableDeclaration", "scope": 877, "src": "1496:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 828, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1496:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 838, "initialValue": {"arguments": [{"arguments": [{"id": 833, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "1542:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 834, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1553:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1557:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1553:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 831, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1525:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1529:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1525:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 830, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1515:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1515:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1496:69:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 839, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 840, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1586:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1584:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 842, "indexExpression": {"id": 841, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1599:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1584:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1620:1:10", "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": 844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {}}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1612:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1584:38:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 852, "nodeType": "IfStatement", "src": "1580:108:10", "trueBody": {"id": 851, "nodeType": "Block", "src": "1624:64:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 848, "name": "ValidatorAlreadyExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1924, "src": "1649:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1649:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 850, "nodeType": "RevertStatement", "src": "1642:31:10"}]}}, {"expression": {"id": 875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 853, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1702:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1704:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "1702:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 857, "indexExpression": {"id": 855, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "1717:8:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1702:24:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 865, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1772:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 863, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1755:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1759:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1755:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 862, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1745:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1745:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1737:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1737:7:10", "typeDescriptions": {}}}, "id": 868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1737:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "|", "rightExpression": {"arguments": [{"hexValue": "30783031", "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1797:4:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "0x01"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1789:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 869, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1789:7:10", "typeDescriptions": {}}}, "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1789:13:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1737:65:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 859, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1729:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 858, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1729:7:10", "typeDescriptions": {}}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1729:74:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "1702:101:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 876, "nodeType": "ExpressionStatement", "src": "1702:101:10"}]}, {"assignments": [879], "declarations": [{"constant": false, "id": 879, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "1847:13:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1839:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 878, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1839:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 888, "initialValue": {"arguments": [{"arguments": [{"expression": {"id": 883, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1890:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1894:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "1890:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 885, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "1902:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}], "expression": {"id": 881, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1873:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1877:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1873:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1873:41:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 880, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1863:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1863:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1839:76:10"}, {"id": 948, "nodeType": "Block", "src": "1926:661:10", "statements": [{"assignments": [890], "declarations": [{"constant": false, "id": 890, "mutability": "mutable", "name": "clusterData", "nameLocation": "1948:11:10", "nodeType": "VariableDeclaration", "scope": 948, "src": "1940:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 889, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1940:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 895, "initialValue": {"baseExpression": {"expression": {"id": 891, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "1962:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1964:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "1962:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 894, "indexExpression": {"id": 893, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "1973:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1962:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1940:47:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 896, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2005:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2028:1:10", "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": 898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2020:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 897, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2020:7:10", "typeDescriptions": {}}}, "id": 900, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2020:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2005:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 931, "name": "clusterData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 890, "src": "2393:11:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 932, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2408:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 933, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2416:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "2408:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2408:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "2393:40:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 945, "nodeType": "Block", "src": "2504:73:10", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2522:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2530:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "2522:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2522:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "2522:40:10"}]}, "id": 946, "nodeType": "IfStatement", "src": "2389:188:10", "trueBody": {"id": 939, "nodeType": "Block", "src": "2435:63:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 936, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2460:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 937, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2460:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 938, "nodeType": "RevertStatement", "src": "2453:30:10"}]}}, "id": 947, "nodeType": "IfStatement", "src": "2001:576:10", "trueBody": {"id": 930, "nodeType": "Block", "src": "2032:351:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 902, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2075:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2083:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "2075:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2101:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2075:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 906, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2126:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 907, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2134:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "2126:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2153:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2126:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:79:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 911, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2178:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 912, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2186:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "2178:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2195:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2178:18:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:121:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 916, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2220:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 917, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2228:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2220:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2239:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2220:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:165:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"id": 923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2264:15:10", "subExpression": {"expression": {"id": 921, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2265:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2273:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2265:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2075:204:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 929, "nodeType": "IfStatement", "src": "2050:319:10", "trueBody": {"id": 928, "nodeType": "Block", "src": "2298:71:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 925, "name": "IncorrectClusterState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1942, "src": "2327:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2327:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 927, "nodeType": "RevertStatement", "src": "2320:30:10"}]}}]}}]}, {"expression": {"id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 949, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2597:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 951, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2605:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "2597:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 952, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "2616:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2597:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 954, "nodeType": "ExpressionStatement", "src": "2597:25:10"}, {"assignments": [956], "declarations": [{"constant": false, "id": 956, "mutability": "mutable", "name": "burnRate", "nameLocation": "2640:8:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "2633:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 955, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2633:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 957, "nodeType": "VariableDeclarationStatement", "src": "2633:15:10"}, {"condition": {"expression": {"id": 958, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "2663:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2671:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "2663:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1110, "nodeType": "IfStatement", "src": "2659:1596:10", "trueBody": {"id": 1109, "nodeType": "Block", "src": "2679:1576:10", "statements": [{"assignments": [961], "declarations": [{"constant": false, "id": 961, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "2700:12:10", "nodeType": "VariableDeclaration", "scope": 1109, "src": "2693:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2693:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 962, "nodeType": "VariableDeclarationStatement", "src": "2693:19:10"}, {"body": {"id": 1091, "nodeType": "Block", "src": "2766:1361:10", "statements": [{"assignments": [970], "declarations": [{"constant": false, "id": 970, "mutability": "mutable", "name": "operatorId", "nameLocation": "2791:10:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "2784:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2784:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 974, "initialValue": {"baseExpression": {"id": 971, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2804:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 973, "indexExpression": {"id": 972, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2816:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2804:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2784:34:10"}, {"id": 1006, "nodeType": "Block", "src": "2836:373:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 975, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2862:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2866:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2862:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 978, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2870:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2862:23:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1005, "nodeType": "IfStatement", "src": "2858:333:10", "trueBody": {"id": 1004, "nodeType": "Block", "src": "2887:304:10", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 980, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "2917:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"baseExpression": {"id": 981, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "2930:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 985, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2942:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2946:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2942:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2930:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2917:31:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 991, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3047:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"baseExpression": {"id": 992, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "3061:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 996, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 993, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "3073:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3077:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3073:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3061:18:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3047:32:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1002, "nodeType": "IfStatement", "src": "3043:126:10", "trueBody": {"id": 1001, "nodeType": "Block", "src": "3081:88:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 998, "name": "OperatorsListNotUnique", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1958, "src": "3118:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3118:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1000, "nodeType": "RevertStatement", "src": "3111:31:10"}]}}, "id": 1003, "nodeType": "IfStatement", "src": "2913:256:10", "trueBody": {"id": 990, "nodeType": "Block", "src": "2950:87:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 987, "name": "UnsortedOperatorsList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1944, "src": "2987:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2987:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 989, "nodeType": "RevertStatement", "src": "2980:30:10"}]}}]}}]}, {"assignments": [1009], "declarations": [{"constant": false, "id": 1009, "mutability": "mutable", "name": "operator", "nameLocation": "3243:8:10", "nodeType": "VariableDeclaration", "scope": 1091, "src": "3227:24:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1008, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1007, "name": "Operator", "nameLocations": ["3227:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "3227:8:10"}, "referencedDeclaration": 1880, "src": "3227:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1014, "initialValue": {"baseExpression": {"expression": {"id": 1010, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3254:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1011, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3256:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "3254:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1013, "indexExpression": {"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3266:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3254:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3227:50:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1015, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3299:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1016, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3308:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3299:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3317:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "3299:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3326:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3299:28:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1024, "nodeType": "IfStatement", "src": "3295:104:10", "trueBody": {"id": 1023, "nodeType": "Block", "src": "3329:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1020, "name": "OperatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1920, "src": "3358:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3358:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1022, "nodeType": "RevertStatement", "src": "3351:29:10"}]}}, {"condition": {"expression": {"id": 1025, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3420:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3429:11:10", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1875, "src": "3420:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1051, "nodeType": "IfStatement", "src": "3416:280:10", "trueBody": {"id": 1050, "nodeType": "Block", "src": "3442:254:10", "statements": [{"assignments": [1028], "declarations": [{"constant": false, "id": 1028, "mutability": "mutable", "name": "whitelisted", "nameLocation": "3472:11:10", "nodeType": "VariableDeclaration", "scope": 1050, "src": "3464:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1027, "name": "address", "nodeType": "ElementaryTypeName", "src": "3464:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1033, "initialValue": {"baseExpression": {"expression": {"id": 1029, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3486:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1030, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3488:18:10", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2003, "src": "3486:20:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1032, "indexExpression": {"id": 1031, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3507:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3486:32:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3464:54:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1034, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3544:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3567:1:10", "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": 1036, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3559:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1035, "name": "address", "nodeType": "ElementaryTypeName", "src": "3559:7:10", "typeDescriptions": {}}}, "id": 1038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3559:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3544:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1040, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1028, "src": "3573:11:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1041, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3588:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3592:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "3588:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3573:25:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3544:54:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1049, "nodeType": "IfStatement", "src": "3540:138:10", "trueBody": {"id": 1048, "nodeType": "Block", "src": "3600:78:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1045, "name": "CallerNotWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1910, "src": "3633:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3633:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1047, "nodeType": "RevertStatement", "src": "3626:29:10"}]}}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1052, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3713:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3722:14:10", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "3713:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1880_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1880_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3713:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1056, "nodeType": "ExpressionStatement", "src": "3713:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "3760:25:10", "subExpression": {"expression": {"id": 1057, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3762:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3771:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1866, "src": "3762:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1060, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "3788:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1061, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3791:26:10", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 2826, "src": "3788:29:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "3760:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1067, "nodeType": "IfStatement", "src": "3756:133:10", "trueBody": {"id": 1066, "nodeType": "Block", "src": "3819:70:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1063, "name": "ExceedValidatorLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1948, "src": "3848:20:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3848:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1065, "nodeType": "RevertStatement", "src": "3841:29:10"}]}}, {"expression": {"id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1068, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "3906:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 1069, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3922:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1070, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3931:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "3922:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1071, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3940:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "3922:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3906:39:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1073, "nodeType": "ExpressionStatement", "src": "3906:39:10"}, {"expression": {"id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1074, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "3963:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1075, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "3975:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1076, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3984:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "3975:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3963:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1078, "nodeType": "ExpressionStatement", "src": "3963:24:10"}, {"expression": {"id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1079, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4006:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4008:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "4006:11:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1083, "indexExpression": {"id": 1081, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "4018:10:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4006:23:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1084, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "4032:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "4006:34:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1086, "nodeType": "ExpressionStatement", "src": "4006:34:10"}, {"id": 1090, "nodeType": "UncheckedBlock", "src": "4059:54:10", "statements": [{"expression": {"id": 1088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4091:3:10", "subExpression": {"id": 1087, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "4093:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1089, "nodeType": "ExpressionStatement", "src": "4091:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 966, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 964, "src": "2743:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 967, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "2747:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2743:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1092, "initializationExpression": {"assignments": [964], "declarations": [{"constant": false, "id": 964, "mutability": "mutable", "name": "i", "nameLocation": "2740:1:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "2732:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 963, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2732:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 965, "nodeType": "VariableDeclarationStatement", "src": "2732:9:10"}, "nodeType": "ForStatement", "src": "2727:1400:10"}, {"expression": {"arguments": [{"id": 1096, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 961, "src": "4166:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1097, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4180:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1098, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4183:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "4180:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4180:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1093, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4140:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1095, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4148:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "4140:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4140:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1101, "nodeType": "ExpressionStatement", "src": "4140:68:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4236:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"hexValue": "31", "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4242:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1102, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4223:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4226:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "4223:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4223:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1108, "nodeType": "ExpressionStatement", "src": "4223:21:10"}]}}, {"expression": {"id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "4265:24:10", "subExpression": {"expression": {"id": 1111, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4267:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1112, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4275:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "4267:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1114, "nodeType": "ExpressionStatement", "src": "4265:24:10"}, {"condition": {"arguments": [{"id": 1117, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 956, "src": "4357:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1118, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4383:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4386:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "4383:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1120, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4414:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1121, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4417:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "4414:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1122, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4465:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4468:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "4465:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1115, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4317:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1116, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4325:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "4317:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4317:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1129, "nodeType": "IfStatement", "src": "4300:274:10", "trueBody": {"id": 1128, "nodeType": "Block", "src": "4521:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "4542:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4542:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "4535:28:10"}]}}, {"expression": {"id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1130, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4584:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4586:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "4584:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1134, "indexExpression": {"id": 1132, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "4595:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4584:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1135, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4612:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1136, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4620:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "4612:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4612:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "4584:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1139, "nodeType": "ExpressionStatement", "src": "4584:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4652:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4662:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4652:11:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1150, "nodeType": "IfStatement", "src": "4648:65:10", "trueBody": {"id": 1149, "nodeType": "Block", "src": "4665:48:10", "statements": [{"expression": {"arguments": [{"id": 1146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 776, "src": "4695:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1143, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "4679:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4687:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "4679:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4679:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1148, "nodeType": "ExpressionStatement", "src": "4679:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1152, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4743:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4747:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "4743:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1154, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 772, "src": "4755:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1155, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 769, "src": "4768:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1156, "name": "sharesData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 774, "src": "4779:10:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1157, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4791:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1151, "name": "ValidatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2212, "src": "4728:14:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4728:71:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "EmitStatement", "src": "4723:76:10"}]}, "functionSelector": "06e8fb9c", "id": 1161, "implemented": true, "kind": "function", "modifiers": [], "name": "registerValidator", "nameLocation": "731:17:10", "nodeType": "FunctionDefinition", "overrides": {"id": 781, "nodeType": "OverrideSpecifier", "overrides": [], "src": "926:8:10"}, "parameters": {"id": 780, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 769, "mutability": "mutable", "name": "publicKey", "nameLocation": "773:9:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "758:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "758:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "operatorIds", "nameLocation": "808:11:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "792:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 770, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "792:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 771, "nodeType": "ArrayTypeName", "src": "792:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 774, "mutability": "mutable", "name": "sharesData", "nameLocation": "844:10:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "829:25:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 773, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "829:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "amount", "nameLocation": "872:6:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "864:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "864:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "cluster", "nameLocation": "903:7:10", "nodeType": "VariableDeclaration", "scope": 1161, "src": "888:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 778, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 777, "name": "Cluster", "nameLocations": ["888:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "888:7:10"}, "referencedDeclaration": 1906, "src": "888:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "748:168:10"}, "returnParameters": {"id": 782, "nodeType": "ParameterList", "parameters": [], "src": "935:0:10"}, "scope": 1851, "src": "722:4084:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2147], "body": {"id": 1318, "nodeType": "Block", "src": "4966:1370:10", "statements": [{"assignments": [1175], "declarations": [{"constant": false, "id": 1175, "mutability": "mutable", "name": "s", "nameLocation": "4996:1:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "4976:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1174, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1173, "name": "StorageData", "nameLocations": ["4976:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "4976:11:10"}, "referencedDeclaration": 2024, "src": "4976:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1179, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1176, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "5000:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5011:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "5000:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5000:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4976:41:10"}, {"assignments": [1181], "declarations": [{"constant": false, "id": 1181, "mutability": "mutable", "name": "hashedValidator", "nameLocation": "5036:15:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5028:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1180, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5028:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1190, "initialValue": {"arguments": [{"arguments": [{"id": 1185, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "5081:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"expression": {"id": 1186, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5092:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5096:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5092:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 1183, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5064:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5068:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5064:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5064:39:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1182, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5054:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5054:50:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5028:76:10"}, {"assignments": [1192], "declarations": [{"constant": false, "id": 1192, "mutability": "mutable", "name": "mask", "nameLocation": "5123:4:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5115:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1191, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5115:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1201, "initialValue": {"id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "~", "prefix": true, "src": "5130:20:10", "subExpression": {"arguments": [{"arguments": [{"hexValue": "31", "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5147:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 1196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5139:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1195, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5139:7:10", "typeDescriptions": {}}}, "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5139:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5131:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1193, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5131:7:10", "typeDescriptions": {}}}, "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5131:19:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5115:35:10"}, {"assignments": [1203], "declarations": [{"constant": false, "id": 1203, "mutability": "mutable", "name": "validatorData", "nameLocation": "5200:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5192:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1202, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5192:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1208, "initialValue": {"baseExpression": {"expression": {"id": 1204, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5216:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1205, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5218:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "5216:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1207, "indexExpression": {"id": 1206, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "5231:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5216:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5192:55:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1209, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5262:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5287:1:10", "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": 1211, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5279:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)"}, "typeName": {"id": 1210, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5279:7:10", "typeDescriptions": {}}}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5279:10:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5262:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1219, "nodeType": "IfStatement", "src": "5258:88:10", "trueBody": {"id": 1218, "nodeType": "Block", "src": "5291:55:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1215, "name": "ValidatorDoesNotExist", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1926, "src": "5312:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5312:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1217, "nodeType": "RevertStatement", "src": "5305:30:10"}]}}, {"assignments": [1221], "declarations": [{"constant": false, "id": 1221, "mutability": "mutable", "name": "hashedOperatorIds", "nameLocation": "5364:17:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5356:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1220, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5356:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1230, "initialValue": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 1225, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5411:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}], "expression": {"id": 1223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5394:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1224, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5398:12:10", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5394:16:10", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5394:29:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1222, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5384:9:10", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5384:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1228, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5427:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5384:47:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5356:75:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1231, "name": "validatorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "5484:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 1232, "name": "mask", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "5500:4:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5484:20:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 1234, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5483:22:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1235, "name": "hashedOperatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1221, "src": "5509:17:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "5483:43:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1241, "nodeType": "IfStatement", "src": "5479:168:10", "trueBody": {"id": 1240, "nodeType": "Block", "src": "5528:119:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1237, "name": "IncorrectValidatorState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1928, "src": "5611:23:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5611:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1239, "nodeType": "RevertStatement", "src": "5604:32:10"}]}}, {"assignments": [1243], "declarations": [{"constant": false, "id": 1243, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "5665:13:10", "nodeType": "VariableDeclaration", "scope": 1318, "src": "5657:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1242, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5657:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1251, "initialValue": {"arguments": [{"expression": {"id": 1246, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5711:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5715:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "5711:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1248, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5723:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1249, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5736:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1244, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5681:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1245, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5689:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "5681:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5681:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "5657:81:10"}, {"id": 1289, "nodeType": "Block", "src": "5749:356:10", "statements": [{"condition": {"expression": {"id": 1252, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5767:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5775:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "5767:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1288, "nodeType": "IfStatement", "src": "5763:332:10", "trueBody": {"id": 1287, "nodeType": "Block", "src": "5783:312:10", "statements": [{"assignments": [1255, null], "declarations": [{"constant": false, "id": 1255, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "5809:12:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5802:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5802:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, null], "id": 1263, "initialValue": {"arguments": [{"id": 1258, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "5855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "66616c7365", "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5868:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1260, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5875:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, {"id": 1261, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "5878:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1256, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "5827:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5839:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "5827:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5827:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "5801:79:10"}, {"assignments": [1266], "declarations": [{"constant": false, "id": 1266, "mutability": "mutable", "name": "sp", "nameLocation": "5922:2:10", "nodeType": "VariableDeclaration", "scope": 1287, "src": "5898:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1265, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1264, "name": "StorageProtocol", "nameLocations": ["5898:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "5898:15:10"}, "referencedDeclaration": 2854, "src": "5898:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1270, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1267, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "5927:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5946:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "5927:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5927:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5898:54:10"}, {"expression": {"arguments": [{"id": 1274, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1255, "src": "5997:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1275, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6011:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1276, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6014:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6011:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6011:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1271, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "5971:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5979:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "5971:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5971:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1279, "nodeType": "ExpressionStatement", "src": "5971:68:10"}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6071:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "31", "id": 1284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6078:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "expression": {"id": 1280, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "6058:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6061:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "6058:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6058:22:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1286, "nodeType": "ExpressionStatement", "src": "6058:22:10"}]}}]}, {"expression": {"id": 1292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "6115:24:10", "subExpression": {"expression": {"id": 1290, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6117:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1291, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6125:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6117:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1293, "nodeType": "ExpressionStatement", "src": "6115:24:10"}, {"expression": {"id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6150:38:10", "subExpression": {"baseExpression": {"expression": {"id": 1294, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6157:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6159:12:10", "memberName": "validatorPKs", "nodeType": "MemberAccess", "referencedDeclaration": 1982, "src": "6157:14:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1297, "indexExpression": {"id": 1296, "name": "hashedValidator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "6172:15:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6157:31:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "ExpressionStatement", "src": "6150:38:10"}, {"expression": {"id": 1308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1175, "src": "6199:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6201:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "6199:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1304, "indexExpression": {"id": 1302, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "6210:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6199:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1305, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6227:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1306, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6235:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "6227:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6227:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "6199:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1309, "nodeType": "ExpressionStatement", "src": "6199:53:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1311, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6285:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6289:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "6285:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1313, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1166, "src": "6297:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1314, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1163, "src": "6310:9:10", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 1315, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1169, "src": "6321:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1310, "name": "ValidatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2225, "src": "6268:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,bytes memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6268:61:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1317, "nodeType": "EmitStatement", "src": "6263:66:10"}]}, "functionSelector": "12b3fc19", "id": 1319, "implemented": true, "kind": "function", "modifiers": [], "name": "removeValidator", "nameLocation": "4821:15:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1171, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4957:8:10"}, "parameters": {"id": 1170, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1163, "mutability": "mutable", "name": "publicKey", "nameLocation": "4861:9:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4846:24:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1162, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4846:5:10", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1166, "mutability": "mutable", "name": "operatorIds", "nameLocation": "4898:11:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4880:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1164, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4880:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1165, "nodeType": "ArrayTypeName", "src": "4880:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1169, "mutability": "mutable", "name": "cluster", "nameLocation": "4934:7:10", "nodeType": "VariableDeclaration", "scope": 1319, "src": "4919:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1168, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1167, "name": "Cluster", "nameLocations": ["4919:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "4919:7:10"}, "referencedDeclaration": 1906, "src": "4919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "4836:111:10"}, "returnParameters": {"id": 1172, "nodeType": "ParameterList", "parameters": [], "src": "4966:0:10"}, "scope": 1851, "src": "4812:1524:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2159], "body": {"id": 1477, "nodeType": "Block", "src": "6454:1429:10", "statements": [{"assignments": [1333], "declarations": [{"constant": false, "id": 1333, "mutability": "mutable", "name": "s", "nameLocation": "6484:1:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6464:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1332, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1331, "name": "StorageData", "nameLocations": ["6464:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "6464:11:10"}, "referencedDeclaration": 2024, "src": "6464:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1337, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1334, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "6488:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6499:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "6488:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6488:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6464:41:10"}, {"assignments": [1339], "declarations": [{"constant": false, "id": 1339, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "6524:13:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6516:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1338, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6516:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1346, "initialValue": {"arguments": [{"id": 1342, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "6570:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1343, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6584:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1344, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6597:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1340, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6540:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6548:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "6540:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6540:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "6516:83:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1347, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6609:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1349, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6617:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "6609:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6609:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1351, "nodeType": "ExpressionStatement", "src": "6609:40:10"}, {"assignments": [1354], "declarations": [{"constant": false, "id": 1354, "mutability": "mutable", "name": "sp", "nameLocation": "6684:2:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6660:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1353, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1352, "name": "StorageProtocol", "nameLocations": ["6660:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "6660:15:10"}, "referencedDeclaration": 2854, "src": "6660:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1358, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1355, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "6689:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6708:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "6689:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6689:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6660:54:10"}, {"assignments": [1360, 1362], "declarations": [{"constant": false, "id": 1360, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "6733:12:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6726:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1359, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6726:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1362, "mutability": "mutable", "name": "burnRate", "nameLocation": "6754:8:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6747:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1361, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6747:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1371, "initialValue": {"arguments": [{"id": 1365, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "6807:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"hexValue": "66616c7365", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6832:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1367, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6851:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6859:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "6851:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1369, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "6887:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1363, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "6766:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6778:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "6766:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6766:132:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "6725:173:10"}, {"expression": {"arguments": [{"id": 1375, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1360, "src": "6931:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1376, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "6945:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1377, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6948:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "6945:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6945:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1372, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "6909:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6917:13:10", "memberName": "updateBalance", "nodeType": "MemberAccess", "referencedDeclaration": 545, "src": "6909:21:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6909:64:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1380, "nodeType": "ExpressionStatement", "src": "6909:64:10"}, {"assignments": [1382], "declarations": [{"constant": false, "id": 1382, "mutability": "mutable", "name": "balanceLiquidatable", "nameLocation": "6992:19:10", "nodeType": "VariableDeclaration", "scope": 1477, "src": "6984:27:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6984:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1383, "nodeType": "VariableDeclarationStatement", "src": "6984:27:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1384, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7039:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 1385, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7055:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7059:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7055:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7039:26:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "7081:194:10", "subExpression": {"arguments": [{"id": 1390, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1362, "src": "7122:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1391, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7148:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7151:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "7148:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1393, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7179:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7182:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "7179:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1395, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7230:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1396, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "7230:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1388, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7082:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1389, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7090:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "7082:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7082:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7039:236:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1404, "nodeType": "IfStatement", "src": "7022:320:10", "trueBody": {"id": 1403, "nodeType": "Block", "src": "7286:56:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1400, "name": "ClusterNotLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1930, "src": "7307:22:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7307:24:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1402, "nodeType": "RevertStatement", "src": "7300:31:10"}]}}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 1408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7365:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 1409, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7372:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7380:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "7372:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1405, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1354, "src": "7352:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1407, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7355:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "7352:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7352:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "7352:43:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1413, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7410:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7418:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7410:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7429:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7410:20:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1429, "nodeType": "IfStatement", "src": "7406:121:10", "trueBody": {"id": 1428, "nodeType": "Block", "src": "7432:95:10", "statements": [{"expression": {"id": 1420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1417, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7446:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1418, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7468:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7476:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7468:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7446:37:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1421, "nodeType": "ExpressionStatement", "src": "7446:37:10"}, {"expression": {"id": 1426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1422, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7497:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7505:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "7497:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7515:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7497:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1427, "nodeType": "ExpressionStatement", "src": "7497:19:10"}]}}, {"expression": {"id": 1434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1430, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7536:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7544:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "7536:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7552:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7536:17:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1435, "nodeType": "ExpressionStatement", "src": "7536:17:10"}, {"expression": {"id": 1440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1436, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7563:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1438, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7571:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "7563:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7589:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7563:27:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1441, "nodeType": "ExpressionStatement", "src": "7563:27:10"}, {"expression": {"id": 1446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1442, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7600:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1444, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7608:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "7600:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7617:5:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "7600:22:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1447, "nodeType": "ExpressionStatement", "src": "7600:22:10"}, {"expression": {"id": 1456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1448, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "7633:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1451, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7635:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "7633:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1452, "indexExpression": {"id": 1450, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1339, "src": "7644:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7633:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1453, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7661:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7669:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "7661:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7661:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "7633:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1457, "nodeType": "ExpressionStatement", "src": "7633:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1458, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7701:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7724:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7701:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1470, "nodeType": "IfStatement", "src": "7697:111:10", "trueBody": {"id": 1469, "nodeType": "Block", "src": "7727:81:10", "statements": [{"expression": {"arguments": [{"expression": {"id": 1464, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7765:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7769:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "7765:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1466, "name": "balanceLiquidatable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1382, "src": "7777:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1461, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "7741:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7749:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "7741:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7741:56:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "ExpressionStatement", "src": "7741:56:10"}]}}, {"eventCall": {"arguments": [{"id": 1472, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1321, "src": "7841:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1473, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "7855:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, {"id": 1474, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1327, "src": "7868:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1471, "name": "ClusterLiquidated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2235, "src": "7823:17:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7823:53:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1476, "nodeType": "EmitStatement", "src": "7818:58:10"}]}, "functionSelector": "bf0f2fb2", "id": 1478, "implemented": true, "kind": "function", "modifiers": [], "name": "liquidate", "nameLocation": "6351:9:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1329, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6445:8:10"}, "parameters": {"id": 1328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1321, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "6369:12:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6361:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1320, "name": "address", "nodeType": "ElementaryTypeName", "src": "6361:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1324, "mutability": "mutable", "name": "operatorIds", "nameLocation": "6399:11:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6383:27:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1322, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6383:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1323, "nodeType": "ArrayTypeName", "src": "6383:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1327, "mutability": "mutable", "name": "cluster", "nameLocation": "6427:7:10", "nodeType": "VariableDeclaration", "scope": 1478, "src": "6412:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1326, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1325, "name": "Cluster", "nameLocations": ["6412:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "6412:7:10"}, "referencedDeclaration": 1906, "src": "6412:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "6360:75:10"}, "returnParameters": {"id": 1330, "nodeType": "ParameterList", "parameters": [], "src": "6454:0:10"}, "scope": 1851, "src": "6342:1541:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2171], "body": {"id": 1610, "nodeType": "Block", "src": "7998:1169:10", "statements": [{"assignments": [1492], "declarations": [{"constant": false, "id": 1492, "mutability": "mutable", "name": "s", "nameLocation": "8028:1:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8008:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1491, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1490, "name": "StorageData", "nameLocations": ["8008:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "8008:11:10"}, "referencedDeclaration": 2024, "src": "8008:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1496, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1493, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "8032:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8043:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "8032:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8032:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8008:41:10"}, {"assignments": [1498], "declarations": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "8068:13:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8060:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1497, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8060:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1506, "initialValue": {"arguments": [{"expression": {"id": 1501, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8114:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8118:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "8114:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1503, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8126:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1504, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8139:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1499, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8084:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8092:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "8084:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8084:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "8060:81:10"}, {"condition": {"expression": {"id": 1507, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8155:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1508, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8163:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8155:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1512, "nodeType": "IfStatement", "src": "8151:50:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1509, "name": "ClusterAlreadyEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1936, "src": "8178:21:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8178:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1511, "nodeType": "RevertStatement", "src": "8171:30:10"}}, {"assignments": [1515], "declarations": [{"constant": false, "id": 1515, "mutability": "mutable", "name": "sp", "nameLocation": "8236:2:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8212:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1514, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1513, "name": "StorageProtocol", "nameLocations": ["8212:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "8212:15:10"}, "referencedDeclaration": 2854, "src": "8212:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1519, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1516, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "8241:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8260:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "8241:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8241:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "8212:54:10"}, {"assignments": [1521, 1523], "declarations": [{"constant": false, "id": 1521, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "8285:12:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8278:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1520, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8278:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1523, "mutability": "mutable", "name": "burnRate", "nameLocation": "8306:8:10", "nodeType": "VariableDeclaration", "scope": 1610, "src": "8299:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1522, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "8299:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1532, "initialValue": {"arguments": [{"id": 1526, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "8359:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"hexValue": "74727565", "id": 1527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8384:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1528, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8402:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1529, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8410:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8402:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"id": 1530, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8438:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1524, "name": "OperatorLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2644, "src": "8318:11:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_OperatorLib_$2644_$", "typeString": "type(library OperatorLib)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8330:15:10", "memberName": "updateOperators", "nodeType": "MemberAccess", "referencedDeclaration": 2643, "src": "8318:27:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint64_$dyn_memory_ptr_$_t_bool_$_t_uint32_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_uint64_$_t_uint64_$", "typeString": "function (uint64[] memory,bool,uint32,struct StorageData storage pointer) returns (uint64,uint64)"}}, "id": 1531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8318:131:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$", "typeString": "tuple(uint64,uint64)"}}, "nodeType": "VariableDeclarationStatement", "src": "8277:172:10"}, {"expression": {"id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1533, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8460:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1535, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8468:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "8460:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1536, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "8479:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8460:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1538, "nodeType": "ExpressionStatement", "src": "8460:25:10"}, {"expression": {"id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1539, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8503:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "8495:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8512:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "8495:21:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1544, "nodeType": "ExpressionStatement", "src": "8495:21:10"}, {"expression": {"id": 1549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1545, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8526:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1547, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8534:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1899, "src": "8526:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1548, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "8542:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8526:28:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1550, "nodeType": "ExpressionStatement", "src": "8526:28:10"}, {"expression": {"id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1551, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8564:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8572:15:10", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1896, "src": "8564:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8590:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1555, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8593:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "8590:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8590:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "8564:53:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1558, "nodeType": "ExpressionStatement", "src": "8564:53:10"}, {"expression": {"arguments": [{"hexValue": "74727565", "id": 1562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8641:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"expression": {"id": 1563, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8647:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8655:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "8647:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint32", "typeString": "uint32"}], "expression": {"id": 1559, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8628:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1561, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8631:9:10", "memberName": "updateDAO", "nodeType": "MemberAccess", "referencedDeclaration": 2811, "src": "8628:12:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$2854_storage_ptr_$_t_bool_$_t_uint32_$returns$__$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,bool,uint32)"}}, "id": 1565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8628:42:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1566, "nodeType": "ExpressionStatement", "src": "8628:42:10"}, {"condition": {"arguments": [{"id": 1569, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "8738:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1570, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8764:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1571, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8767:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "8764:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1572, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8795:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1573, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8798:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "8795:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1574, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "8846:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1575, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8849:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "8846:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1567, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8698:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1568, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8706:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "8698:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8698:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1581, "nodeType": "IfStatement", "src": "8681:274:10", "trueBody": {"id": 1580, "nodeType": "Block", "src": "8902:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1577, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "8923:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8923:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1579, "nodeType": "RevertStatement", "src": "8916:28:10"}]}}, {"expression": {"id": 1590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1582, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "8965:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8967:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "8965:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1586, "indexExpression": {"id": 1584, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "8976:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8965:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1587, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "8993:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1588, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9001:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "8993:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8993:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "8965:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1591, "nodeType": "ExpressionStatement", "src": "8965:53:10"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1592, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9033:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9042:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9033:10:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1602, "nodeType": "IfStatement", "src": "9029:64:10", "trueBody": {"id": 1601, "nodeType": "Block", "src": "9045:48:10", "statements": [{"expression": {"arguments": [{"id": 1598, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "9075:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1595, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9059:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1597, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9067:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9059:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9059:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1600, "nodeType": "ExpressionStatement", "src": "9059:23:10"}]}}, {"eventCall": {"arguments": [{"expression": {"id": 1604, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9127:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9131:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9127:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1606, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "9139:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1607, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "9152:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1603, "name": "ClusterReactivated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2245, "src": "9108:18:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9108:52:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1609, "nodeType": "EmitStatement", "src": "9103:57:10"}]}, "functionSelector": "5fec6dd0", "id": 1611, "implemented": true, "kind": "function", "modifiers": [], "name": "reactivate", "nameLocation": "7898:10:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7989:8:10"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1481, "mutability": "mutable", "name": "operatorIds", "nameLocation": "7927:11:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7909:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1479, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7909:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1480, "nodeType": "ArrayTypeName", "src": "7909:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1483, "mutability": "mutable", "name": "amount", "nameLocation": "7948:6:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7940:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7940:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1486, "mutability": "mutable", "name": "cluster", "nameLocation": "7971:7:10", "nodeType": "VariableDeclaration", "scope": 1611, "src": "7956:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1485, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1484, "name": "Cluster", "nameLocations": ["7956:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "7956:7:10"}, "referencedDeclaration": 1906, "src": "7956:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "7908:71:10"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "7998:0:10"}, "scope": 1851, "src": "7889:1278:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2185], "body": {"id": 1670, "nodeType": "Block", "src": "9339:362:10", "statements": [{"assignments": [1627], "declarations": [{"constant": false, "id": 1627, "mutability": "mutable", "name": "s", "nameLocation": "9369:1:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9349:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1625, "name": "StorageData", "nameLocations": ["9349:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9349:11:10"}, "referencedDeclaration": 2024, "src": "9349:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1631, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1628, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9373:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9384:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9373:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9373:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9349:41:10"}, {"assignments": [1633], "declarations": [{"constant": false, "id": 1633, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9409:13:10", "nodeType": "VariableDeclaration", "scope": 1670, "src": "9401:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1632, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9401:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1640, "initialValue": {"arguments": [{"id": 1636, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9455:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1637, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9469:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1638, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9482:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1634, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9425:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1635, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9433:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9425:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9425:59:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9401:83:10"}, {"expression": {"id": 1645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1641, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9495:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1643, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9503:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "9495:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1644, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9514:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9495:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1646, "nodeType": "ExpressionStatement", "src": "9495:25:10"}, {"expression": {"id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1647, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "9531:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9533:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "9531:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1651, "indexExpression": {"id": 1649, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1633, "src": "9542:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9531:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1652, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9559:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9567:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "9559:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9559:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "9531:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1656, "nodeType": "ExpressionStatement", "src": "9531:53:10"}, {"expression": {"arguments": [{"id": 1660, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9611:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1657, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "9595:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9603:7:10", "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 2339, "src": "9595:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9595:23:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1662, "nodeType": "ExpressionStatement", "src": "9595:23:10"}, {"eventCall": {"arguments": [{"id": 1664, "name": "clusterOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "9651:12:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1665, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1616, "src": "9665:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1666, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1618, "src": "9678:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1667, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1621, "src": "9686:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1663, "name": "ClusterDeposited", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2269, "src": "9634:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9634:60:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1669, "nodeType": "EmitStatement", "src": "9629:65:10"}]}, "functionSelector": "bc26e7e5", "id": 1671, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "9182:7:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1623, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9330:8:10"}, "parameters": {"id": 1622, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1613, "mutability": "mutable", "name": "clusterOwner", "nameLocation": "9207:12:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9199:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1612, "name": "address", "nodeType": "ElementaryTypeName", "src": "9199:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1616, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9247:11:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9229:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9229:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1615, "nodeType": "ArrayTypeName", "src": "9229:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1618, "mutability": "mutable", "name": "amount", "nameLocation": "9276:6:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9268:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1617, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9268:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1621, "mutability": "mutable", "name": "cluster", "nameLocation": "9307:7:10", "nodeType": "VariableDeclaration", "scope": 1671, "src": "9292:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1620, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1619, "name": "Cluster", "nameLocations": ["9292:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9292:7:10"}, "referencedDeclaration": 1906, "src": "9292:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9189:131:10"}, "returnParameters": {"id": 1624, "nodeType": "ParameterList", "parameters": [], "src": "9339:0:10"}, "scope": 1851, "src": "9173:528:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [2197], "body": {"id": 1849, "nodeType": "Block", "src": "9814:1686:10", "statements": [{"assignments": [1685], "declarations": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "s", "nameLocation": "9844:1:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9824:21:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1684, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1683, "name": "StorageData", "nameLocations": ["9824:11:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2024, "src": "9824:11:10"}, "referencedDeclaration": 2024, "src": "9824:11:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1689, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1686, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "9848:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9859:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "9848:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9848:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "9824:41:10"}, {"assignments": [1691], "declarations": [{"constant": false, "id": 1691, "mutability": "mutable", "name": "hashedCluster", "nameLocation": "9884:13:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "9876:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 1690, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9876:7:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 1699, "initialValue": {"arguments": [{"expression": {"id": 1694, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9930:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9934:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "9930:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1696, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "9942:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1697, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "9955:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}], "expression": {"id": 1692, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9900:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9908:21:10", "memberName": "validateHashedCluster", "nodeType": "MemberAccess", "referencedDeclaration": 677, "src": "9900:29:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Cluster_$1906_memory_ptr_$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_struct$_StorageData_$2024_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,address,uint64[] memory,struct StorageData storage pointer) view returns (bytes32)"}}, "id": 1698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9900:57:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "9876:81:10"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1700, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "9967:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1702, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9975:30:10", "memberName": "validateClusterIsNotLiquidated", "nodeType": "MemberAccess", "referencedDeclaration": 612, "src": "9967:38:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure"}}, "id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9967:40:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1704, "nodeType": "ExpressionStatement", "src": "9967:40:10"}, {"assignments": [1707], "declarations": [{"constant": false, "id": 1707, "mutability": "mutable", "name": "sp", "nameLocation": "10042:2:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10018:26:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1706, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1705, "name": "StorageProtocol", "nameLocations": ["10018:15:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 2854, "src": "10018:15:10"}, "referencedDeclaration": 2854, "src": "10018:15:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1711, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1708, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "10047:18:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$2877_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10066:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2876, "src": "10047:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10047:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "10018:54:10"}, {"assignments": [1713], "declarations": [{"constant": false, "id": 1713, "mutability": "mutable", "name": "burnRate", "nameLocation": "10090:8:10", "nodeType": "VariableDeclaration", "scope": 1849, "src": "10083:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1712, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10083:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1714, "nodeType": "VariableDeclarationStatement", "src": "10083:15:10"}, {"condition": {"expression": {"id": 1715, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10112:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10120:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10112:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1785, "nodeType": "IfStatement", "src": "10108:733:10", "trueBody": {"id": 1784, "nodeType": "Block", "src": "10128:713:10", "statements": [{"assignments": [1718], "declarations": [{"constant": false, "id": 1718, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "10149:12:10", "nodeType": "VariableDeclaration", "scope": 1784, "src": "10142:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1717, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10142:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1719, "nodeType": "VariableDeclarationStatement", "src": "10142:19:10"}, {"id": 1774, "nodeType": "Block", "src": "10175:573:10", "statements": [{"assignments": [1721], "declarations": [{"constant": false, "id": 1721, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "10201:15:10", "nodeType": "VariableDeclaration", "scope": 1774, "src": "10193:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1720, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10193:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1724, "initialValue": {"expression": {"id": 1722, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10219:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10231:6:10", "memberName": "length", "nodeType": "MemberAccess", "src": "10219:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10193:44:10"}, {"body": {"id": 1772, "nodeType": "Block", "src": "10294:440:10", "statements": [{"assignments": [1733], "declarations": [{"constant": false, "id": 1733, "mutability": "mutable", "name": "operator", "nameLocation": "10333:8:10", "nodeType": "VariableDeclaration", "scope": 1772, "src": "10316:25:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1732, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1731, "name": "Operator", "nameLocations": ["10316:8:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1880, "src": "10316:8:10"}, "referencedDeclaration": 1880, "src": "10316:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1742, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1734, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "10344:10:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2047_$", "typeString": "type(library SSVStorage)"}}, "id": 1735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10355:4:10", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2046, "src": "10344:15:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2024_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10344:17:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1737, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10362:9:10", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2015, "src": "10344:27:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1880_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1741, "indexExpression": {"baseExpression": {"id": 1738, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "10372:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, "id": 1740, "indexExpression": {"id": 1739, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10384:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10372:14:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10344:43:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "10316:71:10"}, {"expression": {"id": 1761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1743, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10409:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1744, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10449:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1745, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10458:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10449:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10467:5:10", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1859, "src": "10449:23:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1749, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10507:5:10", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10513:6:10", "memberName": "number", "nodeType": "MemberAccess", "src": "10507:12:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1748, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10500:6:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1747, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "10500:6:10", "typeDescriptions": {}}}, "id": 1751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10500:20:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 1752, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10523:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10532:8:10", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1879, "src": "10523:17:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1863_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 1754, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10541:5:10", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1856, "src": "10523:23:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "10500:46:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1756, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10499:48:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 1757, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10574:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1758, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10583:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10574:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10499:87:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10449:137:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10409:177:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1762, "nodeType": "ExpressionStatement", "src": "10409:177:10"}, {"expression": {"id": 1766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1763, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "10608:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 1764, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "10620:8:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1880_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 1765, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10629:3:10", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1869, "src": "10620:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "10608:24:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1767, "nodeType": "ExpressionStatement", "src": "10608:24:10"}, {"id": 1771, "nodeType": "UncheckedBlock", "src": "10654:62:10", "statements": [{"expression": {"id": 1769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "10690:3:10", "subExpression": {"id": 1768, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10692:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1770, "nodeType": "ExpressionStatement", "src": "10690:3:10"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1728, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1726, "src": "10271:1:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1729, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1721, "src": "10275:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10271:19:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1773, "initializationExpression": {"assignments": [1726], "declarations": [{"constant": false, "id": 1726, "mutability": "mutable", "name": "i", "nameLocation": "10268:1:10", "nodeType": "VariableDeclaration", "scope": 1773, "src": "10260:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10260:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1727, "nodeType": "VariableDeclarationStatement", "src": "10260:9:10"}, "nodeType": "ForStatement", "src": "10255:479:10"}]}, {"expression": {"arguments": [{"id": 1778, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1718, "src": "10788:12:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1779, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "10802:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1780, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10805:22:10", "memberName": "currentNetworkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 2676, "src": "10802:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$2854_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$2854_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 1781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10802:27:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1775, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10762:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10770:17:10", "memberName": "updateClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 706, "src": "10762:25:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$returns$__$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64) pure"}}, "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10762:68:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1783, "nodeType": "ExpressionStatement", "src": "10762:68:10"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1786, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10854:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1787, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10862:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10854:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1788, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10872:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10854:24:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1793, "nodeType": "IfStatement", "src": "10850:58:10", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1790, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "10887:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10887:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1792, "nodeType": "RevertStatement", "src": "10880:28:10"}}, {"expression": {"id": 1798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1794, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10919:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1796, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "10927:7:10", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1905, "src": "10919:15:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1797, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "10938:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10919:25:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1799, "nodeType": "ExpressionStatement", "src": "10919:25:10"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1800, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "10972:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10980:6:10", "memberName": "active", "nodeType": "MemberAccess", "referencedDeclaration": 1902, "src": "10972:14:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 1805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1802, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11002:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11010:14:10", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1893, "src": "11002:22:10", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11028:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11002:27:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:57:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"arguments": [{"id": 1809, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1713, "src": "11085:8:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1810, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11111:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1811, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11114:10:10", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 2829, "src": "11111:13:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1812, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11142:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11145:30:10", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 2838, "src": "11142:33:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1814, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1707, "src": "11193:2:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$2854_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1815, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11196:28:10", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 2841, "src": "11193:31:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 1807, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11045:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1808, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11053:14:10", "memberName": "isLiquidatable", "nodeType": "MemberAccess", "referencedDeclaration": 596, "src": "11045:22:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_bool_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory,uint64,uint64,uint64,uint64) pure returns (bool)"}}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11045:193:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10972:266:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1822, "nodeType": "IfStatement", "src": "10955:347:10", "trueBody": {"id": 1821, "nodeType": "Block", "src": "11249:53:10", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1818, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1922, "src": "11270:19:10", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11270:21:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1820, "nodeType": "RevertStatement", "src": "11263:28:10"}]}}, {"expression": {"id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1823, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1685, "src": "11312:1:10", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2024_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11314:8:10", "memberName": "clusters", "nodeType": "MemberAccess", "referencedDeclaration": 1987, "src": "11312:10:10", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}}, "id": 1827, "indexExpression": {"id": 1825, "name": "hashedCluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1691, "src": "11323:13:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11312:25:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1828, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11340:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}, "id": 1829, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11348:15:10", "memberName": "hashClusterData", "nodeType": "MemberAccess", "referencedDeclaration": 731, "src": "11340:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_struct$_Cluster_$1906_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Cluster_$1906_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Cluster memory) pure returns (bytes32)"}}, "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11340:25:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "11312:53:10", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 1832, "nodeType": "ExpressionStatement", "src": "11312:53:10"}, {"expression": {"arguments": [{"expression": {"id": 1836, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11400:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11404:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11400:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1838, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11412:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1833, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2401, "src": "11376:7:10", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2401_$", "typeString": "type(library CoreLib)"}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11384:15:10", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2312, "src": "11376:23:10", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11376:43:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1840, "nodeType": "ExpressionStatement", "src": "11376:43:10"}, {"eventCall": {"arguments": [{"expression": {"id": 1842, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11452:3:10", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11456:6:10", "memberName": "sender", "nodeType": "MemberAccess", "src": "11452:10:10", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1844, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "11464:11:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}}, {"id": 1845, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "11477:6:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1846, "name": "cluster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "11485:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[] calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster memory"}], "id": 1841, "name": "ClusterWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2257, "src": "11435:16:10", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_uint256_$_t_struct$_Cluster_$1906_memory_ptr_$returns$__$", "typeString": "function (address,uint64[] memory,uint256,struct ISSVNetworkCore.Cluster memory)"}}, "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11435:58:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1848, "nodeType": "EmitStatement", "src": "11430:63:10"}]}, "functionSelector": "686e682c", "id": 1850, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "9716:8:10", "nodeType": "FunctionDefinition", "overrides": {"id": 1681, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9805:8:10"}, "parameters": {"id": 1680, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1674, "mutability": "mutable", "name": "operatorIds", "nameLocation": "9743:11:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9725:29:10", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 1672, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "9725:6:10", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1673, "nodeType": "ArrayTypeName", "src": "9725:8:10", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 1676, "mutability": "mutable", "name": "amount", "nameLocation": "9764:6:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9756:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9756:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1679, "mutability": "mutable", "name": "cluster", "nameLocation": "9787:7:10", "nodeType": "VariableDeclaration", "scope": 1850, "src": "9772:22:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_memory_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}, "typeName": {"id": 1678, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1677, "name": "Cluster", "nameLocations": ["9772:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1906, "src": "9772:7:10"}, "referencedDeclaration": 1906, "src": "9772:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Cluster_$1906_storage_ptr", "typeString": "struct ISSVNetworkCore.Cluster"}}, "visibility": "internal"}], "src": "9724:71:10"}, "returnParameters": {"id": 1682, "nodeType": "ParameterList", "parameters": [], "src": "9814:0:10"}, "scope": 1851, "src": "9707:1793:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1852, "src": "347:11155:10", "usedErrors": [1908, 1910, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966]}], "src": "45:11458:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2955]}, "id": 2956, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2879, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2880, "nodeType": "StructuredDocumentation", "src": "131:70:11", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2955, "linearizedBaseContracts": [2955], "name": "IERC20", "nameLocation": "212:6:11", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2881, "nodeType": "StructuredDocumentation", "src": "225:158:11", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2889, "name": "Transfer", "nameLocation": "394:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2883, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "403:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2882, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2885, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "425:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2884, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2887, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:11", "nodeType": "VariableDeclaration", "scope": 2889, "src": "445:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:11"}, "src": "388:72:11"}, {"anonymous": false, "documentation": {"id": 2890, "nodeType": "StructuredDocumentation", "src": "466:148:11", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2898, "name": "Approval", "nameLocation": "625:8:11", "nodeType": "EventDefinition", "parameters": {"id": 2897, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2892, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "634:21:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2891, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2894, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "657:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2893, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2896, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:11", "nodeType": "VariableDeclaration", "scope": 2898, "src": "682:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2895, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:11"}, "src": "619:78:11"}, {"documentation": {"id": 2899, "nodeType": "StructuredDocumentation", "src": "703:66:11", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2904, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2900, "nodeType": "ParameterList", "parameters": [], "src": "794:2:11"}, "returnParameters": {"id": 2903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2902, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2904, "src": "820:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:11"}, "scope": 2955, "src": "774:55:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2905, "nodeType": "StructuredDocumentation", "src": "835:72:11", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2912, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2907, "mutability": "mutable", "name": "account", "nameLocation": "939:7:11", "nodeType": "VariableDeclaration", "scope": 2912, "src": "931:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2906, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:11"}, "returnParameters": {"id": 2911, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2910, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2912, "src": "971:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:11"}, "scope": 2955, "src": "912:68:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2913, "nodeType": "StructuredDocumentation", "src": "986:202:11", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2922, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2915, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1211:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2914, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2917, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:11", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1223:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2916, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:11"}, "returnParameters": {"id": 2921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2920, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2922, "src": "1257:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2919, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:11"}, "scope": 2955, "src": "1193:70:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2923, "nodeType": "StructuredDocumentation", "src": "1269:264:11", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2932, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2928, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2925, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1557:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2924, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2927, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:11", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1572:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2926, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:11"}, "returnParameters": {"id": 2931, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2930, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2932, "src": "1612:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:11"}, "scope": 2955, "src": "1538:83:11", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2933, "nodeType": "StructuredDocumentation", "src": "1627:642:11", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2942, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2935, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2291:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2934, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2937, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:11", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2308:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:11"}, "returnParameters": {"id": 2941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2940, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2942, "src": "2342:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2939, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:11"}, "scope": 2955, "src": "2274:74:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2943, "nodeType": "StructuredDocumentation", "src": "2354:287:11", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2954, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2945, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2668:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2947, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2682:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2946, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2949, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:11", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2694:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:11"}, "returnParameters": {"id": 2953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2952, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2954, "src": "2728:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2951, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:11"}, "scope": 2955, "src": "2646:88:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2956, "src": "202:2534:11", "usedErrors": []}], "src": "106:2631:11"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [3029]}, "id": 3030, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2957, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:12"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2958, "nodeType": "StructuredDocumentation", "src": "112:311:12", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 3029, "linearizedBaseContracts": [3029], "name": "Counters", "nameLocation": "432:8:12", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2961, "members": [{"constant": false, "id": 2960, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:12", "nodeType": "VariableDeclaration", "scope": 2961, "src": "786:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2959, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:12", "nodeType": "StructDefinition", "scope": 3029, "src": "447:374:12", "visibility": "public"}, {"body": {"id": 2972, "nodeType": "Block", "src": "901:38:12", "statements": [{"expression": {"expression": {"id": 2969, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2964, "src": "918:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2970, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "918:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2968, "id": 2971, "nodeType": "Return", "src": "911:21:12"}]}, "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2965, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2964, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:12", "nodeType": "VariableDeclaration", "scope": 2973, "src": "844:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2963, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2962, "name": "Counter", "nameLocations": ["844:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "844:7:12"}, "referencedDeclaration": 2961, "src": "844:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:12"}, "returnParameters": {"id": 2968, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2967, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2973, "src": "892:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2966, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:12"}, "scope": 3029, "src": "827:112:12", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2986, "nodeType": "Block", "src": "998:70:12", "statements": [{"id": 2985, "nodeType": "UncheckedBlock", "src": "1008:54:12", "statements": [{"expression": {"id": 2983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2979, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "1032:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2981, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1032:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2984, "nodeType": "ExpressionStatement", "src": "1032:19:12"}]}]}, "id": 2987, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:12", "nodeType": "VariableDeclaration", "scope": 2987, "src": "964:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2975, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2974, "name": "Counter", "nameLocations": ["964:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "964:7:12"}, "referencedDeclaration": 2961, "src": "964:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:12"}, "returnParameters": {"id": 2978, "nodeType": "ParameterList", "parameters": [], "src": "998:0:12"}, "scope": 3029, "src": "945:123:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3014, "nodeType": "Block", "src": "1127:176:12", "statements": [{"assignments": [2994], "declarations": [{"constant": false, "id": 2994, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:12", "nodeType": "VariableDeclaration", "scope": 3014, "src": "1137:13:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2993, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2997, "initialValue": {"expression": {"id": 2995, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1153:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1153:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:12"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2999, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1185:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 3002, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:12", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2998, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:12", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3003, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3004, "nodeType": "ExpressionStatement", "src": "1177:49:12"}, {"id": 3013, "nodeType": "UncheckedBlock", "src": "1236:61:12", "statements": [{"expression": {"id": 3011, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3005, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "1260:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3007, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1260:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3008, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2994, "src": "1277:5:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 3009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3012, "nodeType": "ExpressionStatement", "src": "1260:26:12"}]}]}, "id": 3015, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2990, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:12", "nodeType": "VariableDeclaration", "scope": 3015, "src": "1093:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2989, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2988, "name": "Counter", "nameLocations": ["1093:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1093:7:12"}, "referencedDeclaration": 2961, "src": "1093:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:12"}, "returnParameters": {"id": 2992, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:12"}, "scope": 3029, "src": "1074:229:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 3027, "nodeType": "Block", "src": "1358:35:12", "statements": [{"expression": {"id": 3025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 3021, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3018, "src": "1368:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 3023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:12", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2960, "src": "1368:14:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 3024, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3026, "nodeType": "ExpressionStatement", "src": "1368:18:12"}]}, "id": 3028, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3018, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:12", "nodeType": "VariableDeclaration", "scope": 3028, "src": "1324:23:12", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 3017, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3016, "name": "Counter", "nameLocations": ["1324:7:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 2961, "src": "1324:7:12"}, "referencedDeclaration": 2961, "src": "1324:7:12", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2961_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:12"}, "returnParameters": {"id": 3020, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:12"}, "scope": 3029, "src": "1309:84:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 3030, "src": "424:971:12", "usedErrors": []}], "src": "87:1309:12"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVClusters.sol:ISSVClusters": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Deposits tokens into a cluster"}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Liquidates a cluster"}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Withdraws tokens from a cluster"}}, "notice": null}, "devdoc": {"methods": {"deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster where the deposit will be made", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster to be liquidated", "operatorIds": "Array of IDs of operators managing the cluster", "owner": "The owner of the cluster"}, "return": null}, "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}, "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster where the withdrawal will be made", "operatorIds": "Array of IDs of operators managing the cluster", "tokenAmount": "Amount of SSV tokens to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ClusterLib.sol:ClusterLib": {"srcmap": "164:2774:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "164:2774:2:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402d809ddc32f9ad38430cdcb4ee56bf84a2819f2cd896f287a19f299f59f8ca64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/Clusters.sol:Clusters": {"srcmap": "137:3963:9:-:0;;;563:1;539:25;;211:16;;;;;;;;;;137:3963;;;;;;", "srcmap-runtime": "137:3963:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:242;;;:::i;:::-;;722:4084:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4053:45:9;;;:::i;:::-;;9707:1793:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;287:27:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3538:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2544:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3805:242;3862:21;3886:17;:15;:17::i;:::-;3862:41;;3919:8;3914:127;3937:14;:21;;;;3933:1;:25;;;3914:127;;;4027:1;4019:10;;3986:1;:10;;:29;3997:14;4012:1;3997:17;;;;;;;;;;:::i;:::-;;;;;;;;;;3986:29;;;;;;;;;;;;:43;3979:51;;;;:::i;:::-;;3960:3;;;;;:::i;:::-;;;;3914:127;;;;3852:195;3805:242::o;722:4084:10:-;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;4053:45:9:-;:::o;9707:1793:10:-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;287:27:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3538:261::-;3696:10;:17;;;;3675:11;:39;;;;:::i;:::-;3661:53;;3725:4;:20;;;3746:10;3757:11;3746:23;;;;;;;;;;:::i;:::-;;;;;;;;;3771:11;;3784:7;3725:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3538:261;;;;:::o;2544:988::-;2662:21;2686:17;:15;:17::i;:::-;2662:41;;2714:23;2740:20;:18;:20::i;:::-;2714:46;;2770:28;2801:22;:20;:22::i;:::-;2770:53;;2834:22;2886:10;2898:12;2869:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2859:53;;;;;;2834:78;;2923:19;2945:1;:10;;:26;2956:14;2945:26;;;;;;;;;;;;2923:48;;3008:1;3000:10;;2985:11;:25;2981:307;;3051:1;3026:7;:22;;:26;;;;;;;;;;;3092:1;3066:7;:23;;:27;;;;;;;;;;;3123:1;3107:7;:13;;:17;;;;;;;;;;;3156:1;3138:7;:15;;:19;;;;;3188:4;3171:7;:14;;:21;;;;;;;;;;;2981:307;;;3252:25;:7;:23;:25::i;:::-;3223:1;:10;;:26;3234:14;3223:26;;;;;;;;;;;:54;;;;2981:307;3302:4;:22;;;3325:10;3337:12;3351:10;;3363:6;3371:7;3302:77;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;;3509:5;3502:13;;;;:::i;:::-;;3298:228;;;3394:10;3410;3394:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3435:14;3455;3435:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:228;2652:880;;;;;2544:988;;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;571:368:9:-;619:12;643:24;680:2;670:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;643:40;;698:6;693:195;714:2;710:1;:6;693:195;;;859:3;816:5;;823:15;840:10;852:1;799:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;789:66;;;;;;784:72;;:78;;;;:::i;:::-;754:123;;737:11;749:1;737:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;718:3;;;;;:::i;:::-;;;;693:195;;;;897:5;;:7;;;;;;;;;:::i;:::-;;;;;;921:11;914:18;;;571:368;:::o;945:1169::-;995:27;1034:18;368:1;1056:107;;1091:15;1108:10;1120:5;;1074:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1064:63;;;;;;1056:72;;:107;;;;:::i;:::-;1034:130;;1174:14;1208:1;1195:10;:14;;;;:::i;:::-;1191:1;:18;;;;:::i;:::-;1174:35;;1264:5;;:7;;;;;;;;;:::i;:::-;;;;;;1309:6;1296:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1282:34;;1331:9;1326:754;1350:6;1346:1;:10;1326:754;;;1377:15;1406:11;1431:207;1452:5;;:7;;;;;;;;;:::i;:::-;;;;;;1537:19;:17;:19::i;:::-;1526:30;;1584:22;1597:8;1584:12;:22::i;:::-;1583:23;1574:32;;1630:6;1629:7;1431:207;;1715:9;1727:1;1715:13;;1742:237;1753:1;1749;:5;:38;;;;;1779:8;1758:29;;:11;1774:1;1770;:5;;;;:::i;:::-;1758:18;;;;;;;;:::i;:::-;;;;;;;;:29;;;1749:38;1742:237;;;1815:11;:18;1811:1;:22;1807:137;;;1874:11;1890:1;1886;:5;;;;:::i;:::-;1874:18;;;;;;;;:::i;:::-;;;;;;;;1857:11;1869:1;1857:14;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;1807:137;1961:3;;;;;:::i;:::-;;;;1742:237;;;2009:8;1992:11;2004:1;1992:14;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;1363:717;;;1358:3;;;;;:::i;:::-;;;;1326:754;;;;2089:18;;945:1169;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;2120:169:9:-;2167:6;2274:7;2234:15;2251:10;2263:5;;2217:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2207:63;;;;;;2199:72;;:82;;;;:::i;:::-;2185:97;;2120:169;:::o;2295:243::-;2351:4;2372:9;2384:1;2372:13;;2367:143;2391:11;:18;;;;2387:1;:22;2367:143;;;2452:2;2434:20;;:11;2446:1;2434:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;2430:70;;2481:4;2474:11;;;;;2430:70;2411:3;;;;;:::i;:::-;;;;2367:143;;;;2526:5;2519:12;;2295:243;;;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:329::-;12916:6;12965:2;12953:9;12944:7;12940:23;12936:32;12933:119;;;12971:79;;:::i;:::-;12933:119;13091:1;13116:53;13161:7;13152:6;13141:9;13137:22;13116:53;:::i;:::-;13106:63;;13062:117;12857:329;;;;:::o;13192:115::-;13277:23;13294:5;13277:23;:::i;:::-;13272:3;13265:36;13192:115;;:::o;13313:218::-;13404:4;13442:2;13431:9;13427:18;13419:26;;13455:69;13521:1;13510:9;13506:17;13497:6;13455:69;:::i;:::-;13313:218;;;;:::o;13537:896::-;13664:6;13672;13680;13688;13737:3;13725:9;13716:7;13712:23;13708:33;13705:120;;;13744:79;;:::i;:::-;13705:120;13864:1;13889:52;13933:7;13924:6;13913:9;13909:22;13889:52;:::i;:::-;13879:62;;13835:116;14018:2;14007:9;14003:18;13990:32;14049:18;14041:6;14038:30;14035:117;;;14071:79;;:::i;:::-;14035:117;14184:79;14255:7;14246:6;14235:9;14231:22;14184:79;:::i;:::-;14166:97;;;;13961:312;14312:2;14338:78;14408:7;14399:6;14388:9;14384:22;14338:78;:::i;:::-;14328:88;;14283:143;13537:896;;;;;;;:::o;14439:868::-;14552:6;14560;14568;14576;14625:3;14613:9;14604:7;14600:23;14596:33;14593:120;;;14632:79;;:::i;:::-;14593:120;14780:1;14769:9;14765:17;14752:31;14810:18;14802:6;14799:30;14796:117;;;14832:79;;:::i;:::-;14796:117;14945:64;15001:7;14992:6;14981:9;14977:22;14945:64;:::i;:::-;14927:82;;;;14723:296;15058:2;15084:53;15129:7;15120:6;15109:9;15105:22;15084:53;:::i;:::-;15074:63;;15029:118;15186:2;15212:78;15282:7;15273:6;15262:9;15258:22;15212:78;:::i;:::-;15202:88;;15157:143;14439:868;;;;;;;:::o;15313:180::-;15361:77;15358:1;15351:88;15458:4;15455:1;15448:15;15482:4;15479:1;15472:15;15499:180;15547:77;15544:1;15537:88;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15685:180;15733:77;15730:1;15723:88;15830:4;15827:1;15820:15;15854:4;15851:1;15844:15;15871:183;15909:3;15932:23;15949:5;15932:23;:::i;:::-;15923:32;;15977:18;15970:5;15967:29;15964:55;;15999:18;;:::i;:::-;15964:55;16046:1;16039:5;16035:13;16028:20;;15871:183;;;:::o;16060:180::-;16108:77;16105:1;16098:88;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16246:176;16278:1;16295:20;16313:1;16295:20;:::i;:::-;16290:25;;16329:20;16347:1;16329:20;:::i;:::-;16324:25;;16368:1;16358:35;;16373:18;;:::i;:::-;16358:35;16414:1;16411;16407:9;16402:14;;16246:176;;;;:::o;16428:147::-;16529:11;16566:3;16551:18;;16428:147;;;;:::o;16581:146::-;16678:6;16673:3;16668;16655:30;16719:1;16710:6;16705:3;16701:16;16694:27;16581:146;;;:::o;16755:327::-;16869:3;16890:88;16971:6;16966:3;16890:88;:::i;:::-;16883:95;;16988:56;17037:6;17032:3;17025:5;16988:56;:::i;:::-;17069:6;17064:3;17060:16;17053:23;;16755:327;;;;;:::o;17088:94::-;17121:8;17169:5;17165:2;17161:14;17140:35;;17088:94;;;:::o;17188:::-;17227:7;17256:20;17270:5;17256:20;:::i;:::-;17245:31;;17188:94;;;:::o;17288:100::-;17327:7;17356:26;17376:5;17356:26;:::i;:::-;17345:37;;17288:100;;;:::o;17394:157::-;17499:45;17519:24;17537:5;17519:24;:::i;:::-;17499:45;:::i;:::-;17494:3;17487:58;17394:157;;:::o;17557:432::-;17725:3;17747:103;17846:3;17837:6;17829;17747:103;:::i;:::-;17740:110;;17860:75;17931:3;17922:6;17860:75;:::i;:::-;17960:2;17955:3;17951:12;17944:19;;17980:3;17973:10;;17557:432;;;;;;:::o;17995:113::-;18061:6;18095:5;18089:12;18079:22;;17995:113;;;:::o;18114:162::-;18230:11;18267:3;18252:18;;18114:162;;;;:::o;18282:131::-;18348:4;18371:3;18363:11;;18401:4;18396:3;18392:14;18384:22;;18282:131;;;:::o;18419:113::-;18502:23;18519:5;18502:23;:::i;:::-;18497:3;18490:36;18419:113;;:::o;18538:191::-;18613:10;18634:52;18682:3;18674:6;18634:52;:::i;:::-;18718:4;18713:3;18709:14;18695:28;;18538:191;;;;:::o;18735:112::-;18804:4;18836;18831:3;18827:14;18819:22;;18735:112;;;:::o;18881:768::-;19016:3;19045:53;19092:5;19045:53;:::i;:::-;19114:103;19210:6;19205:3;19114:103;:::i;:::-;19107:110;;19241:55;19290:5;19241:55;:::i;:::-;19319:7;19350:1;19335:289;19360:6;19357:1;19354:13;19335:289;;;19436:6;19430:13;19463:69;19528:3;19513:13;19463:69;:::i;:::-;19456:76;;19555:59;19607:6;19555:59;:::i;:::-;19545:69;;19395:229;19382:1;19379;19375:9;19370:14;;19335:289;;;19339:14;19640:3;19633:10;;19021:628;;;18881:768;;;;:::o;19655:331::-;19815:3;19837:123;19956:3;19947:6;19837:123;:::i;:::-;19830:130;;19977:3;19970:10;;19655:331;;;;:::o;19992:472::-;20180:3;20195:75;20266:3;20257:6;20195:75;:::i;:::-;20295:2;20290:3;20286:12;20279:19;;20315:123;20434:3;20425:6;20315:123;:::i;:::-;20308:130;;20455:3;20448:10;;19992:472;;;;;:::o;20470:191::-;20510:3;20529:20;20547:1;20529:20;:::i;:::-;20524:25;;20563:20;20581:1;20563:20;:::i;:::-;20558:25;;20606:1;20603;20599:9;20592:16;;20627:3;20624:1;20621:10;20618:36;;;20634:18;;:::i;:::-;20618:36;20470:191;;;;:::o;20667:175::-;20705:3;20728:23;20745:5;20728:23;:::i;:::-;20719:32;;20773:10;20766:5;20763:21;20760:47;;20787:18;;:::i;:::-;20760:47;20834:1;20827:5;20823:13;20816:20;;20667:175;;;:::o;20848:205::-;20887:3;20906:19;20923:1;20906:19;:::i;:::-;20901:24;;20939:19;20956:1;20939:19;:::i;:::-;20934:24;;20981:1;20978;20974:9;20967:16;;21004:18;20999:3;20996:27;20993:53;;;21026:18;;:::i;:::-;20993:53;20848:205;;;;:::o;21059:183::-;21157:11;21191:6;21186:3;21179:19;21231:4;21226:3;21222:14;21207:29;;21059:183;;;;:::o;21248:105::-;21323:23;21340:5;21323:23;:::i;:::-;21318:3;21311:36;21248:105;;:::o;21359:175::-;21426:10;21447:44;21487:3;21479:6;21447:44;:::i;:::-;21523:4;21518:3;21514:14;21500:28;;21359:175;;;;:::o;21568:724::-;21685:3;21714:53;21761:5;21714:53;:::i;:::-;21783:85;21861:6;21856:3;21783:85;:::i;:::-;21776:92;;21892:55;21941:5;21892:55;:::i;:::-;21970:7;22001:1;21986:281;22011:6;22008:1;22005:13;21986:281;;;22087:6;22081:13;22114:61;22171:3;22156:13;22114:61;:::i;:::-;22107:68;;22198:59;22250:6;22198:59;:::i;:::-;22188:69;;22046:221;22033:1;22030;22026:9;22021:14;;21986:281;;;21990:14;22283:3;22276:10;;21690:602;;;21568:724;;;;:::o;22298:168::-;22381:11;22415:6;22410:3;22403:19;22455:4;22450:3;22446:14;22431:29;;22298:168;;;;:::o;22494:314::-;22590:3;22611:70;22674:6;22669:3;22611:70;:::i;:::-;22604:77;;22691:56;22740:6;22735:3;22728:5;22691:56;:::i;:::-;22772:29;22794:6;22772:29;:::i;:::-;22767:3;22763:39;22756:46;;22494:314;;;;;:::o;22814:105::-;22889:23;22906:5;22889:23;:::i;:::-;22884:3;22877:36;22814:105;;:::o;22925:99::-;22996:21;23011:5;22996:21;:::i;:::-;22991:3;22984:34;22925:99;;:::o;23030:108::-;23107:24;23125:5;23107:24;:::i;:::-;23102:3;23095:37;23030:108;;:::o;23216:1044::-;23363:4;23358:3;23354:14;23460:4;23453:5;23449:16;23443:23;23479:61;23534:4;23529:3;23525:14;23511:12;23479:61;:::i;:::-;23378:172;23643:4;23636:5;23632:16;23626:23;23662:61;23717:4;23712:3;23708:14;23694:12;23662:61;:::i;:::-;23560:173;23816:4;23809:5;23805:16;23799:23;23835:61;23890:4;23885:3;23881:14;23867:12;23835:61;:::i;:::-;23743:163;23990:4;23983:5;23979:16;23973:23;24009:57;24060:4;24055:3;24051:14;24037:12;24009:57;:::i;:::-;23916:160;24161:4;24154:5;24150:16;24144:23;24180:63;24237:4;24232:3;24228:14;24214:12;24180:63;:::i;:::-;24086:167;23332:928;23216:1044;;:::o;24266:1014::-;24597:4;24635:3;24624:9;24620:19;24612:27;;24685:9;24679:4;24675:20;24671:1;24660:9;24656:17;24649:47;24713:106;24814:4;24805:6;24713:106;:::i;:::-;24705:114;;24866:9;24860:4;24856:20;24851:2;24840:9;24836:18;24829:48;24894:86;24975:4;24966:6;24958;24894:86;:::i;:::-;24886:94;;25027:9;25021:4;25017:20;25012:2;25001:9;24997:18;24990:48;25055:86;25136:4;25127:6;25119;25055:86;:::i;:::-;25047:94;;25151:122;25269:2;25258:9;25254:18;25245:6;25151:122;:::i;:::-;24266:1014;;;;;;;;;:::o;25286:101::-;25354:4;25377:3;25369:11;;25286:101;;;:::o;25393:120::-;25444:5;25469:38;25503:2;25498:3;25494:12;25489:3;25469:38;:::i;:::-;25460:47;;25393:120;;;;:::o;25519:114::-;25590:4;25622;25617:3;25613:14;25605:22;;25519:114;;;:::o;25667:735::-;25812:3;25835:103;25931:6;25926:3;25835:103;:::i;:::-;25828:110;;25962:57;26013:5;25962:57;:::i;:::-;26042:7;26073:1;26058:319;26083:6;26080:1;26077:13;26058:319;;;26153:41;26187:6;26178:7;26153:41;:::i;:::-;26214:69;26279:3;26264:13;26214:69;:::i;:::-;26207:76;;26306:61;26360:6;26306:61;:::i;:::-;26296:71;;26118:259;26105:1;26102;26098:9;26093:14;;26058:319;;;26062:14;26393:3;26386:10;;25817:585;;25667:735;;;;;:::o;26408:351::-;26578:3;26600:133;26729:3;26720:6;26712;26600:133;:::i;:::-;26593:140;;26750:3;26743:10;;26408:351;;;;;:::o;26765:169::-;26803:3;26826:23;26843:5;26826:23;:::i;:::-;26817:32;;26871:4;26864:5;26861:15;26858:41;;26879:18;;:::i;:::-;26858:41;26926:1;26919:5;26915:13;26908:20;;26765:169;;;:::o;26968:691::-;27095:3;27118:85;27196:6;27191:3;27118:85;:::i;:::-;27111:92;;27227:57;27278:5;27227:57;:::i;:::-;27307:7;27338:1;27323:311;27348:6;27345:1;27342:13;27323:311;;;27418:41;27452:6;27443:7;27418:41;:::i;:::-;27479:61;27536:3;27521:13;27479:61;:::i;:::-;27472:68;;27563:61;27617:6;27563:61;:::i;:::-;27553:71;;27383:251;27370:1;27367;27363:9;27358:14;;27323:311;;;27327:14;27650:3;27643:10;;27100:559;;26968:691;;;;;:::o;27665:817::-;27950:4;27988:3;27977:9;27973:19;27965:27;;28038:9;28032:4;28028:20;28024:1;28013:9;28009:17;28002:47;28066:116;28177:4;28168:6;28160;28066:116;:::i;:::-;28058:124;;28229:9;28223:4;28219:20;28214:2;28203:9;28199:18;28192:48;28257:86;28338:4;28329:6;28321;28257:86;:::i;:::-;28249:94;;28353:122;28471:2;28460:9;28456:18;28447:6;28353:122;:::i;:::-;27665:817;;;;;;;;:::o;28488:600::-;28717:4;28755:3;28744:9;28740:19;28732:27;;28805:9;28799:4;28795:20;28791:1;28780:9;28776:17;28769:47;28833:116;28944:4;28935:6;28927;28833:116;:::i;:::-;28825:124;;28959:122;29077:2;29066:9;29062:18;29053:6;28959:122;:::i;:::-;28488:600;;;;;;:::o;29094:327::-;29152:6;29201:2;29189:9;29180:7;29176:23;29172:32;29169:119;;;29207:79;;:::i;:::-;29169:119;29327:1;29352:52;29396:7;29387:6;29376:9;29372:22;29352:52;:::i;:::-;29342:62;;29298:116;29094:327;;;;:::o;29427:208::-;29466:4;29486:19;29503:1;29486:19;:::i;:::-;29481:24;;29519:19;29536:1;29519:19;:::i;:::-;29514:24;;29562:1;29559;29555:9;29547:17;;29586:18;29580:4;29577:28;29574:54;;;29608:18;;:::i;:::-;29574:54;29427:208;;;;:::o;29641:275::-;29680:7;29703:19;29720:1;29703:19;:::i;:::-;29698:24;;29736:19;29753:1;29736:19;:::i;:::-;29731:24;;29790:1;29787;29783:9;29812:29;29829:11;29812:29;:::i;:::-;29801:40;;29873:11;29864:7;29861:24;29851:58;;29889:18;;:::i;:::-;29851:58;29688:228;29641:275;;;;:::o;29922:194::-;29962:4;29982:20;30000:1;29982:20;:::i;:::-;29977:25;;30016:20;30034:1;30016:20;:::i;:::-;30011:25;;30060:1;30057;30053:9;30045:17;;30084:1;30078:4;30075:11;30072:37;;;30089:18;;:::i;:::-;30072:37;29922:194;;;;:::o;30122:118::-;30209:24;30227:5;30209:24;:::i;:::-;30204:3;30197:37;30122:118;;:::o;30246:710::-;30503:4;30541:3;30530:9;30526:19;30518:27;;30591:9;30585:4;30581:20;30577:1;30566:9;30562:17;30555:47;30619:116;30730:4;30721:6;30713;30619:116;:::i;:::-;30611:124;;30745:72;30813:2;30802:9;30798:18;30789:6;30745:72;:::i;:::-;30827:122;30945:2;30934:9;30930:18;30921:6;30827:122;:::i;:::-;30246:710;;;;;;;:::o;30962:580::-;31181:4;31219:3;31208:9;31204:19;31196:27;;31269:9;31263:4;31259:20;31255:1;31244:9;31240:17;31233:47;31297:106;31398:4;31389:6;31297:106;:::i;:::-;31289:114;;31413:122;31531:2;31520:9;31516:18;31507:6;31413:122;:::i;:::-;30962:580;;;;;:::o;31548:173::-;31579:1;31596:19;31613:1;31596:19;:::i;:::-;31591:24;;31629:19;31646:1;31629:19;:::i;:::-;31624:24;;31667:1;31657:35;;31672:18;;:::i;:::-;31657:35;31713:1;31710;31706:9;31701:14;;31548:173;;;;:::o;31727:180::-;31775:77;31772:1;31765:88;31872:4;31869:1;31862:15;31896:4;31893:1;31886:15;31913:320;31957:6;31994:1;31988:4;31984:12;31974:22;;32041:1;32035:4;32031:12;32062:18;32052:81;;32118:4;32110:6;32106:17;32096:27;;32052:81;32180:2;32172:6;32169:14;32149:18;32146:38;32143:84;;32199:18;;:::i;:::-;32143:84;31964:269;31913:320;;;:::o;32239:140::-;32287:4;32310:3;32302:11;;32333:3;32330:1;32323:14;32367:4;32364:1;32354:18;32346:26;;32239:140;;;:::o;32407:827::-;32490:3;32527:5;32521:12;32556:36;32582:9;32556:36;:::i;:::-;32608:70;32671:6;32666:3;32608:70;:::i;:::-;32601:77;;32709:1;32698:9;32694:17;32725:1;32720:164;;;;32898:1;32893:335;;;;32687:541;;32720:164;32804:4;32800:9;32789;32785:25;32780:3;32773:38;32864:6;32857:14;32850:22;32844:4;32840:33;32835:3;32831:43;32824:50;;32720:164;;32893:335;32960:37;32991:5;32960:37;:::i;:::-;33019:1;33033:154;33047:6;33044:1;33041:13;33033:154;;;33121:7;33115:14;33111:1;33106:3;33102:11;33095:35;33171:1;33162:7;33158:15;33147:26;;33069:4;33066:1;33062:12;33057:17;;33033:154;;;33216:1;33211:3;33207:11;33200:18;;32900:328;;32687:541;;32494:740;;32407:827;;;;:::o;33240:791::-;33512:4;33550:3;33539:9;33535:19;33527:27;;33600:9;33594:4;33590:20;33586:1;33575:9;33571:17;33564:47;33628:73;33696:4;33687:6;33628:73;:::i;:::-;33620:81;;33748:9;33742:4;33738:20;33733:2;33722:9;33718:18;33711:48;33776:116;33887:4;33878:6;33870;33776:116;:::i;:::-;33768:124;;33902:122;34020:2;34009:9;34005:18;33996:6;33902:122;:::i;:::-;33240:791;;;;;;;:::o;34037:98::-;34088:6;34122:5;34116:12;34106:22;;34037:98;;;:::o;34141:246::-;34222:1;34232:113;34246:6;34243:1;34240:13;34232:113;;;34331:1;34326:3;34322:11;34316:18;34312:1;34307:3;34303:11;34296:39;34268:2;34265:1;34261:10;34256:15;;34232:113;;;34379:1;34370:6;34365:3;34361:16;34354:27;34203:184;34141:246;;;:::o;34393:373::-;34479:3;34507:38;34539:5;34507:38;:::i;:::-;34561:70;34624:6;34619:3;34561:70;:::i;:::-;34554:77;;34640:65;34698:6;34693:3;34686:4;34679:5;34675:16;34640:65;:::i;:::-;34730:29;34752:6;34730:29;:::i;:::-;34725:3;34721:39;34714:46;;34483:283;34393:373;;;;:::o;34772:1105::-;35121:4;35159:3;35148:9;35144:19;35136:27;;35209:9;35203:4;35199:20;35195:1;35184:9;35180:17;35173:47;35237:76;35308:4;35299:6;35237:76;:::i;:::-;35229:84;;35360:9;35354:4;35350:20;35345:2;35334:9;35330:18;35323:48;35388:106;35489:4;35480:6;35388:106;:::i;:::-;35380:114;;35541:9;35535:4;35531:20;35526:2;35515:9;35511:18;35504:48;35569:86;35650:4;35641:6;35633;35569:86;:::i;:::-;35561:94;;35665:72;35733:2;35722:9;35718:18;35709:6;35665:72;:::i;:::-;35747:123;35865:3;35854:9;35850:19;35841:6;35747:123;:::i;:::-;34772:1105;;;;;;;;;:::o;35883:93::-;35920:6;35967:2;35962;35955:5;35951:14;35947:23;35937:33;;35883:93;;;:::o;35982:107::-;36026:8;36076:5;36070:4;36066:16;36045:37;;35982:107;;;;:::o;36095:393::-;36164:6;36214:1;36202:10;36198:18;36237:97;36267:66;36256:9;36237:97;:::i;:::-;36355:39;36385:8;36374:9;36355:39;:::i;:::-;36343:51;;36427:4;36423:9;36416:5;36412:21;36403:30;;36476:4;36466:8;36462:19;36455:5;36452:30;36442:40;;36171:317;;36095:393;;;;;:::o;36494:60::-;36522:3;36543:5;36536:12;;36494:60;;;:::o;36560:142::-;36610:9;36643:53;36661:34;36670:24;36688:5;36670:24;:::i;:::-;36661:34;:::i;:::-;36643:53;:::i;:::-;36630:66;;36560:142;;;:::o;36708:75::-;36751:3;36772:5;36765:12;;36708:75;;;:::o;36789:269::-;36899:39;36930:7;36899:39;:::i;:::-;36960:91;37009:41;37033:16;37009:41;:::i;:::-;37001:6;36994:4;36988:11;36960:91;:::i;:::-;36954:4;36947:105;36865:193;36789:269;;;:::o;37064:73::-;37109:3;37064:73;:::o;37143:189::-;37220:32;;:::i;:::-;37261:65;37319:6;37311;37305:4;37261:65;:::i;:::-;37196:136;37143:189;;:::o;37338:186::-;37398:120;37415:3;37408:5;37405:14;37398:120;;;37469:39;37506:1;37499:5;37469:39;:::i;:::-;37442:1;37435:5;37431:13;37422:22;;37398:120;;;37338:186;;:::o;37530:541::-;37630:2;37625:3;37622:11;37619:445;;;37664:37;37695:5;37664:37;:::i;:::-;37747:29;37765:10;37747:29;:::i;:::-;37737:8;37733:44;37930:2;37918:10;37915:18;37912:49;;;37951:8;37936:23;;37912:49;37974:80;38030:22;38048:3;38030:22;:::i;:::-;38020:8;38016:37;38003:11;37974:80;:::i;:::-;37634:430;;37619:445;37530:541;;;:::o;38077:117::-;38131:8;38181:5;38175:4;38171:16;38150:37;;38077:117;;;;:::o;38200:169::-;38244:6;38277:51;38325:1;38321:6;38313:5;38310:1;38306:13;38277:51;:::i;:::-;38273:56;38358:4;38352;38348:15;38338:25;;38251:118;38200:169;;;;:::o;38374:295::-;38450:4;38596:29;38621:3;38615:4;38596:29;:::i;:::-;38588:37;;38658:3;38655:1;38651:11;38645:4;38642:21;38634:29;;38374:295;;;;:::o;38674:1390::-;38789:36;38821:3;38789:36;:::i;:::-;38890:18;38882:6;38879:30;38876:56;;;38912:18;;:::i;:::-;38876:56;38956:38;38988:4;38982:11;38956:38;:::i;:::-;39041:66;39100:6;39092;39086:4;39041:66;:::i;:::-;39134:1;39158:4;39145:17;;39190:2;39182:6;39179:14;39207:1;39202:617;;;;39863:1;39880:6;39877:77;;;39929:9;39924:3;39920:19;39914:26;39905:35;;39877:77;39980:67;40040:6;40033:5;39980:67;:::i;:::-;39974:4;39967:81;39836:222;39172:886;;39202:617;39254:4;39250:9;39242:6;39238:22;39288:36;39319:4;39288:36;:::i;:::-;39346:1;39360:208;39374:7;39371:1;39368:14;39360:208;;;39453:9;39448:3;39444:19;39438:26;39430:6;39423:42;39504:1;39496:6;39492:14;39482:24;;39551:2;39540:9;39536:18;39523:31;;39397:4;39394:1;39390:12;39385:17;;39360:208;;;39596:6;39587:7;39584:19;39581:179;;;39654:9;39649:3;39645:19;39639:26;39697:48;39739:4;39731:6;39727:17;39716:9;39697:48;:::i;:::-;39689:6;39682:64;39604:156;39581:179;39806:1;39802;39794:6;39790:14;39786:22;39780:4;39773:36;39209:610;;;39172:886;;38764:1300;;;38674:1390;;:::o;40070:96::-;40104:8;40153:5;40148:3;40144:15;40123:36;;40070:96;;;:::o;40172:94::-;40210:7;40239:21;40254:5;40239:21;:::i;:::-;40228:32;;40172:94;;;:::o;40272:153::-;40375:43;40394:23;40411:5;40394:23;:::i;:::-;40375:43;:::i;:::-;40370:3;40363:56;40272:153;;:::o;40431:96::-;40465:8;40514:5;40509:3;40505:15;40484:36;;40431:96;;;:::o;40533:94::-;40571:7;40600:21;40615:5;40600:21;:::i;:::-;40589:32;;40533:94;;;:::o;40633:153::-;40736:43;40755:23;40772:5;40755:23;:::i;:::-;40736:43;:::i;:::-;40731:3;40724:56;40633:153;;:::o;40792:79::-;40831:7;40860:5;40849:16;;40792:79;;;:::o;40877:157::-;40982:45;41002:24;41020:5;41002:24;:::i;:::-;40982:45;:::i;:::-;40977:3;40970:58;40877:157;;:::o;41040:96::-;41074:8;41123:5;41118:3;41114:15;41093:36;;41040:96;;;:::o;41142:93::-;41179:7;41208:21;41223:5;41208:21;:::i;:::-;41197:32;;41142:93;;;:::o;41241:95::-;41277:7;41306:24;41324:5;41306:24;:::i;:::-;41295:35;;41241:95;;;:::o;41342:145::-;41441:39;41458:21;41473:5;41458:21;:::i;:::-;41441:39;:::i;:::-;41436:3;41429:52;41342:145;;:::o;41493:792::-;41705:3;41720:73;41789:3;41780:6;41720:73;:::i;:::-;41818:1;41813:3;41809:11;41802:18;;41830:73;41899:3;41890:6;41830:73;:::i;:::-;41928:1;41923:3;41919:11;41912:18;;41940:73;42009:3;42000:6;41940:73;:::i;:::-;42038:1;42033:3;42029:11;42022:18;;42050:75;42121:3;42112:6;42050:75;:::i;:::-;42150:2;42145:3;42141:12;42134:19;;42163:69;42228:3;42219:6;42163:69;:::i;:::-;42257:1;42252:3;42248:11;42241:18;;42276:3;42269:10;;41493:792;;;;;;;;:::o;42291:200::-;42330:4;42350:19;42367:1;42350:19;:::i;:::-;42345:24;;42383:19;42400:1;42383:19;:::i;:::-;42378:24;;42426:1;42423;42419:9;42411:17;;42450:10;42444:4;42441:20;42438:46;;;42464:18;;:::i;:::-;42438:46;42291:200;;;;:::o;42497:197::-;42536:3;42555:19;42572:1;42555:19;:::i;:::-;42550:24;;42588:19;42605:1;42588:19;:::i;:::-;42583:24;;42630:1;42627;42623:9;42616:16;;42653:10;42648:3;42645:19;42642:45;;;42667:18;;:::i;:::-;42642:45;42497:197;;;;:::o;42700:118::-;42787:24;42805:5;42787:24;:::i;:::-;42782:3;42775:37;42700:118;;:::o;42824:442::-;42973:4;43011:2;43000:9;42996:18;42988:26;;43024:71;43092:1;43081:9;43077:17;43068:6;43024:71;:::i;:::-;43105:72;43173:2;43162:9;43158:18;43149:6;43105:72;:::i;:::-;43187;43255:2;43244:9;43240:18;43231:6;43187:72;:::i;:::-;42824:442;;;;;;:::o;43272:137::-;43326:5;43357:6;43351:13;43342:22;;43373:30;43397:5;43373:30;:::i;:::-;43272:137;;;;:::o;43415:345::-;43482:6;43531:2;43519:9;43510:7;43506:23;43502:32;43499:119;;;43537:79;;:::i;:::-;43499:119;43657:1;43682:61;43735:7;43726:6;43715:9;43711:22;43682:61;:::i;:::-;43672:71;;43628:125;43415:345;;;;:::o;43766:332::-;43887:4;43925:2;43914:9;43910:18;43902:26;;43938:71;44006:1;43995:9;43991:17;43982:6;43938:71;:::i;:::-;44019:72;44087:2;44076:9;44072:18;44063:6;44019:72;:::i;:::-;43766:332;;;;;:::o;44104:679::-;44300:3;44315:75;44386:3;44377:6;44315:75;:::i;:::-;44415:2;44410:3;44406:12;44399:19;;44428:75;44499:3;44490:6;44428:75;:::i;:::-;44528:2;44523:3;44519:12;44512:19;;44541:75;44612:3;44603:6;44541:75;:::i;:::-;44641:2;44636:3;44632:12;44625:19;;44654:75;44725:3;44716:6;44654:75;:::i;:::-;44754:2;44749:3;44745:12;44738:19;;44774:3;44767:10;;44104:679;;;;;;;:::o;44789:233::-;44828:3;44851:24;44869:5;44851:24;:::i;:::-;44842:33;;44897:66;44890:5;44887:77;44884:103;;44967:18;;:::i;:::-;44884:103;45014:1;45007:5;45003:13;44996:20;;44789:233;;;:::o;45028:538::-;45196:3;45211:75;45282:3;45273:6;45211:75;:::i;:::-;45311:2;45306:3;45302:12;45295:19;;45324:75;45395:3;45386:6;45324:75;:::i;:::-;45424:2;45419:3;45415:12;45408:19;;45437:75;45508:3;45499:6;45437:75;:::i;:::-;45537:2;45532:3;45528:12;45521:19;;45557:3;45550:10;;45028:538;;;;;;:::o;45572:410::-;45612:7;45635:20;45653:1;45635:20;:::i;:::-;45630:25;;45669:20;45687:1;45669:20;:::i;:::-;45664:25;;45724:1;45721;45717:9;45746:30;45764:11;45746:30;:::i;:::-;45735:41;;45925:1;45916:7;45912:15;45909:1;45906:22;45886:1;45879:9;45859:83;45836:139;;45955:18;;:::i;:::-;45836:139;45620:362;45572:410;;;;:::o;45988:171::-;46027:3;46050:24;46068:5;46050:24;:::i;:::-;46041:33;;46096:4;46089:5;46086:15;46083:41;;46104:18;;:::i;:::-;46083:41;46151:1;46144:5;46140:13;46133:20;;45988:171;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_validatorPKs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_numberOfValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"publicKeyId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"check_removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"helper_registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorIds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "6080604052600060035534801561001557600080fd5b506144cd806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100a95760003560e01c8063686e682c11610071578063686e682c14610116578063bc26e7e514610132578063bf0f2fb21461014e578063bfbdaffd1461016a578063d7b8edbd1461019a578063d86eda8c146101b6576100a9565b806301ddff09146100ae57806306e8fb9c146100b857806312b3fc19146100d45780635fec6dd0146100f0578063626b6b8d1461010c575b600080fd5b6100b66101d2565b005b6100d260048036038101906100cd9190612f5d565b61025f565b005b6100ee60048036038101906100e9919061308c565b610d2a565b005b61010a60048036038101906101059190613121565b610feb565b005b6101146112aa565b005b610130600480360381019061012b9190613121565b6112ac565b005b61014c600480360381019061014791906131f3565b611613565b005b6101686004803603810190610163919061327c565b61171c565b005b610184600480360381019061017f91906132eb565b61197c565b6040516101919190613327565b60405180910390f35b6101b460048036038101906101af9190613342565b6119ba565b005b6101d060048036038101906101cb91906133b6565b611a6b565b005b60006101dc611c6f565b905060005b6001805490508167ffffffffffffffff16101561025b576000801b82600101600060018467ffffffffffffffff16815481106102205761021f61342a565b5b90600052602060002001548152602001908152602001600020541461024857610247613459565b5b8080610253906134b7565b9150506101e1565b5050565b6000610269611c6f565b90506000610275611cab565b9050600087519050600467ffffffffffffffff168110806102a05750600d67ffffffffffffffff1681115b806102c257506001600367ffffffffffffffff16826102bf9190613516565b14155b156102f9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a905014610340576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a33604051602001610357939291906135ce565b6040516020818303038152906040528051906020012090506000801b84600001600083815260200190815260200160002054146103c0576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016103d391906136b0565b6040516020818303038152906040528051906020012060001c1760001b84600001600083815260200190815260200160002081905550506000338960405160200161041f9291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036104f7576000866000015163ffffffff1614158061048457506000866020015167ffffffffffffffff1614155b8061049e57506000866040015167ffffffffffffffff1614155b806104ae57506000866080015114155b806104bb57508560600151155b156104f2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610542565b61050086611ce7565b8114610538576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61054186611d33565b5b50858560800181815161055591906136ef565b915081815250506000856060015115610bd7576000805b84811015610ba15760008c82815181106105895761058861342a565b5b60200260200101519050856001836105a191906136ef565b101561068f578c6001836105b591906136ef565b815181106105c6576105c561342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff16111561061b576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c60018361062991906136ef565b8151811061063a5761063961342a565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361068e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610876576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156109705760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561093757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561096e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61097981611d71565b87600001600c9054906101000a900463ffffffff1663ffffffff168160000180516109a390613723565b63ffffffff16908163ffffffff1681525063ffffffff1611156109f2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516020015184610a06919061374f565b9350806020015185610a18919061374f565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061056c565b50610bbf81610baf87611e39565b89611eae9092919063ffffffff16565b610bd560018087611efe9092919063ffffffff16565b505b856000018051610be690613723565b63ffffffff16908163ffffffff1681525050610c59818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15610c90576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9986611ce7565b8560010160008481526020019081526020016000208190555060008714610cc457610cc387612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610d14969594939291906138f4565b60405180910390a2505050505050505050505050565b6000610d34611c6f565b90506000868633604051602001610d4d939291906135ce565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610dc5576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610ddb9291906139de565b604051602081830303815290604052805190602001201690508083831614610e2f576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e89338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a612156909392919063ffffffff16565b9050866060015115610f2c576000610ee68a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a61222e565b5090506000610ef3611cab565b9050610f1282610f0283611e39565b8b611eae9092919063ffffffff16565b610f296000600183611efe9092919063ffffffff16565b50505b866000018051610f3b906139f7565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610f6f87611ce7565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610fd6959493929190613a7d565b60405180910390a25050505050505050505050565b6000610ff5611c6f565b9050600061105133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905082606001511561108f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611099611cab565b90506000806110f0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600188600001518861222e565b91509150868660800181815161110691906136ef565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff168152505061114783611e39565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506111806001876000015185611efe9092919063ffffffff16565b6111e1818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611fdd90949392919063ffffffff16565b15611218576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122186611ce7565b85600101600086815260200190815260200160002081905550600087111561124d5761124c87612072565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a8960405161129793929190613ac6565b60405180910390a2505050505050505050565b565b60006112b6611c6f565b9050600061131233878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b905061131d83611d33565b6000611327611cab565b905060008460600151156114765760008089899050905060005b81811015611455576000611353611c6f565b60060160008d8d8581811061136b5761136a61342a565b5b90506020020160208101906113809190613af8565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff16436113e69190613b25565b6113f09190613b61565b8160020160000160049054906101000a900467ffffffffffffffff16611416919061374f565b84611421919061374f565b93508060000160049054906101000a900467ffffffffffffffff1685611447919061374f565b945081600101915050611341565b50506114748161146485611e39565b88611eae9092919063ffffffff16565b505b85856080015110156114b4576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516114c69190613b9e565b91508181525050846060015180156114e957506000856000015163ffffffff1614155b80156115525750611551818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611fdd90949392919063ffffffff16565b5b15611589576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159285611ce7565b846001016000858152602001908152602001600020819055506115b5338761240a565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516116019493929190613be1565b60405180910390a25050505050505050565b600061161d611c6f565b9050600061167987878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486612156909392919063ffffffff16565b9050838360800181815161168d91906136ef565b9150818152505061169d83611ce7565b826001016000838152602001908152602001600020819055506116bf84612072565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a28787878760405161170b9493929190613be1565b60405180910390a250505050505050565b6000611726611c6f565b9050600061174185858486612156909392919063ffffffff16565b905061174c83611d33565b6000611756611cab565b905060008061176c87600088600001518861222e565b9150915061178d8261177d85611e39565b886124ed9092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156118295750611827828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611fdd90949392919063ffffffff16565b155b15611860576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187a6000886000015186611efe9092919063ffffffff16565b6000876080015114611899578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506118f587611ce7565b866001016000878152602001908152602001600020819055506000811461192157611920338261240a565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611969929190613c21565b60405180910390a2505050505050505050565b6002818154811061198c57600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080549050846119cb9190613c51565b93503073ffffffffffffffffffffffffffffffffffffffff166312b3fc1960008667ffffffffffffffff1681548110611a0757611a0661342a565b5b906000526020600020018585856040518563ffffffff1660e01b8152600401611a339493929190613d7b565b600060405180830381600087803b158015611a4d57600080fd5b505af1158015611a61573d6000803e3d6000fd5b5050505050505050565b6000611a75611c6f565b90506000611a816125a1565b90506000611a8d6126b8565b905060003382604051602001611aa49291906136c7565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b8103611b5c576000866000019063ffffffff16908163ffffffff16815250506000866020019067ffffffffffffffff16908167ffffffffffffffff16815250506000866040019067ffffffffffffffff16908167ffffffffffffffff168152505060008660800181815250506001866060019015159081151581525050611b7f565b611b6586611ce7565b856001016000848152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff166306e8fb9c85858c8c8c8c6040518763ffffffff1660e01b8152600401611bc296959493929190613e30565b600060405180830381600087803b158015611bdc57600080fd5b505af1925050508015611bed575060015b611c05576000611c0057611bff613459565b5b611c64565b600084908060018154018082558091505060019003906000526020600020016000909190919091509081611c399190614032565b5060018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c611ca29190613b9e565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c611cde9190613b9e565b90508091505090565b600081600001518260200151836040015184608001518560600151604051602001611d169594939291906141d9565b604051602081830303815290604052805190602001209050919050565b8060600151611d6e576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611d8c9190614238565b63ffffffff16611d9c9190613b61565b9050808260800151602001818151611db4919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681611de79190613b61565b8260800151604001818151611dfc919061374f565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611e7a9190613b9e565b611e849190613b61565b8260000160189054906101000a900467ffffffffffffffff16611ea7919061374f565b9050919050565b611eb98383836124ed565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611f07836128e6565b81611f5257808360000160048282829054906101000a900463ffffffff16611f2f9190614238565b92506101000a81548163ffffffff021916908363ffffffff160217905550611fd8565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611f7c9190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611fd7576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614612068576120038267ffffffffffffffff1661293f565b866080015110156120175760019050612069565b6000866000015163ffffffff168587612030919061374f565b8561203b9190613b61565b6120459190613b61565b905061205a8167ffffffffffffffff1661293f565b876080015110915050612069565b5b95945050505050565b61207a611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120da939291906142b7565b6020604051808303816000875af11580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614303565b612153576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080848460405160200161216c9291906136c7565b604051602081830303815290604052805190602001209050600061218f87611ce7565b905060008460010160008481526020019081526020016000205490506000801b81036121e7576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114612220576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b86518110156124005760008782815181106122525761225161342a565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16146123ca576122b781612961565b8761230257868160000160008282829054906101000a900463ffffffff166122df9190614238565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123a3565b61230a611cab565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff166123479190614270565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156123a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff16846123c7919061374f565b93505b8060020160000160049054906101000a900467ffffffffffffffff16856123f1919061374f565b94508260010192505050612234565b5094509492505050565b612412611c6f565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612470929190614330565b6020604051808303816000875af115801561248f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b39190614303565b6124e9576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff1684602001518361250a9190613b25565b6125149190613b61565b9050600081856000015163ffffffff168660400151866125349190613b25565b61253e9190613b61565b612548919061374f565b905084608001516125628267ffffffffffffffff1661293f565b1161258e5761257a8167ffffffffffffffff1661293f565b85608001516125899190613b9e565b612591565b60005b8560800181815250505050505050565b60606000603067ffffffffffffffff8111156125c0576125bf612ca4565b5b6040519080825280601f01601f1916602001820160405280156125f25781602001600182028036833780820191505090505b50905060005b60308110156126985761010060035442338460405160200161261d9493929190614359565b6040516020818303038152906040528051906020012060001c6126409190613516565b60f81b8282815181106126565761265561342a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612690906143a7565b9150506125f8565b50600360008154809291906126ac906143a7565b91905055508091505090565b60606000600467ffffffffffffffff1642336003546040516020016126df939291906143ef565b6040516020818303038152906040528051906020012060001c6127029190613516565b90506000600382612713919061442c565b600461271f91906136ef565b905060036000815480929190612734906143a7565b91905055508067ffffffffffffffff81111561275357612752612ca4565b5b6040519080825280602002602001820160405280156127815781602001602082028036833780820191505090505b50925060005b818110156128e0576000805b600360008154809291906127a6906143a7565b91905055506127b3612aa0565b91506127be82612aeb565b15905080156127935760008390505b60008111801561281657508267ffffffffffffffff16876001836127f19190613b9e565b815181106128025761280161342a565b5b602002602001015167ffffffffffffffff16115b1561289457865181101561288157866001826128329190613b9e565b815181106128435761284261342a565b5b602002602001015187828151811061285e5761285d61342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff16815250505b808061288c9061446e565b9150506127cd565b828782815181106128a8576128a761342a565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505050505080806128d8906143a7565b915050612787565b50505090565b6128ef81612b80565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff1661295a919061442c565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff164361299f9190614238565b63ffffffff166129af9190613b61565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166129db919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff1681612a279190613b61565b82600201600001600c8282829054906101000a900467ffffffffffffffff16612a50919061374f565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000680100000000000000004233600354604051602001612ac3939291906143ef565b6040516020818303038152906040528051906020012060001c612ae69190613516565b905090565b600080600090505b600280549050811015612b75578267ffffffffffffffff1660028281548110612b1f57612b1e61342a565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b62576001915050612b7b565b8080612b6d906143a7565b915050612af3565b50600090505b919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612bdc9190613b25565b612be69190613b61565b612bf09190613b61565b8260010160009054906101000a900467ffffffffffffffff16612c13919061374f565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612c5357612c52612c2e565b5b8235905067ffffffffffffffff811115612c7057612c6f612c33565b5b602083019150836001820283011115612c8c57612c8b612c38565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612c93565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612c1a565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b612d6881612d4b565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612d1f565b612d04565b90508083825260208201905060208402830185811115612dc157612dc0612c38565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c2e565b5b8135612e19848260208601612d8b565b91505092915050565b6000819050919050565b612e3581612e22565b8114612e4057600080fd5b50565b600081359050612e5281612e2c565b92915050565b600080fd5b600063ffffffff82169050919050565b612e7681612e5d565b8114612e8157600080fd5b50565b600081359050612e9381612e6d565b92915050565b60008115159050919050565b612eae81612e99565b8114612eb957600080fd5b50565b600081359050612ecb81612ea5565b92915050565b600060a08284031215612ee757612ee6612e58565b5b612ef160a0612d04565b90506000612f0184828501612e84565b6000830152506020612f1584828501612d76565b6020830152506040612f2984828501612d76565b6040830152506060612f3d84828501612ebc565b6060830152506080612f5184828501612e43565b60808301525092915050565b6000806000806000806000610120888a031215612f7d57612f7c612c24565b5b600088013567ffffffffffffffff811115612f9b57612f9a612c29565b5b612fa78a828b01612c3d565b9750975050602088013567ffffffffffffffff811115612fca57612fc9612c29565b5b612fd68a828b01612df4565b955050604088013567ffffffffffffffff811115612ff757612ff6612c29565b5b6130038a828b01612c3d565b945094505060606130168a828b01612e43565b92505060806130278a828b01612ed1565b91505092959891949750929550565b60008083601f84011261304c5761304b612c2e565b5b8235905067ffffffffffffffff81111561306957613068612c33565b5b60208301915083602082028301111561308557613084612c38565b5b9250929050565b600080600080600060e086880312156130a8576130a7612c24565b5b600086013567ffffffffffffffff8111156130c6576130c5612c29565b5b6130d288828901612c3d565b9550955050602086013567ffffffffffffffff8111156130f5576130f4612c29565b5b61310188828901613036565b9350935050604061311488828901612ed1565b9150509295509295909350565b60008060008060e0858703121561313b5761313a612c24565b5b600085013567ffffffffffffffff81111561315957613158612c29565b5b61316587828801613036565b9450945050602061317887828801612e43565b925050604061318987828801612ed1565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b600080600080600061010086880312156132105761320f612c24565b5b600061321e888289016131de565b955050602086013567ffffffffffffffff81111561323f5761323e612c29565b5b61324b88828901613036565b9450945050604061325e88828901612e43565b925050606061326f88828901612ed1565b9150509295509295909350565b600080600060e0848603121561329557613294612c24565b5b60006132a3868287016131de565b935050602084013567ffffffffffffffff8111156132c4576132c3612c29565b5b6132d086828701612df4565b92505060406132e186828701612ed1565b9150509250925092565b60006020828403121561330157613300612c24565b5b600061330f84828501612e43565b91505092915050565b61332181612d4b565b82525050565b600060208201905061333c6000830184613318565b92915050565b60008060008060e0858703121561335c5761335b612c24565b5b600061336a87828801612d76565b945050602085013567ffffffffffffffff81111561338b5761338a612c29565b5b61339787828801613036565b935093505060406133aa87828801612ed1565b91505092959194509250565b60008060008060e085870312156133d0576133cf612c24565b5b600085013567ffffffffffffffff8111156133ee576133ed612c29565b5b6133fa87828801612c3d565b9450945050602061340d87828801612e43565b925050604061341e87828801612ed1565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c282612d4b565b915067ffffffffffffffff82036134dc576134db613488565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352182612e22565b915061352c83612e22565b92508261353c5761353b6134e7565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b600061356d8385613547565b935061357a838584613552565b82840190509392505050565b60008160601b9050919050565b600061359e82613586565b9050919050565b60006135b082613593565b9050919050565b6135c86135c3826131b5565b6135a5565b82525050565b60006135db828587613561565b91506135e782846135b7565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b61362781612d4b565b82525050565b6000613639838361361e565b60208301905092915050565b6000602082019050919050565b600061365d826135f8565b6136678185613603565b93506136728361360e565b8060005b838110156136a357815161368a888261362d565b975061369583613645565b925050600181019050613676565b5085935050505092915050565b60006136bc8284613652565b915081905092915050565b60006136d382856135b7565b6014820191506136e38284613652565b91508190509392505050565b60006136fa82612e22565b915061370583612e22565b925082820190508082111561371d5761371c613488565b5b92915050565b600061372e82612e5d565b915063ffffffff820361374457613743613488565b5b600182019050919050565b600061375a82612d4b565b915061376583612d4b565b9250828201905067ffffffffffffffff81111561378557613784613488565b5b92915050565b600082825260208201905092915050565b6137a581612d4b565b82525050565b60006137b7838361379c565b60208301905092915050565b60006137ce826135f8565b6137d8818561378b565b93506137e38361360e565b8060005b838110156138145781516137fb88826137ab565b975061380683613645565b9250506001810190506137e7565b5085935050505092915050565b600082825260208201905092915050565b600061383e8385613821565b935061384b838584613552565b61385483612c93565b840190509392505050565b61386881612e5d565b82525050565b61387781612e99565b82525050565b61388681612e22565b82525050565b60a0820160008201516138a2600085018261385f565b5060208201516138b5602085018261379c565b5060408201516138c8604085018261379c565b5060608201516138db606085018261386e565b5060808201516138ee608085018261387d565b50505050565b600061010082019050818103600083015261390f81896137c3565b90508181036020830152613924818789613832565b90508181036040830152613939818587613832565b9050613948606083018461388c565b979650505050505050565b6000819050919050565b600061396c6020840184612d76565b905092915050565b6000602082019050919050565b600061398d8385613603565b935061399882613953565b8060005b858110156139d1576139ae828461395d565b6139b8888261362d565b97506139c383613974565b92505060018101905061399c565b5085925050509392505050565b60006139eb828486613981565b91508190509392505050565b6000613a0282612e5d565b915060008203613a1557613a14613488565b5b600182039050919050565b6000613a2c838561378b565b9350613a3782613953565b8060005b85811015613a7057613a4d828461395d565b613a5788826137ab565b9750613a6283613974565b925050600181019050613a3b565b5085925050509392505050565b600060e0820190508181036000830152613a98818789613a20565b90508181036020830152613aad818587613832565b9050613abc604083018461388c565b9695505050505050565b600060c0820190508181036000830152613ae1818587613a20565b9050613af0602083018461388c565b949350505050565b600060208284031215613b0e57613b0d612c24565b5b6000613b1c84828501612d76565b91505092915050565b6000613b3082612d4b565b9150613b3b83612d4b565b9250828203905067ffffffffffffffff811115613b5b57613b5a613488565b5b92915050565b6000613b6c82612d4b565b9150613b7783612d4b565b9250828202613b8581612d4b565b9150808214613b9757613b96613488565b5b5092915050565b6000613ba982612e22565b9150613bb483612e22565b9250828203905081811115613bcc57613bcb613488565b5b92915050565b613bdb81612e22565b82525050565b600060e0820190508181036000830152613bfc818688613a20565b9050613c0b6020830185613bd2565b613c18604083018461388c565b95945050505050565b600060c0820190508181036000830152613c3b81856137c3565b9050613c4a602083018461388c565b9392505050565b6000613c5c82612d4b565b9150613c6783612d4b565b925082613c7757613c766134e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b60008190508160005260206000209050919050565b60008154613d0481613cb1565b613d0e8186613821565b94506001821660008114613d295760018114613d3f57613d72565b60ff198316865281151560200286019350613d72565b613d4885613ce2565b60005b83811015613d6a57815481890152600182019150602081019050613d4b565b808801955050505b50505092915050565b600060e0820190508181036000830152613d958187613cf7565b90508181036020830152613daa818587613a20565b9050613db9604083018461388c565b95945050505050565b600081519050919050565b60005b83811015613deb578082015181840152602081019050613dd0565b60008484015250505050565b6000613e0282613dc2565b613e0c8185613821565b9350613e1c818560208601613dcd565b613e2581612c93565b840191505092915050565b6000610120820190508181036000830152613e4b8189613df7565b90508181036020830152613e5f81886137c3565b90508181036040830152613e74818688613832565b9050613e836060830185613bd2565b613e90608083018461388c565b979650505050505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ee87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eab565b613ef28683613eab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f2f613f2a613f2584612e22565b613f0a565b612e22565b9050919050565b6000819050919050565b613f4983613f14565b613f5d613f5582613f36565b848454613eb8565b825550505050565b600090565b613f72613f65565b613f7d818484613f40565b505050565b5b81811015613fa157613f96600082613f6a565b600181019050613f83565b5050565b601f821115613fe657613fb781613ce2565b613fc084613e9b565b81016020851015613fcf578190505b613fe3613fdb85613e9b565b830182613f82565b50505b505050565b600082821c905092915050565b600061400960001984600802613feb565b1980831691505092915050565b60006140228383613ff8565b9150826002028217905092915050565b61403b82613dc2565b67ffffffffffffffff81111561405457614053612ca4565b5b61405e8254613cb1565b614069828285613fa5565b600060209050601f83116001811461409c576000841561408a578287015190505b6140948582614016565b8655506140fc565b601f1984166140aa86613ce2565b60005b828110156140d2578489015182556001820191506020850194506020810190506140ad565b868310156140ef57848901516140eb601f891682613ff8565b8355505b6001600288020188555050505b505050505050565b60008160e01b9050919050565b600061411c82614104565b9050919050565b61413461412f82612e5d565b614111565b82525050565b60008160c01b9050919050565b60006141528261413a565b9050919050565b61416a61416582612d4b565b614147565b82525050565b6000819050919050565b61418b61418682612e22565b614170565b82525050565b60008160f81b9050919050565b60006141a982614191565b9050919050565b60006141bb8261419e565b9050919050565b6141d36141ce82612e99565b6141b0565b82525050565b60006141e58288614123565b6004820191506141f58287614159565b6008820191506142058286614159565b600882019150614215828561417a565b60208201915061422582846141c2565b6001820191508190509695505050505050565b600061424382612e5d565b915061424e83612e5d565b9250828203905063ffffffff81111561426a57614269613488565b5b92915050565b600061427b82612e5d565b915061428683612e5d565b9250828201905063ffffffff8111156142a2576142a1613488565b5b92915050565b6142b1816131b5565b82525050565b60006060820190506142cc60008301866142a8565b6142d960208301856142a8565b6142e66040830184613bd2565b949350505050565b6000815190506142fd81612ea5565b92915050565b60006020828403121561431957614318612c24565b5b6000614327848285016142ee565b91505092915050565b600060408201905061434560008301856142a8565b6143526020830184613bd2565b9392505050565b6000614365828761417a565b602082019150614375828661417a565b60208201915061438582856135b7565b601482019150614395828461417a565b60208201915081905095945050505050565b60006143b282612e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e4576143e3613488565b5b600182019050919050565b60006143fb828661417a565b60208201915061440b82856135b7565b60148201915061441b828461417a565b602082019150819050949350505050565b600061443782612e22565b915061444283612e22565b925082820261445081612e22565b9150828204841483151761446757614466613488565b5b5092915050565b600061447982612e22565b91506000820361448c5761448b613488565b5b60018203905091905056fea2646970667358221220e750a92e16948e20f906bdcf6a36192e432c2c112e7f68f62939a37a697d043564736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVClusters.sol:SSVClusters": {"srcmap": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "347:11155:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:4084;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4812:1524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7889:1278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9707:1793;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:528;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6342:1541;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;722:4084;945:21;969:17;:15;:17::i;:::-;945:41;;996:26;1025:25;:23;:25::i;:::-;996:54;;1061:23;1087:11;:18;1061:44;;550:1;1150:38;;:15;:38;:96;;;;604:2;1208:38;;:15;:38;1150:96;:162;;;;1311:1;662;1266:41;;:15;:41;;;;:::i;:::-;:46;;1150:162;1129:264;;;1352:26;;;;;;;;;;;;;;1129:264;713:2;1411:37;;:9;;:16;;:37;1407:74;;1457:24;;;;;;;;;;;;;;1407:74;1496:16;1542:9;;1553:10;1525:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1515:50;;;;;;1496:69;;1620:1;1612:10;;1584:1;:14;;:24;1599:8;1584:24;;;;;;;;;;;;:38;1580:108;;1649:24;;;;;;;;;;;;;;1580:108;1797:4;1772:11;1755:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;1745:40;;;;;;1737:49;;:65;1729:74;;1702:1;:14;;:24;1717:8;1702:24;;;;;;;;;;;:101;;;;1115:715;1839:21;1890:10;1902:11;1873:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1863:52;;;;;;1839:76;;1940:19;1962:1;:10;;:25;1973:13;1962:25;;;;;;;;;;;;1940:47;;2028:1;2020:10;;2005:11;:25;2001:576;;2101:1;2075:7;:22;;;:27;;;;:79;;;;2153:1;2126:7;:23;;;:28;;;;2075:79;:121;;;;2195:1;2178:7;:13;;;:18;;;;2075:121;:165;;;;2239:1;2220:7;:15;;;:20;;2075:165;:204;;;;2265:7;:14;;;2264:15;2075:204;2050:319;;;2327:23;;;;;;;;;;;;;;2050:319;2001:576;;;2408:25;:7;:23;:25::i;:::-;2393:11;:40;2389:188;;2460:23;;;;;;;;;;;;;;2389:188;2522:40;:7;:38;:40::i;:::-;2001:576;1926:661;2616:6;2597:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;2633:15;2663:7;:14;;;2659:1596;;;2693:19;2732:9;2727:1400;2747:15;2743:1;:19;2727:1400;;;2784:17;2804:11;2816:1;2804:14;;;;;;;;:::i;:::-;;;;;;;;2784:34;;2870:15;2866:1;2862;:5;;;;:::i;:::-;:23;2858:333;;;2930:11;2946:1;2942;:5;;;;:::i;:::-;2930:18;;;;;;;;:::i;:::-;;;;;;;;2917:31;;:10;:31;;;2913:256;;;2987:23;;;;;;;;;;;;;;2913:256;3061:11;3077:1;3073;:5;;;;:::i;:::-;3061:18;;;;;;;;:::i;:::-;;;;;;;;3047:32;;:10;:32;;;3043:126;;3118:24;;;;;;;;;;;;;;3043:126;2858:333;3227:24;3254:1;:11;;:23;3266:10;3254:23;;;;;;;;;;;;;;;3227:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:1;3299:8;:17;;;:23;;;:28;;;3295:104;;3358:22;;;;;;;;;;;;;;3295:104;3420:8;:20;;;3416:280;;;3464:19;3486:1;:20;;:32;3507:10;3486:32;;;;;;;;;;;;;;;;;;;;;;;;;3464:54;;3567:1;3544:25;;:11;:25;;;;:54;;;;;3588:10;3573:25;;:11;:25;;;;3544:54;3540:138;;;3633:22;;;;;;;;;;;;;;3540:138;3442:254;3416:280;3713:25;:8;:23;:25::i;:::-;3788:2;:29;;;;;;;;;;;;3760:57;;3762:8;:23;;3760:25;;;;;:::i;:::-;;;;;;;;;;:57;;;3756:133;;;3848:22;;;;;;;;;;;;;;3756:133;3922:8;:17;;;:23;;;3906:39;;;;;:::i;:::-;;;3975:8;:12;;;3963:24;;;;;:::i;:::-;;;4032:8;4006:1;:11;;:23;4018:10;4006:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4091:3;;;;;2766:1361;;2727:1400;;;;4140:68;4166:12;4180:27;:2;:25;:27::i;:::-;4140:7;:25;;:68;;;;;:::i;:::-;4223:21;4236:4;4242:1;4223:2;:12;;:21;;;;;:::i;:::-;2679:1576;2659:1596;4267:7;:22;;4265:24;;;;;:::i;:::-;;;;;;;;;;;4317:193;4357:8;4383:2;:13;;;;;;;;;;;;4414:2;:33;;;;;;;;;;;;4465:2;:31;;;;;;;;;;;;4317:7;:22;;:193;;;;;;;:::i;:::-;4300:274;;;4542:21;;;;;;;;;;;;;;4300:274;4612:25;:7;:23;:25::i;:::-;4584:1;:10;;:25;4595:13;4584:25;;;;;;;;;;;:53;;;;4662:1;4652:6;:11;4648:65;;4679:23;4695:6;4679:15;:23::i;:::-;4648:65;4743:10;4728:71;;;4755:11;4768:9;;4779:10;;4791:7;4728:71;;;;;;;;;;;:::i;:::-;;;;;;;;935:3871;;;;;722:4084;;;;;;;:::o;4812:1524::-;4976:21;5000:17;:15;:17::i;:::-;4976:41;;5028:23;5081:9;;5092:10;5064:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5054:50;;;;;;5028:76;;5115:12;5147:1;5131:19;;5130:20;5115:35;;5192:21;5216:1;:14;;:31;5231:15;5216:31;;;;;;;;;;;;5192:55;;5287:1;5279:10;;5262:13;:27;5258:88;;5312:23;;;;;;;;;;;;;;5258:88;5356:25;5427:4;5411:11;;5394:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5384:40;;;;;;:47;5356:75;;5509:17;5500:4;5484:13;:20;5483:43;5479:168;;5611:25;;;;;;;;;;;;;;5479:168;5657:21;5681:57;5711:10;5723:11;;5681:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:1;5681:7;:29;;:57;;;;;;:::i;:::-;5657:81;;5767:7;:14;;;5763:332;;;5802:19;5827:53;5855:11;;5827:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:5;5875:1;5878;5827:27;:53::i;:::-;5801:79;;;5898:26;5927:25;:23;:25::i;:::-;5898:54;;5971:68;5997:12;6011:27;:2;:25;:27::i;:::-;5971:7;:25;;:68;;;;;:::i;:::-;6058:22;6071:5;6078:1;6058:2;:12;;:22;;;;;:::i;:::-;5783:312;;5763:332;6117:7;:22;;6115:24;;;;;:::i;:::-;;;;;;;;;;;6157:1;:14;;:31;6172:15;6157:31;;;;;;;;;;;6150:38;;;6227:25;:7;:23;:25::i;:::-;6199:1;:10;;:25;6210:13;6199:25;;;;;;;;;;;:53;;;;6285:10;6268:61;;;6297:11;;6310:9;;6321:7;6268:61;;;;;;;;;;:::i;:::-;;;;;;;;4966:1370;;;;;;4812:1524;;;;;:::o;7889:1278::-;8008:21;8032:17;:15;:17::i;:::-;8008:41;;8060:21;8084:57;8114:10;8126:11;;8084:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:1;8084:7;:29;;:57;;;;;;:::i;:::-;8060:81;;8155:7;:14;;;8151:50;;;8178:23;;;;;;;;;;;;;;8151:50;8212:26;8241:25;:23;:25::i;:::-;8212:54;;8278:19;8299:15;8318:131;8359:11;;8318:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8384:4;8402:7;:22;;;8438:1;8318:27;:131::i;:::-;8277:172;;;;8479:6;8460:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;8512:4;8495:7;:14;;:21;;;;;;;;;;;8542:12;8526:7;:13;;:28;;;;;;;;;;;8590:27;:2;:25;:27::i;:::-;8564:7;:23;;:53;;;;;;;;;;;8628:42;8641:4;8647:7;:22;;;8628:2;:12;;:42;;;;;:::i;:::-;8698:193;8738:8;8764:2;:13;;;;;;;;;;;;8795:2;:33;;;;;;;;;;;;8846:2;:31;;;;;;;;;;;;8698:7;:22;;:193;;;;;;;:::i;:::-;8681:274;;;8923:21;;;;;;;;;;;;;;8681:274;8993:25;:7;:23;:25::i;:::-;8965:1;:10;;:25;8976:13;8965:25;;;;;;;;;;;:53;;;;9042:1;9033:6;:10;9029:64;;;9059:23;9075:6;9059:15;:23::i;:::-;9029:64;9127:10;9108:52;;;9139:11;;9152:7;9108:52;;;;;;;;:::i;:::-;;;;;;;;7998:1169;;;;;7889:1278;;;;:::o;9707:1793::-;9824:21;9848:17;:15;:17::i;:::-;9824:41;;9876:21;9900:57;9930:10;9942:11;;9900:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:1;9900:7;:29;;:57;;;;;;:::i;:::-;9876:81;;9967:40;:7;:38;:40::i;:::-;10018:26;10047:25;:23;:25::i;:::-;10018:54;;10083:15;10112:7;:14;;;10108:733;;;10142:19;10193:23;10219:11;;:18;;10193:44;;10260:9;10255:479;10275:15;10271:1;:19;10255:479;;;10316:25;10344:17;:15;:17::i;:::-;:27;;:43;10372:11;;10384:1;10372:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10344:43;;;;;;;;;;;;;;;10316:71;;10574:8;:12;;;;;;;;;;;;10523:8;:17;;:23;;;;;;;;;;;;10500:46;;10507:12;10500:46;;;;:::i;:::-;10499:87;;;;:::i;:::-;10449:8;:17;;:23;;;;;;;;;;;;:137;;;;:::i;:::-;10409:177;;;;;:::i;:::-;;;10620:8;:12;;;;;;;;;;;;10608:24;;;;;:::i;:::-;;;10690:3;;;;;10294:440;10255:479;;;;10175:573;10762:68;10788:12;10802:27;:2;:25;:27::i;:::-;10762:7;:25;;:68;;;;;:::i;:::-;10128:713;10108:733;10872:6;10854:7;:15;;;:24;10850:58;;;10887:21;;;;;;;;;;;;;;10850:58;10938:6;10919:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;10972:7;:14;;;:57;;;;;11028:1;11002:7;:22;;;:27;;;;10972:57;:266;;;;;11045:193;11085:8;11111:2;:13;;;;;;;;;;;;11142:2;:33;;;;;;;;;;;;11193:2;:31;;;;;;;;;;;;11045:7;:22;;:193;;;;;;;:::i;:::-;10972:266;10955:347;;;11270:21;;;;;;;;;;;;;;10955:347;11340:25;:7;:23;:25::i;:::-;11312:1;:10;;:25;11323:13;11312:25;;;;;;;;;;;:53;;;;11376:43;11400:10;11412:6;11376:23;:43::i;:::-;11452:10;11435:58;;;11464:11;;11477:6;11485:7;11435:58;;;;;;;;;:::i;:::-;;;;;;;;9814:1686;;;;9707:1793;;;;:::o;9173:528::-;9349:21;9373:17;:15;:17::i;:::-;9349:41;;9401:21;9425:59;9455:12;9469:11;;9425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:1;9425:7;:29;;:59;;;;;;:::i;:::-;9401:83;;9514:6;9495:7;:15;;:25;;;;;;;:::i;:::-;;;;;;;;9559;:7;:23;:25::i;:::-;9531:1;:10;;:25;9542:13;9531:25;;;;;;;;;;;:53;;;;9595:23;9611:6;9595:15;:23::i;:::-;9651:12;9634:60;;;9665:11;;9678:6;9686:7;9634:60;;;;;;;;;:::i;:::-;;;;;;;;9339:362;;9173:528;;;;;:::o;6342:1541::-;6464:21;6488:17;:15;:17::i;:::-;6464:41;;6516:21;6540:59;6570:12;6584:11;6597:1;6540:7;:29;;:59;;;;;;:::i;:::-;6516:83;;6609:40;:7;:38;:40::i;:::-;6660:26;6689:25;:23;:25::i;:::-;6660:54;;6726:19;6747:15;6766:132;6807:11;6832:5;6851:7;:22;;;6887:1;6766:27;:132::i;:::-;6725:173;;;;6909:64;6931:12;6945:27;:2;:25;:27::i;:::-;6909:7;:21;;:64;;;;;:::i;:::-;6984:27;7055:10;7039:26;;:12;:26;;;;:236;;;;;7082:193;7122:8;7148:2;:13;;;;;;;;;;;;7179:2;:33;;;;;;;;;;;;7230:2;:31;;;;;;;;;;;;7082:7;:22;;:193;;;;;;;:::i;:::-;7081:194;7039:236;7022:320;;;7307:24;;;;;;;;;;;;;;7022:320;7352:43;7365:5;7372:7;:22;;;7352:2;:12;;:43;;;;;:::i;:::-;7429:1;7410:7;:15;;;:20;7406:121;;7468:7;:15;;;7446:37;;7515:1;7497:7;:15;;:19;;;;;7406:121;7552:1;7536:7;:13;;:17;;;;;;;;;;;7589:1;7563:7;:23;;:27;;;;;;;;;;;7617:5;7600:7;:14;;:22;;;;;;;;;;;7661:25;:7;:23;:25::i;:::-;7633:1;:10;;:25;7644:13;7633:25;;;;;;;;;;;:53;;;;7724:1;7701:19;:24;7697:111;;7741:56;7765:10;7777:19;7741:23;:56::i;:::-;7697:111;7841:12;7823:53;;;7855:11;7868:7;7823:53;;;;;;;:::i;:::-;;;;;;;;6454:1429;;;;;;6342:1541;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;2531:405:2:-;2619:7;2722;:22;;;2766:7;:23;;;2811:7;:13;;;2846:7;:15;;;2883:7;:14;;;2684:231;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2657:272;;;;;;2638:291;;2531:405;;;:::o;1329:176::-;1438:7;:14;;;1433:65;;1461:37;;;;;;;;;;;;;;1433:65;1329:176;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;342:204:5:-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;2189:336:2:-;2362:60;2376:7;2385:12;2399:22;2362:13;:60::i;:::-;2448:12;2432:7;:13;;:28;;;;;;;;;;;2496:22;2470:7;:23;;:48;;;;;;;;;;;2189:336;;;:::o;1332:399:5:-;1455:21;1473:2;1455:17;:21::i;:::-;1491:22;1486:239;;1553:19;1529:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1486:239;;;1641:16;1593:64;;1618:19;1594:2;:20;;;:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1593:64;;;1589:136;;;1680:34;;;;;;;;;;;;;;1589:136;1486:239;1332:399;;;:::o;687:636:2:-;932:17;991:1;965:7;:22;;;:27;;;961:356;;1030:37;:28;:35;;;:37::i;:::-;1012:7;:15;;;:55;1008:72;;;1076:4;1069:11;;;;1008:72;1094:27;1215:7;:22;;;1124:113;;1185:10;1174:8;:21;;;;:::i;:::-;1124:30;:72;;;;:::i;:::-;:113;;;;:::i;:::-;1094:143;;1277:29;:20;:27;;;:29::i;:::-;1259:7;:15;;;:47;1252:54;;;;;961:356;687:636;;;;;;;;:::o;505:205:3:-;562:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:36;;;599:10;619:4;626:6;562:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:147;;656:37;;;;;;;;;;;;;;557:147;505:205;:::o;1511:672:2:-;1710:7;1729:21;1780:5;1787:11;1763:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1753:47;;;;;;1729:71;;1810:25;1838:24;1854:7;1838:15;:24::i;:::-;1810:52;;1873:19;1895:1;:10;;:25;1906:13;1895:25;;;;;;;;;;;;1873:47;;1957:1;1949:10;;1934:11;:25;1930:216;;1982:38;;;;;;;;;;;;;;1930:216;2056:17;2041:11;:32;2037:109;;2096:39;;;;;;;;;;;;;;2037:109;2163:13;2156:20;;;;;1511:672;;;;;;:::o;1257:1059:4:-;1447:19;1468:15;1500:9;1495:815;1515:11;:18;1511:1;:22;1495:815;;;1551:17;1571:11;1583:1;1571:14;;;;;;;;:::i;:::-;;;;;;;;1551:34;;1599:41;1643:1;:11;;:23;1655:10;1643:23;;;;;;;;;;;;;;;1599:67;;1711:1;1684:8;:17;;:23;;;;;;;;;;;;:28;;;1680:507;;1732:26;1749:8;1732:16;:26::i;:::-;1781:22;1776:355;;1854:19;1827:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1776:355;;;1974:25;:23;:25::i;:::-;:52;;;;;;;;;;;;1923:103;;1951:19;1924:8;:23;;;:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1923:103;;;1898:233;;;2074:38;;;;;;;;;;;;;;1898:233;1776:355;2160:8;:12;;;;;;;;;;;;2148:24;;;;;:::i;:::-;;;1680:507;2217:8;:17;;:23;;;;;;;;;;;;2201:39;;;;;:::i;:::-;;;2282:3;;;;;1537:773;;1495:815;;;;1257:1059;;;;;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;220:461:2:-;385:17;464:7;:22;;;405:81;;437:7;:23;;;412:22;:48;;;;:::i;:::-;405:81;;;;:::i;:::-;385:101;;496:12;565:10;540:7;:22;;;511:51;;523:7;:13;;;512:8;:24;;;;:::i;:::-;511:51;;;;:::i;:::-;:64;;;;:::i;:::-;496:79;;620:7;:15;;;603:14;:5;:12;;;:14::i;:::-;:32;:71;;660:14;:5;:12;;;:14::i;:::-;642:7;:15;;;:32;;;;:::i;:::-;603:71;;;638:1;603:71;585:7;:15;;:89;;;;;375:306;;220:461;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;627:363:4:-;715:19;788:8;:12;;;;;;;;;;;;761:8;:17;;:23;;;;;;;;;;;;745:12;738:46;;;;:::i;:::-;737:63;;;;;;:::i;:::-;715:85;;838:12;811:8;:17;;:23;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;904:8;:23;;;;;;;;;;;;889:38;;:12;:38;;;;:::i;:::-;860:8;:17;;:25;;;:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;970:12;937:8;:17;;:23;;;:46;;;;;;;;;;;;;;;;;;705:285;627:363;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:102::-;1315:6;1366:2;1362:7;1357:2;1350:5;1346:14;1342:28;1332:38;;1274:102;;;:::o;1382:180::-;1430:77;1427:1;1420:88;1527:4;1524:1;1517:15;1551:4;1548:1;1541:15;1568:281;1651:27;1673:4;1651:27;:::i;:::-;1643:6;1639:40;1781:6;1769:10;1766:22;1745:18;1733:10;1730:34;1727:62;1724:88;;;1792:18;;:::i;:::-;1724:88;1832:10;1828:2;1821:22;1611:238;1568:281;;:::o;1855:129::-;1889:6;1916:20;;:::i;:::-;1906:30;;1945:33;1973:4;1965:6;1945:33;:::i;:::-;1855:129;;;:::o;1990:310::-;2066:4;2156:18;2148:6;2145:30;2142:56;;;2178:18;;:::i;:::-;2142:56;2228:4;2220:6;2216:17;2208:25;;2288:4;2282;2278:15;2270:23;;1990:310;;;:::o;2306:101::-;2342:7;2382:18;2375:5;2371:30;2360:41;;2306:101;;;:::o;2413:120::-;2485:23;2502:5;2485:23;:::i;:::-;2478:5;2475:34;2465:62;;2523:1;2520;2513:12;2465:62;2413:120;:::o;2539:137::-;2584:5;2622:6;2609:20;2600:29;;2638:32;2664:5;2638:32;:::i;:::-;2539:137;;;;:::o;2698:707::-;2793:5;2818:80;2834:63;2890:6;2834:63;:::i;:::-;2818:80;:::i;:::-;2809:89;;2918:5;2947:6;2940:5;2933:21;2981:4;2974:5;2970:16;2963:23;;3034:4;3026:6;3022:17;3014:6;3010:30;3063:3;3055:6;3052:15;3049:122;;;3082:79;;:::i;:::-;3049:122;3197:6;3180:219;3214:6;3209:3;3206:15;3180:219;;;3289:3;3318:36;3350:3;3338:10;3318:36;:::i;:::-;3313:3;3306:49;3384:4;3379:3;3375:14;3368:21;;3256:143;3240:4;3235:3;3231:14;3224:21;;3180:219;;;3184:21;2799:606;;2698:707;;;;;:::o;3427:368::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:93;3785:3;3777:6;3770:4;3762:6;3758:17;3696:93;:::i;:::-;3687:102;;3503:292;3427:368;;;;:::o;3801:77::-;3838:7;3867:5;3856:16;;3801:77;;;:::o;3884:122::-;3957:24;3975:5;3957:24;:::i;:::-;3950:5;3947:35;3937:63;;3996:1;3993;3986:12;3937:63;3884:122;:::o;4012:139::-;4058:5;4096:6;4083:20;4074:29;;4112:33;4139:5;4112:33;:::i;:::-;4012:139;;;;:::o;4157:117::-;4266:1;4263;4256:12;4403:93;4439:7;4479:10;4472:5;4468:22;4457:33;;4403:93;;;:::o;4502:120::-;4574:23;4591:5;4574:23;:::i;:::-;4567:5;4564:34;4554:62;;4612:1;4609;4602:12;4554:62;4502:120;:::o;4628:137::-;4673:5;4711:6;4698:20;4689:29;;4727:32;4753:5;4727:32;:::i;:::-;4628:137;;;;:::o;4771:90::-;4805:7;4848:5;4841:13;4834:21;4823:32;;4771:90;;;:::o;4867:116::-;4937:21;4952:5;4937:21;:::i;:::-;4930:5;4927:32;4917:60;;4973:1;4970;4963:12;4917:60;4867:116;:::o;4989:133::-;5032:5;5070:6;5057:20;5048:29;;5086:30;5110:5;5086:30;:::i;:::-;4989:133;;;;:::o;5166:1079::-;5240:5;5284:4;5272:9;5267:3;5263:19;5259:30;5256:117;;;5292:79;;:::i;:::-;5256:117;5391:21;5407:4;5391:21;:::i;:::-;5382:30;;5481:1;5521:48;5565:3;5556:6;5545:9;5541:22;5521:48;:::i;:::-;5514:4;5507:5;5503:16;5496:74;5422:159;5651:2;5692:48;5736:3;5727:6;5716:9;5712:22;5692:48;:::i;:::-;5685:4;5678:5;5674:16;5667:74;5591:161;5812:2;5853:48;5897:3;5888:6;5877:9;5873:22;5853:48;:::i;:::-;5846:4;5839:5;5835:16;5828:74;5762:151;5974:2;6015:46;6057:3;6048:6;6037:9;6033:22;6015:46;:::i;:::-;6008:4;6001:5;5997:16;5990:72;5923:150;6135:3;6177:49;6222:3;6213:6;6202:9;6198:22;6177:49;:::i;:::-;6170:4;6163:5;6159:16;6152:75;6083:155;5166:1079;;;;:::o;6251:1565::-;6417:6;6425;6433;6441;6449;6457;6465;6514:3;6502:9;6493:7;6489:23;6485:33;6482:120;;;6521:79;;:::i;:::-;6482:120;6669:1;6658:9;6654:17;6641:31;6699:18;6691:6;6688:30;6685:117;;;6721:79;;:::i;:::-;6685:117;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6816:82;;;;6612:296;6975:2;6964:9;6960:18;6947:32;7006:18;6998:6;6995:30;6992:117;;;7028:79;;:::i;:::-;6992:117;7133:77;7202:7;7193:6;7182:9;7178:22;7133:77;:::i;:::-;7123:87;;6918:302;7287:2;7276:9;7272:18;7259:32;7318:18;7310:6;7307:30;7304:117;;;7340:79;;:::i;:::-;7304:117;7453:64;7509:7;7500:6;7489:9;7485:22;7453:64;:::i;:::-;7435:82;;;;7230:297;7566:2;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7537:118;7694:3;7721:78;7791:7;7782:6;7771:9;7767:22;7721:78;:::i;:::-;7711:88;;7665:144;6251:1565;;;;;;;;;;:::o;7838:567::-;7910:8;7920:6;7970:3;7963:4;7955:6;7951:17;7947:27;7937:122;;7978:79;;:::i;:::-;7937:122;8091:6;8078:20;8068:30;;8121:18;8113:6;8110:30;8107:117;;;8143:79;;:::i;:::-;8107:117;8257:4;8249:6;8245:17;8233:29;;8311:3;8303:4;8295:6;8291:17;8281:8;8277:32;8274:41;8271:128;;;8318:79;;:::i;:::-;8271:128;7838:567;;;;;:::o;8411:1096::-;8550:6;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8786:1;8775:9;8771:17;8758:31;8816:18;8808:6;8805:30;8802:117;;;8838:79;;:::i;:::-;8802:117;8951:64;9007:7;8998:6;8987:9;8983:22;8951:64;:::i;:::-;8933:82;;;;8729:296;9092:2;9081:9;9077:18;9064:32;9123:18;9115:6;9112:30;9109:117;;;9145:79;;:::i;:::-;9109:117;9258:79;9329:7;9320:6;9309:9;9305:22;9258:79;:::i;:::-;9240:97;;;;9035:312;9386:2;9412:78;9482:7;9473:6;9462:9;9458:22;9412:78;:::i;:::-;9402:88;;9357:143;8411:1096;;;;;;;;:::o;9513:898::-;9641:6;9649;9657;9665;9714:3;9702:9;9693:7;9689:23;9685:33;9682:120;;;9721:79;;:::i;:::-;9682:120;9869:1;9858:9;9854:17;9841:31;9899:18;9891:6;9888:30;9885:117;;;9921:79;;:::i;:::-;9885:117;10034:79;10105:7;10096:6;10085:9;10081:22;10034:79;:::i;:::-;10016:97;;;;9812:311;10162:2;10188:53;10233:7;10224:6;10213:9;10209:22;10188:53;:::i;:::-;10178:63;;10133:118;10290:2;10316:78;10386:7;10377:6;10366:9;10362:22;10316:78;:::i;:::-;10306:88;;10261:143;9513:898;;;;;;;:::o;10417:126::-;10454:7;10494:42;10487:5;10483:54;10472:65;;10417:126;;;:::o;10549:96::-;10586:7;10615:24;10633:5;10615:24;:::i;:::-;10604:35;;10549:96;;;:::o;10651:122::-;10724:24;10742:5;10724:24;:::i;:::-;10717:5;10714:35;10704:63;;10763:1;10760;10753:12;10704:63;10651:122;:::o;10779:139::-;10825:5;10863:6;10850:20;10841:29;;10879:33;10906:5;10879:33;:::i;:::-;10779:139;;;;:::o;10924:1043::-;11061:6;11069;11077;11085;11093;11142:3;11130:9;11121:7;11117:23;11113:33;11110:120;;;11149:79;;:::i;:::-;11110:120;11269:1;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;:::i;:::-;11284:63;;11240:117;11424:2;11413:9;11409:18;11396:32;11455:18;11447:6;11444:30;11441:117;;;11477:79;;:::i;:::-;11441:117;11590:79;11661:7;11652:6;11641:9;11637:22;11590:79;:::i;:::-;11572:97;;;;11367:312;11718:2;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11689:118;11846:2;11872:78;11942:7;11933:6;11922:9;11918:22;11872:78;:::i;:::-;11862:88;;11817:143;10924:1043;;;;;;;;:::o;11973:878::-;12099:6;12107;12115;12164:3;12152:9;12143:7;12139:23;12135:33;12132:120;;;12171:79;;:::i;:::-;12132:120;12291:1;12316:53;12361:7;12352:6;12341:9;12337:22;12316:53;:::i;:::-;12306:63;;12262:117;12446:2;12435:9;12431:18;12418:32;12477:18;12469:6;12466:30;12463:117;;;12499:79;;:::i;:::-;12463:117;12604:77;12673:7;12664:6;12653:9;12649:22;12604:77;:::i;:::-;12594:87;;12389:302;12730:2;12756:78;12826:7;12817:6;12806:9;12802:22;12756:78;:::i;:::-;12746:88;;12701:143;11973:878;;;;;:::o;12857:180::-;12905:77;12902:1;12895:88;13002:4;12999:1;12992:15;13026:4;13023:1;13016:15;13043:176;13075:1;13092:20;13110:1;13092:20;:::i;:::-;13087:25;;13126:20;13144:1;13126:20;:::i;:::-;13121:25;;13165:1;13155:35;;13170:18;;:::i;:::-;13155:35;13211:1;13208;13204:9;13199:14;;13043:176;;;;:::o;13225:147::-;13326:11;13363:3;13348:18;;13225:147;;;;:::o;13378:146::-;13475:6;13470:3;13465;13452:30;13516:1;13507:6;13502:3;13498:16;13491:27;13378:146;;;:::o;13552:327::-;13666:3;13687:88;13768:6;13763:3;13687:88;:::i;:::-;13680:95;;13785:56;13834:6;13829:3;13822:5;13785:56;:::i;:::-;13866:6;13861:3;13857:16;13850:23;;13552:327;;;;;:::o;13885:94::-;13918:8;13966:5;13962:2;13958:14;13937:35;;13885:94;;;:::o;13985:::-;14024:7;14053:20;14067:5;14053:20;:::i;:::-;14042:31;;13985:94;;;:::o;14085:100::-;14124:7;14153:26;14173:5;14153:26;:::i;:::-;14142:37;;14085:100;;;:::o;14191:157::-;14296:45;14316:24;14334:5;14316:24;:::i;:::-;14296:45;:::i;:::-;14291:3;14284:58;14191:157;;:::o;14354:432::-;14522:3;14544:103;14643:3;14634:6;14626;14544:103;:::i;:::-;14537:110;;14657:75;14728:3;14719:6;14657:75;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14777:3;14770:10;;14354:432;;;;;;:::o;14792:113::-;14858:6;14892:5;14886:12;14876:22;;14792:113;;;:::o;14911:162::-;15027:11;15064:3;15049:18;;14911:162;;;;:::o;15079:131::-;15145:4;15168:3;15160:11;;15198:4;15193:3;15189:14;15181:22;;15079:131;;;:::o;15216:113::-;15299:23;15316:5;15299:23;:::i;:::-;15294:3;15287:36;15216:113;;:::o;15335:191::-;15410:10;15431:52;15479:3;15471:6;15431:52;:::i;:::-;15515:4;15510:3;15506:14;15492:28;;15335:191;;;;:::o;15532:112::-;15601:4;15633;15628:3;15624:14;15616:22;;15532:112;;;:::o;15678:768::-;15813:3;15842:53;15889:5;15842:53;:::i;:::-;15911:103;16007:6;16002:3;15911:103;:::i;:::-;15904:110;;16038:55;16087:5;16038:55;:::i;:::-;16116:7;16147:1;16132:289;16157:6;16154:1;16151:13;16132:289;;;16233:6;16227:13;16260:69;16325:3;16310:13;16260:69;:::i;:::-;16253:76;;16352:59;16404:6;16352:59;:::i;:::-;16342:69;;16192:229;16179:1;16176;16172:9;16167:14;;16132:289;;;16136:14;16437:3;16430:10;;15818:628;;;15678:768;;;;:::o;16452:331::-;16612:3;16634:123;16753:3;16744:6;16634:123;:::i;:::-;16627:130;;16774:3;16767:10;;16452:331;;;;:::o;16789:472::-;16977:3;16992:75;17063:3;17054:6;16992:75;:::i;:::-;17092:2;17087:3;17083:12;17076:19;;17112:123;17231:3;17222:6;17112:123;:::i;:::-;17105:130;;17252:3;17245:10;;16789:472;;;;;:::o;17267:180::-;17315:77;17312:1;17305:88;17412:4;17409:1;17402:15;17436:4;17433:1;17426:15;17453:191;17493:3;17512:20;17530:1;17512:20;:::i;:::-;17507:25;;17546:20;17564:1;17546:20;:::i;:::-;17541:25;;17589:1;17586;17582:9;17575:16;;17610:3;17607:1;17604:10;17601:36;;;17617:18;;:::i;:::-;17601:36;17453:191;;;;:::o;17650:180::-;17698:77;17695:1;17688:88;17795:4;17792:1;17785:15;17819:4;17816:1;17809:15;17836:175;17874:3;17897:23;17914:5;17897:23;:::i;:::-;17888:32;;17942:10;17935:5;17932:21;17929:47;;17956:18;;:::i;:::-;17929:47;18003:1;17996:5;17992:13;17985:20;;17836:175;;;:::o;18017:205::-;18056:3;18075:19;18092:1;18075:19;:::i;:::-;18070:24;;18108:19;18125:1;18108:19;:::i;:::-;18103:24;;18150:1;18147;18143:9;18136:16;;18173:18;18168:3;18165:27;18162:53;;;18195:18;;:::i;:::-;18162:53;18017:205;;;;:::o;18228:183::-;18326:11;18360:6;18355:3;18348:19;18400:4;18395:3;18391:14;18376:29;;18228:183;;;;:::o;18417:105::-;18492:23;18509:5;18492:23;:::i;:::-;18487:3;18480:36;18417:105;;:::o;18528:175::-;18595:10;18616:44;18656:3;18648:6;18616:44;:::i;:::-;18692:4;18687:3;18683:14;18669:28;;18528:175;;;;:::o;18737:724::-;18854:3;18883:53;18930:5;18883:53;:::i;:::-;18952:85;19030:6;19025:3;18952:85;:::i;:::-;18945:92;;19061:55;19110:5;19061:55;:::i;:::-;19139:7;19170:1;19155:281;19180:6;19177:1;19174:13;19155:281;;;19256:6;19250:13;19283:61;19340:3;19325:13;19283:61;:::i;:::-;19276:68;;19367:59;19419:6;19367:59;:::i;:::-;19357:69;;19215:221;19202:1;19199;19195:9;19190:14;;19155:281;;;19159:14;19452:3;19445:10;;18859:602;;;18737:724;;;;:::o;19467:168::-;19550:11;19584:6;19579:3;19572:19;19624:4;19619:3;19615:14;19600:29;;19467:168;;;;:::o;19663:314::-;19759:3;19780:70;19843:6;19838:3;19780:70;:::i;:::-;19773:77;;19860:56;19909:6;19904:3;19897:5;19860:56;:::i;:::-;19941:29;19963:6;19941:29;:::i;:::-;19936:3;19932:39;19925:46;;19663:314;;;;;:::o;19983:105::-;20058:23;20075:5;20058:23;:::i;:::-;20053:3;20046:36;19983:105;;:::o;20094:99::-;20165:21;20180:5;20165:21;:::i;:::-;20160:3;20153:34;20094:99;;:::o;20199:108::-;20276:24;20294:5;20276:24;:::i;:::-;20271:3;20264:37;20199:108;;:::o;20385:1044::-;20532:4;20527:3;20523:14;20629:4;20622:5;20618:16;20612:23;20648:61;20703:4;20698:3;20694:14;20680:12;20648:61;:::i;:::-;20547:172;20812:4;20805:5;20801:16;20795:23;20831:61;20886:4;20881:3;20877:14;20863:12;20831:61;:::i;:::-;20729:173;20985:4;20978:5;20974:16;20968:23;21004:61;21059:4;21054:3;21050:14;21036:12;21004:61;:::i;:::-;20912:163;21159:4;21152:5;21148:16;21142:23;21178:57;21229:4;21224:3;21220:14;21206:12;21178:57;:::i;:::-;21085:160;21330:4;21323:5;21319:16;21313:23;21349:63;21406:4;21401:3;21397:14;21383:12;21349:63;:::i;:::-;21255:167;20501:928;20385:1044;;:::o;21435:1014::-;21766:4;21804:3;21793:9;21789:19;21781:27;;21854:9;21848:4;21844:20;21840:1;21829:9;21825:17;21818:47;21882:106;21983:4;21974:6;21882:106;:::i;:::-;21874:114;;22035:9;22029:4;22025:20;22020:2;22009:9;22005:18;21998:48;22063:86;22144:4;22135:6;22127;22063:86;:::i;:::-;22055:94;;22196:9;22190:4;22186:20;22181:2;22170:9;22166:18;22159:48;22224:86;22305:4;22296:6;22288;22224:86;:::i;:::-;22216:94;;22320:122;22438:2;22427:9;22423:18;22414:6;22320:122;:::i;:::-;21435:1014;;;;;;;;;:::o;22455:101::-;22523:4;22546:3;22538:11;;22455:101;;;:::o;22562:120::-;22613:5;22638:38;22672:2;22667:3;22663:12;22658:3;22638:38;:::i;:::-;22629:47;;22562:120;;;;:::o;22688:114::-;22759:4;22791;22786:3;22782:14;22774:22;;22688:114;;;:::o;22836:735::-;22981:3;23004:103;23100:6;23095:3;23004:103;:::i;:::-;22997:110;;23131:57;23182:5;23131:57;:::i;:::-;23211:7;23242:1;23227:319;23252:6;23249:1;23246:13;23227:319;;;23322:41;23356:6;23347:7;23322:41;:::i;:::-;23383:69;23448:3;23433:13;23383:69;:::i;:::-;23376:76;;23475:61;23529:6;23475:61;:::i;:::-;23465:71;;23287:259;23274:1;23271;23267:9;23262:14;;23227:319;;;23231:14;23562:3;23555:10;;22986:585;;22836:735;;;;;:::o;23577:351::-;23747:3;23769:133;23898:3;23889:6;23881;23769:133;:::i;:::-;23762:140;;23919:3;23912:10;;23577:351;;;;;:::o;23934:169::-;23972:3;23995:23;24012:5;23995:23;:::i;:::-;23986:32;;24040:4;24033:5;24030:15;24027:41;;24048:18;;:::i;:::-;24027:41;24095:1;24088:5;24084:13;24077:20;;23934:169;;;:::o;24137:691::-;24264:3;24287:85;24365:6;24360:3;24287:85;:::i;:::-;24280:92;;24396:57;24447:5;24396:57;:::i;:::-;24476:7;24507:1;24492:311;24517:6;24514:1;24511:13;24492:311;;;24587:41;24621:6;24612:7;24587:41;:::i;:::-;24648:61;24705:3;24690:13;24648:61;:::i;:::-;24641:68;;24732:61;24786:6;24732:61;:::i;:::-;24722:71;;24552:251;24539:1;24536;24532:9;24527:14;;24492:311;;;24496:14;24819:3;24812:10;;24269:559;;24137:691;;;;;:::o;24834:817::-;25119:4;25157:3;25146:9;25142:19;25134:27;;25207:9;25201:4;25197:20;25193:1;25182:9;25178:17;25171:47;25235:116;25346:4;25337:6;25329;25235:116;:::i;:::-;25227:124;;25398:9;25392:4;25388:20;25383:2;25372:9;25368:18;25361:48;25426:86;25507:4;25498:6;25490;25426:86;:::i;:::-;25418:94;;25522:122;25640:2;25629:9;25625:18;25616:6;25522:122;:::i;:::-;24834:817;;;;;;;;:::o;25657:600::-;25886:4;25924:3;25913:9;25909:19;25901:27;;25974:9;25968:4;25964:20;25960:1;25949:9;25945:17;25938:47;26002:116;26113:4;26104:6;26096;26002:116;:::i;:::-;25994:124;;26128:122;26246:2;26235:9;26231:18;26222:6;26128:122;:::i;:::-;25657:600;;;;;;:::o;26263:327::-;26321:6;26370:2;26358:9;26349:7;26345:23;26341:32;26338:119;;;26376:79;;:::i;:::-;26338:119;26496:1;26521:52;26565:7;26556:6;26545:9;26541:22;26521:52;:::i;:::-;26511:62;;26467:116;26263:327;;;;:::o;26596:208::-;26635:4;26655:19;26672:1;26655:19;:::i;:::-;26650:24;;26688:19;26705:1;26688:19;:::i;:::-;26683:24;;26731:1;26728;26724:9;26716:17;;26755:18;26749:4;26746:28;26743:54;;;26777:18;;:::i;:::-;26743:54;26596:208;;;;:::o;26810:275::-;26849:7;26872:19;26889:1;26872:19;:::i;:::-;26867:24;;26905:19;26922:1;26905:19;:::i;:::-;26900:24;;26959:1;26956;26952:9;26981:29;26998:11;26981:29;:::i;:::-;26970:40;;27042:11;27033:7;27030:24;27020:58;;27058:18;;:::i;:::-;27020:58;26857:228;26810:275;;;;:::o;27091:194::-;27131:4;27151:20;27169:1;27151:20;:::i;:::-;27146:25;;27185:20;27203:1;27185:20;:::i;:::-;27180:25;;27229:1;27226;27222:9;27214:17;;27253:1;27247:4;27244:11;27241:37;;;27258:18;;:::i;:::-;27241:37;27091:194;;;;:::o;27291:118::-;27378:24;27396:5;27378:24;:::i;:::-;27373:3;27366:37;27291:118;;:::o;27415:710::-;27672:4;27710:3;27699:9;27695:19;27687:27;;27760:9;27754:4;27750:20;27746:1;27735:9;27731:17;27724:47;27788:116;27899:4;27890:6;27882;27788:116;:::i;:::-;27780:124;;27914:72;27982:2;27971:9;27967:18;27958:6;27914:72;:::i;:::-;27996:122;28114:2;28103:9;28099:18;28090:6;27996:122;:::i;:::-;27415:710;;;;;;;:::o;28131:580::-;28350:4;28388:3;28377:9;28373:19;28365:27;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:106;28567:4;28558:6;28466:106;:::i;:::-;28458:114;;28582:122;28700:2;28689:9;28685:18;28676:6;28582:122;:::i;:::-;28131:580;;;;;:::o;28717:96::-;28751:8;28800:5;28795:3;28791:15;28770:36;;28717:96;;;:::o;28819:94::-;28857:7;28886:21;28901:5;28886:21;:::i;:::-;28875:32;;28819:94;;;:::o;28919:153::-;29022:43;29041:23;29058:5;29041:23;:::i;:::-;29022:43;:::i;:::-;29017:3;29010:56;28919:153;;:::o;29078:96::-;29112:8;29161:5;29156:3;29152:15;29131:36;;29078:96;;;:::o;29180:94::-;29218:7;29247:21;29262:5;29247:21;:::i;:::-;29236:32;;29180:94;;;:::o;29280:153::-;29383:43;29402:23;29419:5;29402:23;:::i;:::-;29383:43;:::i;:::-;29378:3;29371:56;29280:153;;:::o;29439:79::-;29478:7;29507:5;29496:16;;29439:79;;;:::o;29524:157::-;29629:45;29649:24;29667:5;29649:24;:::i;:::-;29629:45;:::i;:::-;29624:3;29617:58;29524:157;;:::o;29687:96::-;29721:8;29770:5;29765:3;29761:15;29740:36;;29687:96;;;:::o;29789:93::-;29826:7;29855:21;29870:5;29855:21;:::i;:::-;29844:32;;29789:93;;;:::o;29888:95::-;29924:7;29953:24;29971:5;29953:24;:::i;:::-;29942:35;;29888:95;;;:::o;29989:145::-;30088:39;30105:21;30120:5;30105:21;:::i;:::-;30088:39;:::i;:::-;30083:3;30076:52;29989:145;;:::o;30140:792::-;30352:3;30367:73;30436:3;30427:6;30367:73;:::i;:::-;30465:1;30460:3;30456:11;30449:18;;30477:73;30546:3;30537:6;30477:73;:::i;:::-;30575:1;30570:3;30566:11;30559:18;;30587:73;30656:3;30647:6;30587:73;:::i;:::-;30685:1;30680:3;30676:11;30669:18;;30697:75;30768:3;30759:6;30697:75;:::i;:::-;30797:2;30792:3;30788:12;30781:19;;30810:69;30875:3;30866:6;30810:69;:::i;:::-;30904:1;30899:3;30895:11;30888:18;;30923:3;30916:10;;30140:792;;;;;;;;:::o;30938:200::-;30977:4;30997:19;31014:1;30997:19;:::i;:::-;30992:24;;31030:19;31047:1;31030:19;:::i;:::-;31025:24;;31073:1;31070;31066:9;31058:17;;31097:10;31091:4;31088:20;31085:46;;;31111:18;;:::i;:::-;31085:46;30938:200;;;;:::o;31144:197::-;31183:3;31202:19;31219:1;31202:19;:::i;:::-;31197:24;;31235:19;31252:1;31235:19;:::i;:::-;31230:24;;31277:1;31274;31270:9;31263:16;;31300:10;31295:3;31292:19;31289:45;;;31314:18;;:::i;:::-;31289:45;31144:197;;;;:::o;31347:118::-;31434:24;31452:5;31434:24;:::i;:::-;31429:3;31422:37;31347:118;;:::o;31471:442::-;31620:4;31658:2;31647:9;31643:18;31635:26;;31671:71;31739:1;31728:9;31724:17;31715:6;31671:71;:::i;:::-;31752:72;31820:2;31809:9;31805:18;31796:6;31752:72;:::i;:::-;31834;31902:2;31891:9;31887:18;31878:6;31834:72;:::i;:::-;31471:442;;;;;;:::o;31919:137::-;31973:5;32004:6;31998:13;31989:22;;32020:30;32044:5;32020:30;:::i;:::-;31919:137;;;;:::o;32062:345::-;32129:6;32178:2;32166:9;32157:7;32153:23;32149:32;32146:119;;;32184:79;;:::i;:::-;32146:119;32304:1;32329:61;32382:7;32373:6;32362:9;32358:22;32329:61;:::i;:::-;32319:71;;32275:125;32062:345;;;;:::o;32413:332::-;32534:4;32572:2;32561:9;32557:18;32549:26;;32585:71;32653:1;32642:9;32638:17;32629:6;32585:71;:::i;:::-;32666:72;32734:2;32723:9;32719:18;32710:6;32666:72;:::i;:::-;32413:332;;;;;:::o;32751:410::-;32791:7;32814:20;32832:1;32814:20;:::i;:::-;32809:25;;32848:20;32866:1;32848:20;:::i;:::-;32843:25;;32903:1;32900;32896:9;32925:30;32943:11;32925:30;:::i;:::-;32914:41;;33104:1;33095:7;33091:15;33088:1;33085:22;33065:1;33058:9;33038:83;33015:139;;33134:18;;:::i;:::-;33015:139;32799:362;32751:410;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterReactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ClusterWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"shares\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"ValidatorRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"clusterOwner\",\"type\":\"address\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"reactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes\",\"name\":\"sharesData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"removeValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"operatorIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"validatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"networkFeeIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"internalType\":\"structISSVNetworkCore.Cluster\",\"name\":\"cluster\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613516806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100625760003560e01c806306e8fb9c1461006757806312b3fc19146100835780635fec6dd01461009f578063686e682c146100bb578063bc26e7e5146100d7578063bf0f2fb2146100f3575b600080fd5b610081600480360381019061007c91906126f3565b61010f565b005b61009d60048036038101906100989190612822565b610bda565b005b6100b960048036038101906100b491906128b7565b610e9b565b005b6100d560048036038101906100d091906128b7565b61115a565b005b6100f160048036038101906100ec9190612989565b6114c1565b005b61010d60048036038101906101089190612a12565b6115ca565b005b600061011961182a565b90506000610125611866565b9050600087519050600467ffffffffffffffff168110806101505750600d67ffffffffffffffff1681115b8061017257506001600367ffffffffffffffff168261016f9190612ab0565b14155b156101a9576040517f3818622400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603067ffffffffffffffff168a8a9050146101f0576040517f637297a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a8a3360405160200161020793929190612b68565b6040516020818303038152906040528051906020012090506000801b8460000160008381526020019081526020016000205414610270576040517f8d09a73e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001896040516020016102839190612c4a565b6040516020818303038152906040528051906020012060001c1760001b8460000160008381526020019081526020016000208190555050600033896040516020016102cf929190612c61565b60405160208183030381529060405280519060200120905060008460010160008381526020019081526020016000205490506000801b81036103a7576000866000015163ffffffff1614158061033457506000866020015167ffffffffffffffff1614155b8061034e57506000866040015167ffffffffffffffff1614155b8061035e57506000866080015114155b8061036b57508560600151155b156103a2576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f2565b6103b0866118a2565b81146103e8576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f1866118ee565b5b5085856080018181516104059190612cb8565b915081815250506000856060015115610a87576000805b84811015610a515760008c828151811061043957610438612cec565b5b60200260200101519050856001836104519190612cb8565b101561053f578c6001836104659190612cb8565b8151811061047657610475612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff1611156104cb576040517fdd020e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c6001836104d99190612cb8565b815181106104ea576104e9612cec565b5b602002602001015167ffffffffffffffff168167ffffffffffffffff160361053e576040517fa5a1ff5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008860060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff1603610726576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060600151156108205760008960040160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107e757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081e576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6108298161192c565b87600001600c9054906101000a900463ffffffff1663ffffffff1681600001805161085390612d1b565b63ffffffff16908163ffffffff1681525063ffffffff1611156108a2576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806080015160200151846108b69190612d47565b93508060200151856108c89190612d47565b9450808960060160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050826001019250505061041c565b50610a6f81610a5f876119f4565b89611a699092919063ffffffff16565b610a8560018087611ab99092919063ffffffff16565b505b856000018051610a9690612d1b565b63ffffffff16908163ffffffff1681525050610b09818560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b15610b40576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49866118a2565b8560010160008481526020019081526020016000208190555060008714610b7457610b7387611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167f48a3ea0796746043948f6341d17ff8200937b99262a0b48c2663b951ed7114e58b8e8e8d8d8c604051610bc496959493929190612eec565b60405180910390a2505050505050505050505050565b6000610be461182a565b90506000868633604051602001610bfd93929190612b68565b6040516020818303038152906040528051906020012090506000600160001b19905060008360000160008481526020019081526020016000205490506000801b8103610c75576040517fe51315d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828888604051602001610c8b929190612fd6565b604051602081830303815290604052805190602001201690508083831614610cdf576040517f2feda3c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d39338a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888a611d11909392919063ffffffff16565b9050866060015115610ddc576000610d968a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600060018a611de9565b5090506000610da3611866565b9050610dc282610db2836119f4565b8b611a699092919063ffffffff16565b610dd96000600183611ab99092919063ffffffff16565b50505b866000018051610deb90612fef565b63ffffffff16908163ffffffff168152505085600001600086815260200190815260200160002060009055610e1f876118a2565b866001016000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fccf4370403e5fbbde0cd3f13426479dcd8a5916b05db424b7a2c04978cf8ce6e8a8a8e8e8c604051610e86959493929190613075565b60405180910390a25050505050505050505050565b6000610ea561182a565b90506000610f0133878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050826060015115610f3f576040517f3babafd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f49611866565b9050600080610fa0898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506001886000015188611de9565b915091508686608001818151610fb69190612cb8565b91508181525050600186606001901515908115158152505081866040019067ffffffffffffffff16908167ffffffffffffffff1681525050610ff7836119f4565b866020019067ffffffffffffffff16908167ffffffffffffffff16815250506110306001876000015185611ab99092919063ffffffff16565b611091818460000160109054906101000a900467ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff168a611b9890949392919063ffffffff16565b156110c8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d1866118a2565b8560010160008681526020019081526020016000208190555060008711156110fd576110fc87611c2d565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc803f8c01343fcdaf32068f4c283951623ef2b3fa0c547551931356f456b68598a8a89604051611147939291906130be565b60405180910390a2505050505050505050565b600061116461182a565b905060006111c033878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b90506111cb836118ee565b60006111d5611866565b905060008460600151156113245760008089899050905060005b8181101561130357600061120161182a565b60060160008d8d8581811061121957611218612cec565b5b905060200201602081019061122e91906130f0565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160049054906101000a900467ffffffffffffffff168160020160000160009054906101000a900463ffffffff1663ffffffff1643611294919061311d565b61129e9190613159565b8160020160000160049054906101000a900467ffffffffffffffff166112c49190612d47565b846112cf9190612d47565b93508060000160049054906101000a900467ffffffffffffffff16856112f59190612d47565b9450816001019150506111ef565b505061132281611312856119f4565b88611a699092919063ffffffff16565b505b8585608001511015611362576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85856080018181516113749190613196565b915081815250508460600151801561139757506000856000015163ffffffff1614155b801561140057506113ff818360000160109054906101000a900467ffffffffffffffff168460010160089054906101000a900467ffffffffffffffff168560010160109054906101000a900467ffffffffffffffff1689611b9890949392919063ffffffff16565b5b15611437576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611440856118a2565b846001016000858152602001908152602001600020819055506114633387611fc5565b3373ffffffffffffffffffffffffffffffffffffffff167f39d1320bbda24947e77f3560661323384aa0a1cb9d5e040e617e5cbf50b6dbe0898989896040516114af94939291906131d9565b60405180910390a25050505050505050565b60006114cb61182a565b9050600061152787878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508486611d11909392919063ffffffff16565b9050838360800181815161153b9190612cb8565b9150818152505061154b836118a2565b8260010160008381526020019081526020016000208190555061156d84611c2d565b8673ffffffffffffffffffffffffffffffffffffffff167f2bac1912f2481d12f0df08647c06bee174967c62d3a03cbc078eb215dc1bd9a2878787876040516115b994939291906131d9565b60405180910390a250505050505050565b60006115d461182a565b905060006115ef85858486611d11909392919063ffffffff16565b90506115fa836118ee565b6000611604611866565b905060008061161a876000886000015188611de9565b9150915061163b8261162b856119f4565b886120a89092919063ffffffff16565b60003373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141580156116d757506116d5828560000160109054906101000a900467ffffffffffffffff168660010160089054906101000a900467ffffffffffffffff168760010160109054906101000a900467ffffffffffffffff168b611b9890949392919063ffffffff16565b155b1561170e576040517f60300a8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117286000886000015186611ab99092919063ffffffff16565b6000876080015114611747578660800151905060008760800181815250505b6000876040019067ffffffffffffffff16908167ffffffffffffffff16815250506000876020019067ffffffffffffffff16908167ffffffffffffffff168152505060008760600190151590811515815250506117a3876118a2565b86600101600087815260200190815260200160002081905550600081146117cf576117ce3382611fc5565b5b8873ffffffffffffffffffffffffffffffffffffffff167f1fce24c373e07f89214e9187598635036111dbb363e99f4ce498488cdc66e6888989604051611817929190613219565b60405180910390a2505050505050505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61185d9190613196565b90508091505090565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6118999190613196565b90508091505090565b6000816000015182602001518360400151846080015185606001516040516020016118d195949392919061331e565b604051602081830303815290604052805190602001209050919050565b8060600151611929576040517f95a0cf3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143611947919061337d565b63ffffffff166119579190613159565b905080826080015160200181815161196f9190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816119a29190613159565b82608001516040018181516119b79190612d47565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643611a359190613196565b611a3f9190613159565b8260000160189054906101000a900467ffffffffffffffff16611a629190612d47565b9050919050565b611a748383836120a8565b81836040019067ffffffffffffffff16908167ffffffffffffffff168152505080836020019067ffffffffffffffff16908167ffffffffffffffff1681525050505050565b611ac28361215c565b81611b0d57808360000160048282829054906101000a900463ffffffff16611aea919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611b93565b63ffffffff8016818460000160048282829054906101000a900463ffffffff16611b3791906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611b92576040517f91aa301700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b600080866000015163ffffffff1614611c2357611bbe8267ffffffffffffffff166121b5565b86608001511015611bd25760019050611c24565b6000866000015163ffffffff168587611beb9190612d47565b85611bf69190613159565b611c009190613159565b9050611c158167ffffffffffffffff166121b5565b876080015110915050611c24565b5b95945050505050565b611c3561182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611c95939291906133fc565b6020604051808303816000875af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190613448565b611d0e576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000808484604051602001611d27929190612c61565b6040516020818303038152906040528051906020012090506000611d4a876118a2565b905060008460010160008481526020019081526020016000205490506000801b8103611da2576040517f185e2b1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818114611ddb576040517f12e04c8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829350505050949350505050565b60008060005b8651811015611fbb576000878281518110611e0d57611e0c612cec565b5b6020026020010151905060008560060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff1614611f8557611e72816121d7565b87611ebd57868160000160008282829054906101000a900463ffffffff16611e9a919061337d565b92506101000a81548163ffffffff021916908363ffffffff160217905550611f5e565b611ec5611866565b600001600c9054906101000a900463ffffffff1663ffffffff16878260000160008282829054906101000a900463ffffffff16611f0291906133b5565b92506101000a81548163ffffffff021916908363ffffffff160217905563ffffffff161115611f5d576040517f6df5ab7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8060000160049054906101000a900467ffffffffffffffff1684611f829190612d47565b93505b8060020160000160049054906101000a900467ffffffffffffffff1685611fac9190612d47565b94508260010192505050611def565b5094509492505050565b611fcd61182a565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161202b929190613475565b6020604051808303816000875af115801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613448565b6120a4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000836000015163ffffffff168460200151836120c5919061311d565b6120cf9190613159565b9050600081856000015163ffffffff168660400151866120ef919061311d565b6120f99190613159565b6121039190612d47565b9050846080015161211d8267ffffffffffffffff166121b5565b11612149576121358167ffffffffffffffff166121b5565b85608001516121449190613196565b61214c565b60005b8560800181815250505050505050565b61216581612316565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000629896808267ffffffffffffffff166121d0919061349e565b9050919050565b60008160000160049054906101000a900467ffffffffffffffff168260020160000160009054906101000a900463ffffffff1643612215919061337d565b63ffffffff166122259190613159565b9050808260020160000160048282829054906101000a900467ffffffffffffffff166122519190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508160000160009054906101000a900463ffffffff1663ffffffff168161229d9190613159565b82600201600001600c8282829054906101000a900467ffffffffffffffff166122c69190612d47565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260020160000160006101000a81548163ffffffff021916908363ffffffff1602179055505050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643612372919061311d565b61237c9190613159565b6123869190613159565b8260010160009054906101000a900467ffffffffffffffff166123a99190612d47565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126123e9576123e86123c4565b5b8235905067ffffffffffffffff811115612406576124056123c9565b5b602083019150836001820283011115612422576124216123ce565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61247282612429565b810181811067ffffffffffffffff821117156124915761249061243a565b5b80604052505050565b60006124a46123b0565b90506124b08282612469565b919050565b600067ffffffffffffffff8211156124d0576124cf61243a565b5b602082029050602081019050919050565b600067ffffffffffffffff82169050919050565b6124fe816124e1565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b600061253461252f846124b5565b61249a565b90508083825260208201905060208402830185811115612557576125566123ce565b5b835b81811015612580578061256c888261250c565b845260208401935050602081019050612559565b5050509392505050565b600082601f83011261259f5761259e6123c4565b5b81356125af848260208601612521565b91505092915050565b6000819050919050565b6125cb816125b8565b81146125d657600080fd5b50565b6000813590506125e8816125c2565b92915050565b600080fd5b600063ffffffff82169050919050565b61260c816125f3565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60008115159050919050565b6126448161262f565b811461264f57600080fd5b50565b6000813590506126618161263b565b92915050565b600060a0828403121561267d5761267c6125ee565b5b61268760a061249a565b905060006126978482850161261a565b60008301525060206126ab8482850161250c565b60208301525060406126bf8482850161250c565b60408301525060606126d384828501612652565b60608301525060806126e7848285016125d9565b60808301525092915050565b6000806000806000806000610120888a031215612713576127126123ba565b5b600088013567ffffffffffffffff811115612731576127306123bf565b5b61273d8a828b016123d3565b9750975050602088013567ffffffffffffffff8111156127605761275f6123bf565b5b61276c8a828b0161258a565b955050604088013567ffffffffffffffff81111561278d5761278c6123bf565b5b6127998a828b016123d3565b945094505060606127ac8a828b016125d9565b92505060806127bd8a828b01612667565b91505092959891949750929550565b60008083601f8401126127e2576127e16123c4565b5b8235905067ffffffffffffffff8111156127ff576127fe6123c9565b5b60208301915083602082028301111561281b5761281a6123ce565b5b9250929050565b600080600080600060e0868803121561283e5761283d6123ba565b5b600086013567ffffffffffffffff81111561285c5761285b6123bf565b5b612868888289016123d3565b9550955050602086013567ffffffffffffffff81111561288b5761288a6123bf565b5b612897888289016127cc565b935093505060406128aa88828901612667565b9150509295509295909350565b60008060008060e085870312156128d1576128d06123ba565b5b600085013567ffffffffffffffff8111156128ef576128ee6123bf565b5b6128fb878288016127cc565b9450945050602061290e878288016125d9565b925050604061291f87828801612667565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129568261292b565b9050919050565b6129668161294b565b811461297157600080fd5b50565b6000813590506129838161295d565b92915050565b600080600080600061010086880312156129a6576129a56123ba565b5b60006129b488828901612974565b955050602086013567ffffffffffffffff8111156129d5576129d46123bf565b5b6129e1888289016127cc565b945094505060406129f4888289016125d9565b9250506060612a0588828901612667565b9150509295509295909350565b600080600060e08486031215612a2b57612a2a6123ba565b5b6000612a3986828701612974565b935050602084013567ffffffffffffffff811115612a5a57612a596123bf565b5b612a668682870161258a565b9250506040612a7786828701612667565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612abb826125b8565b9150612ac6836125b8565b925082612ad657612ad5612a81565b5b828206905092915050565b600081905092915050565b82818337600083830152505050565b6000612b078385612ae1565b9350612b14838584612aec565b82840190509392505050565b60008160601b9050919050565b6000612b3882612b20565b9050919050565b6000612b4a82612b2d565b9050919050565b612b62612b5d8261294b565b612b3f565b82525050565b6000612b75828587612afb565b9150612b818284612b51565b601482019150819050949350505050565b600081519050919050565b600081905092915050565b6000819050602082019050919050565b612bc1816124e1565b82525050565b6000612bd38383612bb8565b60208301905092915050565b6000602082019050919050565b6000612bf782612b92565b612c018185612b9d565b9350612c0c83612ba8565b8060005b83811015612c3d578151612c248882612bc7565b9750612c2f83612bdf565b925050600181019050612c10565b5085935050505092915050565b6000612c568284612bec565b915081905092915050565b6000612c6d8285612b51565b601482019150612c7d8284612bec565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc3826125b8565b9150612cce836125b8565b9250828201905080821115612ce657612ce5612c89565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d26826125f3565b915063ffffffff8203612d3c57612d3b612c89565b5b600182019050919050565b6000612d52826124e1565b9150612d5d836124e1565b9250828201905067ffffffffffffffff811115612d7d57612d7c612c89565b5b92915050565b600082825260208201905092915050565b612d9d816124e1565b82525050565b6000612daf8383612d94565b60208301905092915050565b6000612dc682612b92565b612dd08185612d83565b9350612ddb83612ba8565b8060005b83811015612e0c578151612df38882612da3565b9750612dfe83612bdf565b925050600181019050612ddf565b5085935050505092915050565b600082825260208201905092915050565b6000612e368385612e19565b9350612e43838584612aec565b612e4c83612429565b840190509392505050565b612e60816125f3565b82525050565b612e6f8161262f565b82525050565b612e7e816125b8565b82525050565b60a082016000820151612e9a6000850182612e57565b506020820151612ead6020850182612d94565b506040820151612ec06040850182612d94565b506060820151612ed36060850182612e66565b506080820151612ee66080850182612e75565b50505050565b6000610100820190508181036000830152612f078189612dbb565b90508181036020830152612f1c818789612e2a565b90508181036040830152612f31818587612e2a565b9050612f406060830184612e84565b979650505050505050565b6000819050919050565b6000612f64602084018461250c565b905092915050565b6000602082019050919050565b6000612f858385612b9d565b9350612f9082612f4b565b8060005b85811015612fc957612fa68284612f55565b612fb08882612bc7565b9750612fbb83612f6c565b925050600181019050612f94565b5085925050509392505050565b6000612fe3828486612f79565b91508190509392505050565b6000612ffa826125f3565b91506000820361300d5761300c612c89565b5b600182039050919050565b60006130248385612d83565b935061302f82612f4b565b8060005b85811015613068576130458284612f55565b61304f8882612da3565b975061305a83612f6c565b925050600181019050613033565b5085925050509392505050565b600060e0820190508181036000830152613090818789613018565b905081810360208301526130a5818587612e2a565b90506130b46040830184612e84565b9695505050505050565b600060c08201905081810360008301526130d9818587613018565b90506130e86020830184612e84565b949350505050565b600060208284031215613106576131056123ba565b5b60006131148482850161250c565b91505092915050565b6000613128826124e1565b9150613133836124e1565b9250828203905067ffffffffffffffff81111561315357613152612c89565b5b92915050565b6000613164826124e1565b915061316f836124e1565b925082820261317d816124e1565b915080821461318f5761318e612c89565b5b5092915050565b60006131a1826125b8565b91506131ac836125b8565b92508282039050818111156131c4576131c3612c89565b5b92915050565b6131d3816125b8565b82525050565b600060e08201905081810360008301526131f4818688613018565b905061320360208301856131ca565b6132106040830184612e84565b95945050505050565b600060c08201905081810360008301526132338185612dbb565b90506132426020830184612e84565b9392505050565b60008160e01b9050919050565b600061326182613249565b9050919050565b613279613274826125f3565b613256565b82525050565b60008160c01b9050919050565b60006132978261327f565b9050919050565b6132af6132aa826124e1565b61328c565b82525050565b6000819050919050565b6132d06132cb826125b8565b6132b5565b82525050565b60008160f81b9050919050565b60006132ee826132d6565b9050919050565b6000613300826132e3565b9050919050565b6133186133138261262f565b6132f5565b82525050565b600061332a8288613268565b60048201915061333a828761329e565b60088201915061334a828661329e565b60088201915061335a82856132bf565b60208201915061336a8284613307565b6001820191508190509695505050505050565b6000613388826125f3565b9150613393836125f3565b9250828203905063ffffffff8111156133af576133ae612c89565b5b92915050565b60006133c0826125f3565b91506133cb836125f3565b9250828201905063ffffffff8111156133e7576133e6612c89565b5b92915050565b6133f68161294b565b82525050565b600060608201905061341160008301866133ed565b61341e60208301856133ed565b61342b60408301846131ca565b949350505050565b6000815190506134428161263b565b92915050565b60006020828403121561345e5761345d6123ba565b5b600061346c84828501613433565b91505092915050565b600060408201905061348a60008301856133ed565b61349760208301846131ca565b9392505050565b60006134a9826125b8565b91506134b4836125b8565b92508282026134c2816125b8565b915082820484148315176134d9576134d8612c89565b5b509291505056fea2646970667358221220a3f0371b454175ff32596a7b7a17237c2c068771eae491cdf993246ce325958c64736f6c63430008120033", "userdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Reactivates a cluster"}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"notice": "Registers a new validator on the SSV Network"}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"notice": "Removes an existing validator from the SSV Network"}}, "notice": null}, "devdoc": {"methods": {"reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited for reactivation", "cluster": "Cluster to be reactivated", "operatorIds": "Array of IDs of operators managing the cluster"}, "return": null}, "registerValidator(bytes,uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"amount": "Amount of SSV tokens to be deposited", "cluster": "Cluster to be used with the new validator", "operatorIds": "Array of IDs of operators managing this validator", "publicKey": "The public key of the new validator", "sharesData": "Encrypted shares related to the new validator"}, "return": null}, "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))": {"author": null, "details": null, "params": {"cluster": "Cluster associated with the validator", "operatorIds": "Array of IDs of operators managing the validator", "publicKey": "The public key of the validator to be removed"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:12:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol": {"AST": {"absolutePath": "contracts/echidna/Operators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "Operators": [600], "ProtocolLib": [768], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 601, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "../modules/SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 1622, "src": "70:37:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 769, "src": "108:38:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVOperators", "nameLocations": ["170:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1621, "src": "170:12:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "170:12:0"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 600, "linearizedBaseContracts": [600, 1621, 2005, 1737], "name": "Operators", "nameLocation": "157:9:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8, "libraryName": {"id": 6, "name": "Types64", "nameLocations": ["195:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "195:7:0"}, "nodeType": "UsingForDirective", "src": "189:25:0", "typeName": {"id": 7, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 11, "libraryName": {"id": 9, "name": "Types256", "nameLocations": ["225:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "225:8:0"}, "nodeType": "UsingForDirective", "src": "219:27:0", "typeName": {"id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "238:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 15, "libraryName": {"id": 12, "name": "ProtocolLib", "nameLocations": ["257:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 768, "src": "257:11:0"}, "nodeType": "UsingForDirective", "src": "251:38:0", "typeName": {"id": 14, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 13, "name": "StorageProtocol", "nameLocations": ["273:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "273:15:0"}, "referencedDeclaration": 1779, "src": "273:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 18, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "319:20:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "295:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 16, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "295:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "342:11:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 21, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "383:16:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "359:49:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 19, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "359:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "402:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "id": 24, "mutability": "mutable", "name": "opIds", "nameLocation": "423:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "414:14:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 23, "nodeType": "ArrayTypeName", "src": "414:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 26, "mutability": "mutable", "name": "sault", "nameLocation": "450:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "434:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 25, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "434:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 28, "mutability": "mutable", "name": "minNetworkFee", "nameLocation": "476:13:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "461:28:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 27, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 34, "name": "AssertionFailed", "nameLocation": "502:15:0", "nodeType": "EventDefinition", "parameters": {"id": 33, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "525:10:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "518:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "518:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 32, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "542:13:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "537:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 31, "name": "bool", "nodeType": "ElementaryTypeName", "src": "537:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "517:39:0"}, "src": "496:61:0"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 40, "name": "AssertionFailed", "nameLocation": "568:15:0", "nodeType": "EventDefinition", "parameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 36, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "591:10:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "584:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 35, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "584:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 38, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "610:17:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "603:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 37, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "603:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "583:45:0"}, "src": "562:67:0"}, {"body": {"id": 109, "nodeType": "Block", "src": "649:509:0", "statements": [{"expression": {"id": 45, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 43, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "659:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 44, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "675:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "659:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 46, "nodeType": "ExpressionStatement", "src": "659:36:0"}, {"assignments": [49], "declarations": [{"constant": false, "id": 49, "mutability": "mutable", "name": "sp", "nameLocation": "729:2:0", "nodeType": "VariableDeclaration", "scope": 109, "src": "705:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 48, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 47, "name": "StorageProtocol", "nameLocations": ["705:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "705:15:0"}, "referencedDeclaration": 1779, "src": "705:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 53, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 50, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "734:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "753:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "734:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "734:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "705:54:0"}, {"expression": {"id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 54, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "769:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 56, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "772:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1763, "src": "769:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "805:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "769:42:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 59, "nodeType": "ExpressionStatement", "src": "769:42:0"}, {"expression": {"id": 69, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 60, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "821:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 62, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "824:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1766, "src": "821:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "863:19:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 64, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "855:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 63, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "855:7:0", "typeDescriptions": {}}}, "id": 66, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 67, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "884:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "855:35:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:37:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "821:71:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 70, "nodeType": "ExpressionStatement", "src": "821:71:0"}, {"expression": {"id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 71, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "902:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 73, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "905:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "902:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "934:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "902:35:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 76, "nodeType": "ExpressionStatement", "src": "902:35:0"}, {"expression": {"id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 77, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "947:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 79, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "950:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "947:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "977:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "947:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 82, "nodeType": "ExpressionStatement", "src": "947:36:0"}, {"expression": {"id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 83, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "993:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 85, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "996:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "993:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 86, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1023:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "993:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 88, "nodeType": "ExpressionStatement", "src": "993:36:0"}, {"expression": {"id": 93, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 89, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1039:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 91, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1042:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "1039:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 92, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1067:4:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "1039:32:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 94, "nodeType": "ExpressionStatement", "src": "1039:32:0"}, {"expression": {"id": 101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1081:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1084:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1081:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 98, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1101:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "32", "id": 99, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1117:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1101:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1081:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 102, "nodeType": "ExpressionStatement", "src": "1081:37:0"}, {"expression": {"arguments": [{"hexValue": "30", "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1149:1:0", "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"}], "expression": {"id": 103, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1129:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 105, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1132:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 671, "src": "1129:19:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1129:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 108, "nodeType": "ExpressionStatement", "src": "1129:22:0"}]}, "id": 110, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 41, "nodeType": "ParameterList", "parameters": [], "src": "646:2:0"}, "returnParameters": {"id": 42, "nodeType": "ParameterList", "parameters": [], "src": "649:0:0"}, "scope": 600, "src": "635:523:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 166, "nodeType": "Block", "src": "1226:306:0", "statements": [{"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "randomBytes", "nameLocation": "1249:11:0", "nodeType": "VariableDeclaration", "scope": 166, "src": "1236:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 115, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1236:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [{"hexValue": "3438", "id": 119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1273:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1263:9:0", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 117, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1267:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1263:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1236:40:0"}, {"body": {"id": 159, "nodeType": "Block", "src": "1316:165:0", "statements": [{"expression": {"id": 157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 132, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1330:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 134, "indexExpression": {"id": 133, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1342:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1330:14:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 144, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1409:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 145, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1416:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1422:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1416:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1433:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1437:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1433:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 149, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1445:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 142, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1392:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1396:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1392:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1392:55:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 141, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1382:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1382:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:4:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 139, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1377:4:0", "typeDescriptions": {}}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:72:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1452:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "1377:78:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 138, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1371:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 137, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1371:5:0", "typeDescriptions": {}}}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1371:85:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1347:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 135, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "1347:6:0", "typeDescriptions": {}}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1347:123:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1330:140:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 158, "nodeType": "ExpressionStatement", "src": "1330:140:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 126, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1303:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1307:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "1303:6:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 160, "initializationExpression": {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "i", "nameLocation": "1296:1:0", "nodeType": "VariableDeclaration", "scope": 160, "src": "1291:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 122, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1291:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 125, "initialValue": {"hexValue": "30", "id": 124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1300:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1291:10:0"}, "loopExpression": {"expression": {"id": 130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1311:3:0", "subExpression": {"id": 129, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1311:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 131, "nodeType": "ExpressionStatement", "src": "1311:3:0"}, "nodeType": "ForStatement", "src": "1286:195:0"}, {"expression": {"id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1490:7:0", "subExpression": {"id": 161, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1490:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 163, "nodeType": "ExpressionStatement", "src": "1490:7:0"}, {"expression": {"id": 164, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1514:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 114, "id": 165, "nodeType": "Return", "src": "1507:18:0"}]}, "id": 167, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "1173:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 111, "nodeType": "ParameterList", "parameters": [], "src": "1191:2:0"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 113, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1212:12:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 112, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1212:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1211:14:0"}, "scope": 600, "src": "1164:368:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1608:278:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1626:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 178, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1632:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1626:9:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d6178206d7573742062652067726561746572207468616e206d696e", "id": 180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1637:30:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}, "value": "Max must be greater than min"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}], "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1618:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1618:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "ExpressionStatement", "src": "1618:50:0"}, {"assignments": [184], "declarations": [{"constant": false, "id": 184, "mutability": "mutable", "name": "randomHash", "nameLocation": "1686:10:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1678:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 183, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1678:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 196, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 190, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1734:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 191, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1741:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1747:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1741:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 188, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1717:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 189, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1721:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1717:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1717:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 187, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1707:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1707:51:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1699:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1699:7:0", "typeDescriptions": {}}}, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1699:60:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1678:81:0"}, {"expression": {"id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1769:7:0", "subExpression": {"id": 197, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1769:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 199, "nodeType": "ExpressionStatement", "src": "1769:7:0"}, {"assignments": [201], "declarations": [{"constant": false, "id": 201, "mutability": "mutable", "name": "reducedHash", "nameLocation": "1793:11:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1786:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1786:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 206, "initialValue": {"arguments": [{"id": 204, "name": "randomHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, "src": "1814:10:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1807:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1807:6:0", "typeDescriptions": {}}}, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1807:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1786:39:0"}, {"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 207, "name": "reducedHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "1843:11:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 208, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1858:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 209, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1864:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1858:9:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1870:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1858:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 213, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1857:15:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1843:29:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 215, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1842:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 216, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1842:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 175, "id": 218, "nodeType": "Return", "src": "1835:44:0"}]}, "functionSelector": "41bfe2ba", "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateFee", "nameLocation": "1547:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 172, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 169, "mutability": "mutable", "name": "min", "nameLocation": "1567:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1560:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 168, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1560:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 171, "mutability": "mutable", "name": "max", "nameLocation": "1579:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1572:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1572:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1559:24:0"}, "returnParameters": {"id": 175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 174, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 220, "src": "1600:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 173, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1600:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1599:8:0"}, "scope": 600, "src": "1538:348:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 269, "nodeType": "Block", "src": "1932:383:0", "statements": [{"assignments": [224], "declarations": [{"constant": false, "id": 224, "mutability": "mutable", "name": "minN", "nameLocation": "1949:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1942:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1942:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 226, "initialValue": {"id": 225, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1956:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1942:27:0"}, {"assignments": [228], "declarations": [{"constant": false, "id": 228, "mutability": "mutable", "name": "maxN", "nameLocation": "1986:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1979:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 227, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1979:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 233, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 229, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1993:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2012:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1993:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1993:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2019:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1993:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1979:54:0"}, {"assignments": [235], "declarations": [{"constant": false, "id": 235, "mutability": "mutable", "name": "publicKey", "nameLocation": "2057:9:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2044:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 234, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2044:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 238, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 236, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "2069:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2069:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2044:45:0"}, {"assignments": [240], "declarations": [{"constant": false, "id": 240, "mutability": "mutable", "name": "fee", "nameLocation": "2106:3:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2099:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 239, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2099:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 245, "initialValue": {"arguments": [{"id": 242, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2125:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 243, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, "src": "2131:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 241, "name": "_generateFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2112:12:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (uint64,uint64) returns (uint64)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2112:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2099:37:0"}, {"clauses": [{"block": {"id": 260, "nodeType": "Block", "src": "2217:47:0", "statements": [{"expression": {"arguments": [{"id": 257, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 252, "src": "2242:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 254, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2231:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2237:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "2231:10:0", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2231:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 259, "nodeType": "ExpressionStatement", "src": "2231:22:0"}]}, "errorName": "", "id": 261, "nodeType": "TryCatchClause", "parameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "operatorId", "nameLocation": "2205:10:0", "nodeType": "VariableDeclaration", "scope": 261, "src": "2198:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 251, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2198:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2197:19:0"}, "src": "2189:75:0"}, {"block": {"id": 266, "nodeType": "Block", "src": "2271:38:0", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2292:5:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 262, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "2285:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2285:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 265, "nodeType": "ExpressionStatement", "src": "2285:13:0"}]}, "errorName": "", "id": 267, "nodeType": "TryCatchClause", "src": "2265:44:0"}], "externalCall": {"arguments": [{"id": 248, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "2173:9:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 249, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, "src": "2184:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 246, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2151:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2156:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 919, "src": "2151:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint64) external returns (uint64)"}}, "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2151:37:0", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 268, "nodeType": "TryStatement", "src": "2147:162:0"}]}, "functionSelector": "249eaafa", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "1901:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "1922:2:0"}, "returnParameters": {"id": 222, "nodeType": "ParameterList", "parameters": [], "src": "1932:0:0"}, "scope": 600, "src": "1892:423:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 294, "nodeType": "Block", "src": "2405:124:0", "statements": [{"expression": {"id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 277, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2415:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 278, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2428:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 281, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2448:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2454:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2448:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2441:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 279, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2441:6:0", "typeDescriptions": {}}}, "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2441:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2428:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2415:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 286, "nodeType": "ExpressionStatement", "src": "2415:46:0"}, {"expression": {"arguments": [{"id": 290, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2498:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 291, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "2510:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 287, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2472:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2477:20:0", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1088, "src": "2472:25:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2472:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 293, "nodeType": "ExpressionStatement", "src": "2472:50:0"}]}, "functionSelector": "60e7474e", "id": 295, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "2330:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 275, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "operatorId", "nameLocation": "2365:10:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2358:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 274, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2385:11:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2377:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 273, "name": "address", "nodeType": "ElementaryTypeName", "src": "2377:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2357:40:0"}, "returnParameters": {"id": 276, "nodeType": "ParameterList", "parameters": [], "src": "2405:0:0"}, "scope": 600, "src": "2321:208:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 358, "nodeType": "Block", "src": "2596:464:0", "statements": [{"expression": {"id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 300, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2606:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 301, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2619:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 304, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2639:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2645:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2639:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2632:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2632:6:0", "typeDescriptions": {}}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2632:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2619:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2606:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 309, "nodeType": "ExpressionStatement", "src": "2606:46:0"}, {"assignments": [312], "declarations": [{"constant": false, "id": 312, "mutability": "mutable", "name": "operator", "nameLocation": "2680:8:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2663:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 311, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 310, "name": "Operator", "nameLocations": ["2663:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "2663:8:0"}, "referencedDeclaration": 1650, "src": "2663:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 319, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 313, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2691:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2702:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2691:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2691:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2709:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2691:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 318, "indexExpression": {"id": 317, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2719:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2691:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2663:67:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 321, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2748:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2757:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2748:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2766:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2748:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2775:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2748:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2778:26:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 320, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2740:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:65:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "2740:65:0"}, {"assignments": [330], "declarations": [{"constant": false, "id": 330, "mutability": "mutable", "name": "fee", "nameLocation": "2823:3:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2816:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2816:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 333, "initialValue": {"expression": {"id": 331, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2829:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2838:3:0", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2829:12:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2816:25:0"}, {"assignments": [335], "declarations": [{"constant": false, "id": 335, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "2859:13:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2852:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2852:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 348, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 336, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, "src": "2876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 337, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2883:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 338, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "2902:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2921:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "2902:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2902:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2928:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "2902:48:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2883:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 343, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2882:69:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2876:75:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2875:77:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 346, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2967:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2875:108:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2852:131:0"}, {"expression": {"arguments": [{"id": 352, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3018:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 353, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 335, "src": "3030:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3044:6:0", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "3030:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3030:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 349, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2994:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2999:18:0", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1230, "src": "2994:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2994:59:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 357, "nodeType": "ExpressionStatement", "src": "2994:59:0"}]}, "functionSelector": "0f5baea8", "id": 359, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "2544:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "operatorId", "nameLocation": "2577:10:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "2570:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2569:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "2596:0:0"}, "scope": 600, "src": "2535:525:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 380, "nodeType": "Block", "src": "3127:109:0", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 364, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3137:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 365, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3150:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 368, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3170:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3176:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3170:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3163:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 366, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3163:6:0", "typeDescriptions": {}}}, "id": 370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3163:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3150:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3137:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3137:46:0"}, {"expression": {"arguments": [{"id": 377, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3218:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 374, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3194:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3199:18:0", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1340, "src": "3194:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3194:35:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 379, "nodeType": "ExpressionStatement", "src": "3194:35:0"}]}, "functionSelector": "45a5605a", "id": 381, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "3075:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "mutability": "mutable", "name": "operatorId", "nameLocation": "3108:10:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "3101:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 360, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3101:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3100:19:0"}, "returnParameters": {"id": 363, "nodeType": "ParameterList", "parameters": [], "src": "3127:0:0"}, "scope": 600, "src": "3066:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 402, "nodeType": "Block", "src": "3299:105:0", "statements": [{"expression": {"id": 394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 386, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3309:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 387, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3322:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 390, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3342:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3348:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3342:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 389, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3335:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 388, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3335:6:0", "typeDescriptions": {}}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3335:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3322:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3309:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3309:46:0"}, {"expression": {"arguments": [{"id": 399, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3386:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 396, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3366:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3371:14:0", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1025, "src": "3366:19:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3366:31:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3366:31:0"}]}, "functionSelector": "36058dc4", "id": 403, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "3251:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 384, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 383, "mutability": "mutable", "name": "operatorId", "nameLocation": "3280:10:0", "nodeType": "VariableDeclaration", "scope": 403, "src": "3273:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 382, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3273:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3272:19:0"}, "returnParameters": {"id": 385, "nodeType": "ParameterList", "parameters": [], "src": "3299:0:0"}, "scope": 600, "src": "3242:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 444, "nodeType": "Block", "src": "3534:278:0", "statements": [{"expression": {"id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 408, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3544:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 409, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3557:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 412, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3577:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3583:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3577:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 410, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {}}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3570:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3557:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3544:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 417, "nodeType": "ExpressionStatement", "src": "3544:46:0"}, {"assignments": [420], "declarations": [{"constant": false, "id": 420, "mutability": "mutable", "name": "operator", "nameLocation": "3618:8:0", "nodeType": "VariableDeclaration", "scope": 444, "src": "3601:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 418, "name": "Operator", "nameLocations": ["3601:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3601:8:0"}, "referencedDeclaration": 1650, "src": "3601:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 427, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 421, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3629:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3640:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3629:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3629:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3647:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3629:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 426, "indexExpression": {"id": 425, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3657:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3629:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3601:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3684:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3693:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "3684:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 430, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3702:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "3684:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3711:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3684:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 433, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3683:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 434, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3717:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3726:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3717:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3683:54:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 443, "nodeType": "IfStatement", "src": "3679:126:0", "trueBody": {"eventCall": {"arguments": [{"id": 438, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3772:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 439, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3784:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3793:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3784:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 437, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 34, "src": "3756:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3756:49:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 442, "nodeType": "EmitStatement", "src": "3751:54:0"}}]}, "functionSelector": "22ca0bed", "id": 445, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "3472:35:0", "nodeType": "FunctionDefinition", "parameters": {"id": 406, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 405, "mutability": "mutable", "name": "operatorId", "nameLocation": "3515:10:0", "nodeType": "VariableDeclaration", "scope": 445, "src": "3508:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 404, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3508:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3507:19:0"}, "returnParameters": {"id": 407, "nodeType": "ParameterList", "parameters": [], "src": "3534:0:0"}, "scope": 600, "src": "3463:349:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 506, "nodeType": "Block", "src": "3888:448:0", "statements": [{"expression": {"id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 450, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3898:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3911:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3916:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 455, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3937:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3943:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 454, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3930:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 453, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3930:6:0", "typeDescriptions": {}}}, "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3930:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3953:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3930:24:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 460, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3929:26:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3916:39:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 462, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3915:41:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3911:45:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3898:58:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 465, "nodeType": "ExpressionStatement", "src": "3898:58:0"}, {"assignments": [468], "declarations": [{"constant": false, "id": 468, "mutability": "mutable", "name": "operator", "nameLocation": "3983:8:0", "nodeType": "VariableDeclaration", "scope": 506, "src": "3966:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "Operator", "nameLocations": ["3966:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3966:8:0"}, "referencedDeclaration": 1650, "src": "3966:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 475, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 469, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3994:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4005:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3994:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3994:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 472, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4012:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3994:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 474, "indexExpression": {"id": 473, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4022:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3994:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3966:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 476, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "4062:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 477, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4071:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4062:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4080:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "4062:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 479, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4089:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4062:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4061:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 482, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4108:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4119:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4108:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4108:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4126:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4108:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 487, "indexExpression": {"id": 486, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4152:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4108:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 488, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4164:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4108:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4185:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4108:78:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 491, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4107:80:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4061:126:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 505, "nodeType": "IfStatement", "src": "4044:286:0", "trueBody": {"id": 504, "nodeType": "Block", "src": "4198:132:0", "statements": [{"eventCall": {"arguments": [{"id": 494, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4233:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 495, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4245:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4256:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4245:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4245:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4263:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4245:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 500, "indexExpression": {"id": 499, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4289:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4245:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4301:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4245:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 493, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 40, "src": "4217:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4217:102:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 503, "nodeType": "EmitStatement", "src": "4212:107:0"}]}}]}, "functionSelector": "9d5ceb91", "id": 507, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "3827:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 447, "mutability": "mutable", "name": "operatorId", "nameLocation": "3869:10:0", "nodeType": "VariableDeclaration", "scope": 507, "src": "3862:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 446, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3862:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3861:19:0"}, "returnParameters": {"id": 449, "nodeType": "ParameterList", "parameters": [], "src": "3888:0:0"}, "scope": 600, "src": "3818:518:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 547, "nodeType": "Block", "src": "4390:227:0", "statements": [{"body": {"id": 545, "nodeType": "Block", "src": "4439:172:0", "statements": [{"assignments": [522], "declarations": [{"constant": false, "id": 522, "mutability": "mutable", "name": "operator", "nameLocation": "4469:8:0", "nodeType": "VariableDeclaration", "scope": 545, "src": "4453:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 520, "name": "Operator", "nameLocations": ["4453:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4453:8:0"}, "referencedDeclaration": 1650, "src": "4453:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 531, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 523, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4480:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4491:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4480:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4480:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4498:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4480:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 530, "indexExpression": {"baseExpression": {"id": 527, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4508:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 529, "indexExpression": {"id": 528, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4514:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4480:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4453:64:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4538:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 534, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4547:14:0", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "4538:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4564:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4538:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 537, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4569:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4578:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4569:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 539, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4587:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4569:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4598:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4569:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4538:61:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 532, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4531:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4531:69:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 544, "nodeType": "ExpressionStatement", "src": "4531:69:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 513, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4416:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 514, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4420:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4426:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4420:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4416:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 546, "initializationExpression": {"assignments": [511], "declarations": [{"constant": false, "id": 511, "mutability": "mutable", "name": "i", "nameLocation": "4413:1:0", "nodeType": "VariableDeclaration", "scope": 546, "src": "4405:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4405:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 512, "nodeType": "VariableDeclarationStatement", "src": "4405:9:0"}, "loopExpression": {"expression": {"id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4434:3:0", "subExpression": {"id": 517, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4434:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 519, "nodeType": "ExpressionStatement", "src": "4434:3:0"}, "nodeType": "ForStatement", "src": "4400:211:0"}]}, "functionSelector": "e7780e00", "id": 548, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "4351:29:0", "nodeType": "FunctionDefinition", "parameters": {"id": 508, "nodeType": "ParameterList", "parameters": [], "src": "4380:2:0"}, "returnParameters": {"id": 509, "nodeType": "ParameterList", "parameters": [], "src": "4390:0:0"}, "scope": 600, "src": "4342:275:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 598, "nodeType": "Block", "src": "4675:326:0", "statements": [{"assignments": [553], "declarations": [{"constant": false, "id": 553, "mutability": "mutable", "name": "sp", "nameLocation": "4708:2:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4685:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 552, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 551, "name": "StorageProtocol", "nameLocations": ["4685:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "4685:15:0"}, "referencedDeclaration": 1779, "src": "4685:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 557, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 554, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "4713:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4732:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "4713:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4713:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4685:53:0"}, {"assignments": [559], "declarations": [{"constant": false, "id": 559, "mutability": "mutable", "name": "earnings", "nameLocation": "4755:8:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4748:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 558, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4748:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 560, "nodeType": "VariableDeclarationStatement", "src": "4748:15:0"}, {"body": {"id": 589, "nodeType": "Block", "src": "4812:140:0", "statements": [{"assignments": [573], "declarations": [{"constant": false, "id": 573, "mutability": "mutable", "name": "operator", "nameLocation": "4842:8:0", "nodeType": "VariableDeclaration", "scope": 589, "src": "4826:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 572, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 571, "name": "Operator", "nameLocations": ["4826:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4826:8:0"}, "referencedDeclaration": 1650, "src": "4826:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 582, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 574, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4853:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4864:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4853:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4853:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4871:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4853:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 581, "indexExpression": {"baseExpression": {"id": 578, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4881:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 580, "indexExpression": {"id": 579, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4887:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4881:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4853:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4826:64:0"}, {"expression": {"id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 583, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4904:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 584, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 573, "src": "4916:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4925:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4916:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 586, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4934:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4916:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4904:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 588, "nodeType": "ExpressionStatement", "src": "4904:37:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 564, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4789:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 565, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4793:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4793:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4789:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 590, "initializationExpression": {"assignments": [562], "declarations": [{"constant": false, "id": 562, "mutability": "mutable", "name": "i", "nameLocation": "4786:1:0", "nodeType": "VariableDeclaration", "scope": 590, "src": "4778:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4778:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 563, "nodeType": "VariableDeclarationStatement", "src": "4778:9:0"}, "loopExpression": {"expression": {"id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4807:3:0", "subExpression": {"id": 568, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4807:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 570, "nodeType": "ExpressionStatement", "src": "4807:3:0"}, "nodeType": "ForStatement", "src": "4773:179:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 592, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 553, "src": "4968:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol memory"}}, "id": 593, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4971:10:0", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "4968:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 594, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4985:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4968:25:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 591, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4961:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4961:33:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "4961:33:0"}]}, "functionSelector": "30eab391", "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "check_operatorEarningsWithBalance", "nameLocation": "4632:33:0", "nodeType": "FunctionDefinition", "parameters": {"id": 549, "nodeType": "ParameterList", "parameters": [], "src": "4665:2:0"}, "returnParameters": {"id": 550, "nodeType": "ParameterList", "parameters": [], "src": "4675:0:0"}, "scope": 600, "src": "4623:378:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 601, "src": "148:4855:0", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:4959:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1737]}, "id": 1738, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1623, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1737, "linearizedBaseContracts": [1737], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1633, "members": [{"constant": false, "id": 1626, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1625, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1629, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1628, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1632, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1631, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1650, "members": [{"constant": false, "id": 1636, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1635, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1639, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1638, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1642, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1641, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1645, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1644, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1649, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1648, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1647, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1633, "src": "1129:8:1"}, "referencedDeclaration": 1633, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1660, "members": [{"constant": false, "id": 1653, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1652, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1656, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1655, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1659, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1658, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1676, "members": [{"constant": false, "id": 1663, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1662, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1666, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1665, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1669, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1668, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1672, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1675, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1678, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1677, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1680, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1679, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1682, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1681, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1684, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1683, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1686, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1685, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1688, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1687, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1690, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1689, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1692, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1694, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1693, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1696, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1695, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1698, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1697, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1700, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1699, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1702, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1701, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1704, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1703, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1706, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1705, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1708, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1707, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1710, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1709, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1712, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1711, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1714, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1713, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1716, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1718, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1717, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1720, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1719, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1722, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1721, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1724, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1723, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1726, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1725, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1728, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1730, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1729, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1732, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1731, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1734, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1733, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1736, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1735, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1738, "src": "70:3477:1", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [1737], "ISSVOperators": [2005]}, "id": 2006, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1871, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1872, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2006, "sourceUnit": 1738, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1873, "name": "ISSVNetworkCore", "nameLocations": ["130:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1737, "src": "130:15:2"}, "id": 1874, "nodeType": "InheritanceSpecifier", "src": "130:15:2"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2005, "linearizedBaseContracts": [2005, 1737], "name": "ISSVOperators", "nameLocation": "113:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1875, "nodeType": "StructuredDocumentation", "src": "152:136:2", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "10e7f406", "id": 1884, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1880, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1877, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "319:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1876, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "fee", "nameLocation": "352:3:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "345:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1878, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "345:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "318:38:2"}, "returnParameters": {"id": 1883, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1882, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1884, "src": "375:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1881, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "374:8:2"}, "scope": 2005, "src": "293:90:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1885, "nodeType": "StructuredDocumentation", "src": "389:103:2", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1890, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "506:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1887, "mutability": "mutable", "name": "operatorId", "nameLocation": "528:10:2", "nodeType": "VariableDeclaration", "scope": 1890, "src": "521:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1886, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "521:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "520:19:2"}, "returnParameters": {"id": 1889, "nodeType": "ParameterList", "parameters": [], "src": "548:0:2"}, "scope": 2005, "src": "497:52:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1891, "nodeType": "StructuredDocumentation", "src": "555:152:2", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1898, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "721:20:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1896, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "operatorId", "nameLocation": "749:10:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "742:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1892, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "742:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1895, "mutability": "mutable", "name": "whitelisted", "nameLocation": "769:11:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "761:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1894, "name": "address", "nodeType": "ElementaryTypeName", "src": "761:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "741:40:2"}, "returnParameters": {"id": 1897, "nodeType": "ParameterList", "parameters": [], "src": "790:0:2"}, "scope": 2005, "src": "712:79:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1899, "nodeType": "StructuredDocumentation", "src": "797:136:2", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1906, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "947:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1901, "mutability": "mutable", "name": "operatorId", "nameLocation": "973:10:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "966:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1900, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "966:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1903, "mutability": "mutable", "name": "fee", "nameLocation": "993:3:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "985:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "985:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "965:32:2"}, "returnParameters": {"id": 1905, "nodeType": "ParameterList", "parameters": [], "src": "1006:0:2"}, "scope": 2005, "src": "938:69:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1907, "nodeType": "StructuredDocumentation", "src": "1013:88:2", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1912, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1115:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1910, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1909, "mutability": "mutable", "name": "operatorId", "nameLocation": "1141:10:2", "nodeType": "VariableDeclaration", "scope": 1912, "src": "1134:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1134:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1133:19:2"}, "returnParameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "1161:0:2"}, "scope": 2005, "src": "1106:56:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1913, "nodeType": "StructuredDocumentation", "src": "1168:96:2", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1918, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1278:25:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1915, "mutability": "mutable", "name": "operatorId", "nameLocation": "1311:10:2", "nodeType": "VariableDeclaration", "scope": 1918, "src": "1304:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1914, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1304:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1303:19:2"}, "returnParameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "1331:0:2"}, "scope": 2005, "src": "1269:63:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1919, "nodeType": "StructuredDocumentation", "src": "1338:135:2", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1926, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1487:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1512:10:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1505:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1505:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "fee", "nameLocation": "1532:3:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1524:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1504:32:2"}, "returnParameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "1545:0:2"}, "scope": 2005, "src": "1478:68:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1927, "nodeType": "StructuredDocumentation", "src": "1552:154:2", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1934, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1720:24:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1929, "mutability": "mutable", "name": "operatorId", "nameLocation": "1752:10:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1745:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1928, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1931, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1772:11:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1764:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1764:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1744:40:2"}, "returnParameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "1793:0:2"}, "scope": 2005, "src": "1711:83:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1935, "nodeType": "StructuredDocumentation", "src": "1800:92:2", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1940, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1906:27:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1937, "mutability": "mutable", "name": "operatorId", "nameLocation": "1941:10:2", "nodeType": "VariableDeclaration", "scope": 1940, "src": "1934:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1936, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1934:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1933:19:2"}, "returnParameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "1961:0:2"}, "scope": 2005, "src": "1897:65:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1941, "nodeType": "StructuredDocumentation", "src": "1968:317:2", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1951, "name": "OperatorAdded", "nameLocation": "2296:13:2", "nodeType": "EventDefinition", "parameters": {"id": 1950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1943, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2325:10:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2310:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1942, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2310:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1945, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2353:5:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2337:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2337:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2366:9:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2360:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1946, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2360:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1949, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2385:3:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2377:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2377:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2309:80:2"}, "src": "2290:100:2"}, {"anonymous": false, "documentation": {"id": 1952, "nodeType": "StructuredDocumentation", "src": "2396:103:2", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1956, "name": "OperatorRemoved", "nameLocation": "2510:15:2", "nodeType": "EventDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1954, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2541:10:2", "nodeType": "VariableDeclaration", "scope": 1956, "src": "2526:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2526:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2525:27:2"}, "src": "2504:49:2"}, {"anonymous": false, "documentation": {"id": 1957, "nodeType": "StructuredDocumentation", "src": "2559:179:2", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1963, "name": "OperatorWhitelistUpdated", "nameLocation": "2749:24:2", "nodeType": "EventDefinition", "parameters": {"id": 1962, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1959, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2789:10:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2774:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1958, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2774:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1961, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2809:11:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2801:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1960, "name": "address", "nodeType": "ElementaryTypeName", "src": "2801:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2773:48:2"}, "src": "2743:79:2"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1973, "name": "OperatorFeeDeclared", "nameLocation": "2833:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1965, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2869:5:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2853:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1964, "name": "address", "nodeType": "ElementaryTypeName", "src": "2853:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1967, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2891:10:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2876:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2876:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1969, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2911:11:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2903:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2903:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1971, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2932:3:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2924:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2924:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2852:84:2"}, "src": "2827:110:2"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1979, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2949:31:2", "nodeType": "EventDefinition", "parameters": {"id": 1978, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1975, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2997:5:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "2981:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1974, "name": "address", "nodeType": "ElementaryTypeName", "src": "2981:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1977, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3019:10:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "3004:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1976, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3004:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2980:50:2"}, "src": "2943:88:2"}, {"anonymous": false, "documentation": {"id": 1980, "nodeType": "StructuredDocumentation", "src": "3036:192:2", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1990, "name": "OperatorFeeExecuted", "nameLocation": "3239:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1982, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3275:5:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3259:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1981, "name": "address", "nodeType": "ElementaryTypeName", "src": "3259:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1984, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3297:10:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3282:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1983, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3282:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1986, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3317:11:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3309:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1985, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3309:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1988, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3338:3:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3330:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3330:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3258:84:2"}, "src": "3233:110:2"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1998, "name": "OperatorWithdrawn", "nameLocation": "3354:17:2", "nodeType": "EventDefinition", "parameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1992, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3388:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3372:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1991, "name": "address", "nodeType": "ElementaryTypeName", "src": "3372:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1994, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3410:10:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3395:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1993, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3395:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1996, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3430:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3422:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3422:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3371:65:2"}, "src": "3348:89:2"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 2004, "name": "FeeRecipientAddressUpdated", "nameLocation": "3448:26:2", "nodeType": "EventDefinition", "parameters": {"id": 2003, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2000, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3491:5:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3475:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1999, "name": "address", "nodeType": "ElementaryTypeName", "src": "3475:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2002, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3506:16:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3498:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "3498:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3474:49:2"}, "src": "3442:82:2"}], "scope": 2006, "src": "103:3423:2", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3482:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2137, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2007, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2008, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2137, "sourceUnit": 2460, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2136, "linearizedBaseContracts": [2136], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2015, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2011, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2010, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2009, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "141:10:3"}, "referencedDeclaration": 2389, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2013, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2012, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2022, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2019, "id": 2021, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2023, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2016, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2018, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2023, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2017, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2136, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2046, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2035, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2025, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2036, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2027, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2030, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2578, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2045, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2044, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2039, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2043, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2047, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2025, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2024, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2027, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2029, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2136, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2073, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2057, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2061, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}], "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2059, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2063, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2049, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2052, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2610, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2072, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2071, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2066, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2070, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2074, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2049, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2074, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2051, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2136, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2100, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2082, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2077, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "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": 2084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2083, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2091, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2090, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2081, "id": 2089, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2093], "declarations": [{"constant": false, "id": 2093, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2100, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2094, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2077, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2093, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2095, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2096, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2093, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2097, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2081, "id": 2099, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2075, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2101, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2078, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2077, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2076, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2081, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2080, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2079, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2136, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2134, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2110, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2109, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2101, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2118, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2113, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1732, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2117, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2119, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 2410, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2125, "indexExpression": {"id": 2124, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2126, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2128, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2130, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, {"id": 2131, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2129, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$2389_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2133, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2135, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2104, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2102, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1826:10:3"}, "referencedDeclaration": 2389, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2106, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2105, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2108, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2136, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2137, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "OperatorLib": [2379], "SSVModules": [2389], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 2380, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2138, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2139, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1738, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2140, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 2460, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2141, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1803, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2142, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1870, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2379, "linearizedBaseContracts": [2379], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2145, "libraryName": {"id": 2143, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2144, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2198, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2152], "declarations": [{"constant": false, "id": 2152, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2198, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2166, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2155, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2153, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2158, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2159, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2162, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2163, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2164, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2167, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2171, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2172, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2174, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2175, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2178, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2180, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2181, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2185, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2186, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2189, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2190, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2193, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2192, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2191, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2197, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2199, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2148, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2199, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2147, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2146, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "280:24:4"}, "referencedDeclaration": 1650, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2150, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2379, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2252, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2206], "declarations": [{"constant": false, "id": 2206, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2252, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2205, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2220, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2209, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2208, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2207, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2212, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2214, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2216, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2217, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2218, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2221, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2225, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2226, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2228, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2229, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2234, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2235, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2240, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2247, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2246, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2245, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2251, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2253, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2202, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2253, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2201, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2200, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "653:24:4"}, "referencedDeclaration": 1650, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2204, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2379, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2281, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2259, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2269, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2264, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1690, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2268, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2270, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2271, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1642, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2272, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2280, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2275, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2279, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2282, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2256, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2282, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2255, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2254, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1016:24:4"}, "referencedDeclaration": 1650, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2258, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2379, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2377, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2375, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2307], "declarations": [{"constant": false, "id": 2307, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2306, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2311, "initialValue": {"baseExpression": {"id": 2308, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2310, "indexExpression": {"id": 2309, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2316], "declarations": [{"constant": false, "id": 2316, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2315, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2314, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1599:24:4"}, "referencedDeclaration": 1650, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2321, "initialValue": {"baseExpression": {"expression": {"id": 2317, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2318, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2320, "indexExpression": {"id": 2319, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2307, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2322, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2324, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2364, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2363, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2328, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2327, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2253, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1650_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2330, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2331, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2287, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2340, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2342, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2344, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2345, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2355, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2350, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1718, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2354, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2357, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2339, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2333, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2336, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2338, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2358, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2359, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2362, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2365, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2295, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2366, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2370, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2374, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2373, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2302, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2303, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2376, "initializationExpression": {"assignments": [2300], "declarations": [{"constant": false, "id": 2300, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2376, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2301, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2378, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2285, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2283, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2284, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2287, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2289, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2288, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2291, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2290, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1401:11:4"}, "referencedDeclaration": 2436, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2295, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2294, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2297, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2379, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2380, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "ISSVNetworkCore": [1737], "ProtocolLib": [768], "SSVStorageProtocol": [1802], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 769, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 602, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 603, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1738, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 604, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1870, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 605, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1803, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 768, "linearizedBaseContracts": [768], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 608, "libraryName": {"id": 606, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 607, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 631, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 616, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 620, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 622, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 626, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 627, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 615, "id": 630, "nodeType": "Return", "src": "443:96:5"}]}, "id": 632, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 612, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 611, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 632, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 610, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 609, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "374:15:5"}, "referencedDeclaration": 1779, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 614, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 632, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 613, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 768, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 670, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 641, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 640, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 644, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 651, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 652, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 657, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 655, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 661, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 662, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 665, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 669, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 671, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 635, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 634, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 633, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "578:15:5"}, "referencedDeclaration": 1779, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 637, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 636, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 639, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 768, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 695, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 677, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 679, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 681, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 680, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 684, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 690, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 688, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 694, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 696, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 674, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 673, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 672, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "956:15:5"}, "referencedDeclaration": 1779, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 676, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 768, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 723, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 704, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 705, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 708, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 706, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 711, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 712, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 714, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 715, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 718, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 703, "id": 722, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 724, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 700, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 699, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 724, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 698, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 697, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1141:15:5"}, "referencedDeclaration": 1779, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 702, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 724, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 701, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 768, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 766, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 735, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 734, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 737, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 738, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 729, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 747, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 749, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 751, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 752, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 764, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 763, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 758, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1734, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 761, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 762, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 765, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 746, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 740, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 742, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 743, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 745, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 767, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 727, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 726, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 725, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1351:15:5"}, "referencedDeclaration": 1779, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 729, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 728, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 731, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 730, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 733, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 768, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 769, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2460, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2381, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2382, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 1738, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 2383, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2534, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2384, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2612, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 2389, "members": [{"id": 2385, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 2386, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 2387, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 2388, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2436, "members": [{"constant": false, "id": 2394, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2393, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2391, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2392, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2399, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2398, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2396, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2397, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2404, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 2403, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2401, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2402, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 2410, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 2409, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2407, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2406, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1006:10:6"}, "referencedDeclaration": 2389, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2408, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2415, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2414, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2412, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2413, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2421, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2420, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2417, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2418, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "1322:40:6"}, "referencedDeclaration": 1660, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2427, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2426, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2423, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2425, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2424, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1488:24:6"}, "referencedDeclaration": 1650, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2431, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}, "typeName": {"id": 2430, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2429, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2611, "src": "1599:6:6"}, "referencedDeclaration": 2611, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2435, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2434, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2433, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1686:16:6"}, "referencedDeclaration": 2465, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2460, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2459, "linearizedBaseContracts": [2459], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2446, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2459, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2437, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2440, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2442, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2439, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2457, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2453], "declarations": [{"constant": false, "id": 2453, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2457, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2452, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2455, "initialValue": {"id": 2454, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2446, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2453, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2450, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2456, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2458, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2447, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2451, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2450, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2458, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2449, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2448, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1891:11:6"}, "referencedDeclaration": 2436, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2459, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2460, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1802], "StorageProtocol": [1779]}, "id": 1803, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1739, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 1779, "members": [{"constant": false, "id": 1742, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1741, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1745, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1744, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1748, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1751, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1750, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1754, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1753, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1760, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1763, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1766, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1769, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1768, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1772, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1775, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1774, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1778, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 1803, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1802, "linearizedBaseContracts": [1802], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1789, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 1802, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1780, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1783, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1782, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 1786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1800, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [1796], "declarations": [{"constant": false, "id": 1796, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 1800, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1798, "initialValue": {"id": 1797, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1789, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1796, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 1793, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 1799, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 1801, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1790, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 1794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 1801, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1792, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1791, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1711:15:7"}, "referencedDeclaration": 1779, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 1802, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1803, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "Types256": [1869], "Types64": [1820]}, "id": 1870, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1804, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 1807, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 1870, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1805, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1806, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1820, "linearizedBaseContracts": [1820], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1818, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1814, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1809, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1815, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1813, "id": 1817, "nodeType": "Return", "src": "212:30:8"}]}, "id": 1819, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1809, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 1819, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1808, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 1813, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1812, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1819, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1811, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 1820, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1869, "linearizedBaseContracts": [1869], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1848, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1828, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1832, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1834, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1838, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1842, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1841, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1868, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1844, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1839, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1826, "id": 1847, "nodeType": "Return", "src": "425:50:8"}]}, "id": 1849, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1822, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 1849, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1821, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 1826, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1825, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1849, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1824, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 1869, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1867, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1857, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1858, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1864, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 1865, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1855, "id": 1866, "nodeType": "Return", "src": "638:12:8"}]}, "id": 1868, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1851, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 1868, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1854, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 1869, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 1622, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 770, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 771, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2006, "src": "70:41:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 772, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1870, "src": "112:32:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 773, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2460, "src": "145:37:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 774, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1803, "src": "183:45:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 775, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2380, "src": "229:38:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 776, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2137, "src": "268:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 777, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2534, "src": "304:52:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 778, "name": "ISSVOperators", "nameLocations": ["383:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2005, "src": "383:13:9"}, "id": 779, "nodeType": "InheritanceSpecifier", "src": "383:13:9"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1621, "linearizedBaseContracts": [1621, 2005, 1737], "name": "SSVOperators", "nameLocation": "367:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 782, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "403:58:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:9", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 785, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "467:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 783, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:9", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 788, "libraryName": {"id": 786, "name": "Types256", "nameLocations": ["529:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "529:8:9"}, "nodeType": "UsingForDirective", "src": "523:27:9", "typeName": {"id": 787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 791, "libraryName": {"id": 789, "name": "Types64", "nameLocations": ["561:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "561:7:9"}, "nodeType": "UsingForDirective", "src": "555:25:9", "typeName": {"id": 790, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 795, "libraryName": {"id": 792, "name": "Counters", "nameLocations": ["591:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2533, "src": "591:8:9"}, "nodeType": "UsingForDirective", "src": "585:36:9", "typeName": {"id": 794, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 793, "name": "Counters.Counter", "nameLocations": ["604:8:9", "613:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "604:16:9"}, "referencedDeclaration": 2465, "src": "604:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 799, "libraryName": {"id": 796, "name": "OperatorLib", "nameLocations": ["632:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2379, "src": "632:11:9"}, "nodeType": "UsingForDirective", "src": "626:31:9", "typeName": {"id": 798, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 797, "name": "Operator", "nameLocations": ["648:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "648:8:9"}, "referencedDeclaration": 1650, "src": "648:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1884], "body": {"id": 918, "nodeType": "Block", "src": "880:886:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "894:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "901:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "894:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 812, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "906:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 813, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "912:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "906:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "894:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 822, "nodeType": "IfStatement", "src": "890:103:9", "trueBody": {"id": 821, "nodeType": "Block", "src": "934:59:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 816, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "955:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "971:9:9", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 1682, "src": "955:25:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 820, "nodeType": "RevertStatement", "src": "948:34:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 823, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1006:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 824, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1012:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1031:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1012:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1012:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1038:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1012:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1006:46:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 835, "nodeType": "IfStatement", "src": "1002:112:9", "trueBody": {"id": 834, "nodeType": "Block", "src": "1054:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 829, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1075:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:10:9", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 1736, "src": "1075:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1075:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 833, "nodeType": "RevertStatement", "src": "1068:35:9"}]}}, {"assignments": [838], "declarations": [{"constant": false, "id": 838, "mutability": "mutable", "name": "s", "nameLocation": "1144:1:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1124:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 837, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 836, "name": "StorageData", "nameLocations": ["1124:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1124:11:9"}, "referencedDeclaration": 2436, "src": "1124:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 842, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 839, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1148:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1159:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1148:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1148:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1124:41:9"}, {"assignments": [844], "declarations": [{"constant": false, "id": 844, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1184:8:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1176:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1176:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 848, "initialValue": {"arguments": [{"id": 846, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1205:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 845, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1195:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1176:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 849, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1229:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 850, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1231:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1229:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 852, "indexExpression": {"id": 851, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1244:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1229:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1257:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1229:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 860, "nodeType": "IfStatement", "src": "1225:81:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 855, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1267:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1283:21:9", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 1730, "src": "1267:37:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1267:39:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 859, "nodeType": "RevertStatement", "src": "1260:46:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 861, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1317:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 864, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1319:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1317:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 865, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1334:9:9", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2491, "src": "1317:26:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2465_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1317:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 867, "nodeType": "ExpressionStatement", "src": "1317:28:9"}, {"expression": {"id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 868, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1355:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 871, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1367:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 872, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1369:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1367:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 873, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1384:7:9", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2477, "src": "1367:24:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2465_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1367:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1360:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 869, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1360:6:9", "typeDescriptions": {}}}, "id": 875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1360:34:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1355:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 877, "nodeType": "ExpressionStatement", "src": "1355:39:9"}, {"expression": {"id": 900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 878, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1404:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1406:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1404:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 882, "indexExpression": {"id": 880, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1416:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1404:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 884, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1452:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1456:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1452:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 890, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1526:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1532:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "1526:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1519:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 888, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1519:6:9", "typeDescriptions": {}}}, "id": 892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1519:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1548:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1560:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 886, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1486:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1502:8:9", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1633, "src": "1486:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$1633_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1512:5:9", "1541:5:9", "1551:7:9"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1486:77:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1593:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 897, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1613:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 898, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1643:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 883, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "1422:8:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$1650_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 899, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1445:5:9", "1476:8:9", "1577:14:9", "1608:3:9", "1630:11:9"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1422:237:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1404:255:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 901, "nodeType": "ExpressionStatement", "src": "1404:255:9"}, {"expression": {"id": 908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 902, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1669:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1671:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1669:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 906, "indexExpression": {"id": 904, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1684:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1669:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 907, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1696:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1669:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 909, "nodeType": "ExpressionStatement", "src": "1669:29:9"}, {"eventCall": {"arguments": [{"id": 911, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1728:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 912, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1732:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1736:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1732:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 914, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1744:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 915, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1755:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 910, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1951, "src": "1714:13:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1714:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 917, "nodeType": "EmitStatement", "src": "1709:50:9"}]}, "functionSelector": "10e7f406", "id": 919, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:9", "nodeType": "FunctionDefinition", "overrides": {"id": 805, "nodeType": "OverrideSpecifier", "overrides": [], "src": "851:8:9"}, "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 801, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "804:24:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 800, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 803, "mutability": "mutable", "name": "fee", "nameLocation": "837:3:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "830:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "830:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "803:38:9"}, "returnParameters": {"id": 808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 807, "mutability": "mutable", "name": "id", "nameLocation": "876:2:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "869:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 806, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "869:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "868:11:9"}, "scope": 1621, "src": "778:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1890], "body": {"id": 1024, "nodeType": "Block", "src": "1833:738:9", "statements": [{"assignments": [927], "declarations": [{"constant": false, "id": 927, "mutability": "mutable", "name": "s", "nameLocation": "1863:1:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1843:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 926, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 925, "name": "StorageData", "nameLocations": ["1843:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1843:11:9"}, "referencedDeclaration": 2436, "src": "1843:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 931, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 928, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1867:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1878:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1867:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1867:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1843:41:9"}, {"assignments": [934], "declarations": [{"constant": false, "id": 934, "mutability": "mutable", "name": "operator", "nameLocation": "1910:8:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1894:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 933, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 932, "name": "Operator", "nameLocations": ["1894:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1894:8:9"}, "referencedDeclaration": 1650, "src": "1894:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 939, "initialValue": {"baseExpression": {"expression": {"id": 935, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "1921:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1923:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1921:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 938, "indexExpression": {"id": 937, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "1933:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1921:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1894:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1954:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1963:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "1954:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1954:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "1954:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 945, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1986:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "1986:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 948, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1986:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 949, "nodeType": "ExpressionStatement", "src": "1986:25:9"}, {"assignments": [951], "declarations": [{"constant": false, "id": 951, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2028:14:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "2021:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2021:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 955, "initialValue": {"expression": {"expression": {"id": 952, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2045:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 953, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2054:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2045:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2063:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2045:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2021:49:9"}, {"expression": {"id": 962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 956, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2090:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2081:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 960, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2099:5:9", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2081:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2107:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2081:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 963, "nodeType": "ExpressionStatement", "src": "2081:27:9"}, {"expression": {"id": 970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 964, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2118:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 967, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2127:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2118:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 968, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2136:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2118:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2146:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2118:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 971, "nodeType": "ExpressionStatement", "src": "2118:29:9"}, {"expression": {"id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 972, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2157:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2166:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "2157:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2183:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2157:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 977, "nodeType": "ExpressionStatement", "src": "2157:27:9"}, {"expression": {"id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 978, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2203:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2194:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2209:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2194:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 983, "nodeType": "ExpressionStatement", "src": "2194:16:9"}, {"condition": {"expression": {"id": 984, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2225:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 985, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2234:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2225:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 999, "nodeType": "IfStatement", "src": "2221:132:9", "trueBody": {"id": 998, "nodeType": "Block", "src": "2247:106:9", "statements": [{"expression": {"id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 986, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2261:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 988, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2270:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2261:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2284:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2261:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 991, "nodeType": "ExpressionStatement", "src": "2261:28:9"}, {"expression": {"id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2303:39:9", "subExpression": {"baseExpression": {"expression": {"id": 992, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2310:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2312:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2310:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 995, "indexExpression": {"id": 994, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2331:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2310:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 997, "nodeType": "ExpressionStatement", "src": "2303:39:9"}]}}, {"expression": {"id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1000, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2362:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1003, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2364:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2362:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1004, "indexExpression": {"id": 1002, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2374:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2362:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1005, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2388:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2362:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1007, "nodeType": "ExpressionStatement", "src": "2362:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1008, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2411:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2428:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2411:18:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1019, "nodeType": "IfStatement", "src": "2407:116:9", "trueBody": {"id": 1018, "nodeType": "Block", "src": "2431:92:9", "statements": [{"expression": {"arguments": [{"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2476:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1013, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2488:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2503:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "2488:21:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2488:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1011, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "2445:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2445:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1017, "nodeType": "ExpressionStatement", "src": "2445:67:9"}]}}, {"eventCall": {"arguments": [{"id": 1021, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2553:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1020, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1956, "src": "2537:15:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 1022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2537:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1023, "nodeType": "EmitStatement", "src": "2532:32:9"}]}, "functionSelector": "2e168e0e", "id": 1025, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1781:14:9", "nodeType": "FunctionDefinition", "overrides": {"id": 923, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1824:8:9"}, "parameters": {"id": 922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1803:10:9", "nodeType": "VariableDeclaration", "scope": 1025, "src": "1796:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1796:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1795:19:9"}, "returnParameters": {"id": 924, "nodeType": "ParameterList", "parameters": [], "src": "1833:0:9"}, "scope": 1621, "src": "1772:799:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1898], "body": {"id": 1087, "nodeType": "Block", "src": "2656:407:9", "statements": [{"assignments": [1034], "declarations": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "s", "nameLocation": "2686:1:9", "nodeType": "VariableDeclaration", "scope": 1087, "src": "2666:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1033, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1032, "name": "StorageData", "nameLocations": ["2666:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "2666:11:9"}, "referencedDeclaration": 2436, "src": "2666:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1038, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1035, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2690:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2701:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2690:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2690:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2666:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1039, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2717:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1042, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2719:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2717:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1043, "indexExpression": {"id": 1041, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2729:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2717:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2741:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "2717:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2717:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1046, "nodeType": "ExpressionStatement", "src": "2717:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1047, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2768:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2791:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1049, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2783:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "2783:7:9", "typeDescriptions": {}}}, "id": 1051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2783:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2768:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1072, "nodeType": "Block", "src": "2869:67:9", "statements": [{"expression": {"id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1063, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2883:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1066, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2885:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2883:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1067, "indexExpression": {"id": 1065, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2895:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2883:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2907:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2883:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2921:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2883:42:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1071, "nodeType": "ExpressionStatement", "src": "2883:42:9"}]}, "id": 1073, "nodeType": "IfStatement", "src": "2764:172:9", "trueBody": {"id": 1062, "nodeType": "Block", "src": "2795:68:9", "statements": [{"expression": {"id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1053, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2809:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1056, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2811:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2809:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1057, "indexExpression": {"id": 1055, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2821:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2809:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2833:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2809:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2847:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2809:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1061, "nodeType": "ExpressionStatement", "src": "2809:43:9"}]}}, {"expression": {"id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1074, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2946:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1077, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2948:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2946:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1078, "indexExpression": {"id": 1076, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2967:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2946:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1079, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2981:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2946:46:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1081, "nodeType": "ExpressionStatement", "src": "2946:46:9"}, {"eventCall": {"arguments": [{"id": 1083, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "3032:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1084, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "3044:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1082, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1963, "src": "3007:24:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3007:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1086, "nodeType": "EmitStatement", "src": "3002:54:9"}]}, "functionSelector": "c90a7eab", "id": 1088, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2586:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "operatorId", "nameLocation": "2614:10:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2607:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1026, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2607:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1029, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2634:11:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2626:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "2626:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2606:40:9"}, "returnParameters": {"id": 1031, "nodeType": "ParameterList", "parameters": [], "src": "2656:0:9"}, "scope": 1621, "src": "2577:486:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1906], "body": {"id": 1229, "nodeType": "Block", "src": "3147:1226:9", "statements": [{"assignments": [1098], "declarations": [{"constant": false, "id": 1098, "mutability": "mutable", "name": "s", "nameLocation": "3177:1:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3157:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1097, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1096, "name": "StorageData", "nameLocations": ["3157:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "3157:11:9"}, "referencedDeclaration": 2436, "src": "3157:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1102, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1099, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3181:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3192:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3181:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3181:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3157:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1103, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1106, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1107, "indexExpression": {"id": 1105, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3232:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "3208:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3208:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1110, "nodeType": "ExpressionStatement", "src": "3208:36:9"}, {"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "sp", "nameLocation": "3279:2:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3255:26:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1112, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1111, "name": "StorageProtocol", "nameLocations": ["3255:15:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "3255:15:9"}, "referencedDeclaration": 1779, "src": "3255:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1117, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1114, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "3284:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3303:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "3284:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3284:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3255:54:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3324:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3331:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3324:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1121, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3336:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1122, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "3342:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3336:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3324:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1128, "nodeType": "IfStatement", "src": "3320:62:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1682, "src": "3371:9:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3371:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "3364:18:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1129, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3396:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3402:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3405:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "3402:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3396:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1136, "nodeType": "IfStatement", "src": "3392:48:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1133, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "3428:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3428:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1135, "nodeType": "RevertStatement", "src": "3421:19:9"}}, {"assignments": [1138], "declarations": [{"constant": false, "id": 1138, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3458:11:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3451:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1137, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3451:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1144, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 1139, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3472:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3474:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3472:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1142, "indexExpression": {"id": 1141, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3484:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3472:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1143, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3496:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "3472:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3451:48:9"}, {"assignments": [1146], "declarations": [{"constant": false, "id": 1146, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3516:9:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3509:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1145, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3509:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1150, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1147, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3528:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3532:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "3528:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3528:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3509:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1151, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3555:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1152, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3570:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3555:24:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1158, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3648:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3661:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3648:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1161, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3666:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3681:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3666:16:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3648:34:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1169, "nodeType": "IfStatement", "src": "3644:95:9", "trueBody": {"id": 1168, "nodeType": "Block", "src": "3684:55:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1165, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "3705:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3705:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1167, "nodeType": "RevertStatement", "src": "3698:30:9"}]}}, "id": 1170, "nodeType": "IfStatement", "src": "3551:188:9", "trueBody": {"id": 1157, "nodeType": "Block", "src": "3581:57:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1154, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1722, "src": "3602:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3602:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1156, "nodeType": "RevertStatement", "src": "3595:32:9"}]}}, {"assignments": [1172], "declarations": [{"constant": false, "id": 1172, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3844:13:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3837:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1171, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3837:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1183, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1173, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3861:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1174, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3876:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1175, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3895:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1176, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3898:22:9", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "3895:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3876:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1178, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3875:46:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3861:60:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1180, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3860:62:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1181, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3925:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3860:81:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3837:104:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1184, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3956:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 1185, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1172, "src": "3968:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3956:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1190, "nodeType": "IfStatement", "src": "3952:63:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1187, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1684, "src": "3990:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3990:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1189, "nodeType": "RevertStatement", "src": "3983:32:9"}}, {"expression": {"id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1191, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "4026:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4028:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4026:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1195, "indexExpression": {"id": 1193, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4054:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4026:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 1197, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "4106:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1200, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4136:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4142:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4136:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4129:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4129:6:9", "typeDescriptions": {}}}, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4129:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1203, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4155:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4158:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4155:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4129:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1208, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4203:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4209:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4203:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4196:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1206, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4196:6:9", "typeDescriptions": {}}}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4196:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1211, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4222:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4225:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4222:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1214, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4252:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4255:24:9", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "4252:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:83:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1196, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "4068:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:221:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "4026:263:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1219, "nodeType": "ExpressionStatement", "src": "4026:263:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1221, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4324:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4328:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "4324:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1223, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4336:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1224, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4348:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4354:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "4348:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1226, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "4362:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1220, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1973, "src": "4304:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4304:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1228, "nodeType": "EmitStatement", "src": "4299:67:9"}]}, "functionSelector": "b317c35f", "id": 1230, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "3078:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1094, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3138:8:9"}, "parameters": {"id": 1093, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1090, "mutability": "mutable", "name": "operatorId", "nameLocation": "3104:10:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3097:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1089, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3097:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1092, "mutability": "mutable", "name": "fee", "nameLocation": "3124:3:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3116:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3116:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3096:32:9"}, "returnParameters": {"id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "3147:0:9"}, "scope": 1621, "src": "3069:1304:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1912], "body": {"id": 1339, "nodeType": "Block", "src": "4444:926:9", "statements": [{"assignments": [1238], "declarations": [{"constant": false, "id": 1238, "mutability": "mutable", "name": "s", "nameLocation": "4474:1:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4454:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1237, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1236, "name": "StorageData", "nameLocations": ["4454:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "4454:11:9"}, "referencedDeclaration": 2436, "src": "4454:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1242, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1239, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4478:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4489:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4478:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4478:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4454:41:9"}, {"assignments": [1245], "declarations": [{"constant": false, "id": 1245, "mutability": "mutable", "name": "operator", "nameLocation": "4521:8:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4505:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1244, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1243, "name": "Operator", "nameLocations": ["4505:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4505:8:9"}, "referencedDeclaration": 1650, "src": "4505:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1250, "initialValue": {"baseExpression": {"expression": {"id": 1246, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4532:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1247, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4534:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4532:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1249, "indexExpression": {"id": 1248, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4544:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4532:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4505:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1251, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "4565:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4574:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "4565:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4565:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1255, "nodeType": "ExpressionStatement", "src": "4565:21:9"}, {"assignments": [1258], "declarations": [{"constant": false, "id": 1258, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4629:16:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4597:48:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 1257, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1256, "name": "OperatorFeeChangeRequest", "nameLocations": ["4597:24:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "4597:24:9"}, "referencedDeclaration": 1660, "src": "4597:24:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 1263, "initialValue": {"baseExpression": {"expression": {"id": 1259, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4648:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4650:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4648:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1262, "indexExpression": {"id": 1261, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4676:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4648:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4597:90:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1264, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4702:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4719:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4702:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4740:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4702:39:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1271, "nodeType": "IfStatement", "src": "4698:67:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1268, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "4750:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4750:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1270, "nodeType": "RevertStatement", "src": "4743:22:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1272, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4793:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4793:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1274, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4811:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4828:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4811:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4793:52:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1277, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4849:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4855:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4849:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1279, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4867:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4884:15:9", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "4867:32:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4849:50:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4793:106:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1287, "nodeType": "IfStatement", "src": "4776:194:9", "trueBody": {"id": 1286, "nodeType": "Block", "src": "4910:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1283, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1688, "src": "4931:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4931:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1285, "nodeType": "RevertStatement", "src": "4924:35:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1288, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4984:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1289, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5001:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "4984:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5005:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "4984:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1292, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "5016:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5035:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "5016:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5016:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5042:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "5016:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4984:72:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1300, "nodeType": "IfStatement", "src": "4980:97:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1297, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "5065:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5065:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "RevertStatement", "src": "5058:19:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1301, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5088:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5097:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "5088:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5088:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1305, "nodeType": "ExpressionStatement", "src": "5088:25:9"}, {"expression": {"id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1306, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5123:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1308, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5132:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "5123:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1309, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5138:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5155:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5138:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5123:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "5123:35:9"}, {"expression": {"id": 1319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1313, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5168:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5170:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5168:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1317, "indexExpression": {"id": 1315, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5180:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5168:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1318, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5168:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1320, "nodeType": "ExpressionStatement", "src": "5168:34:9"}, {"expression": {"id": 1325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5213:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1321, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5220:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5222:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5220:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1324, "indexExpression": {"id": 1323, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5248:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5220:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1326, "nodeType": "ExpressionStatement", "src": "5213:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1328, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5295:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5299:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5295:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1330, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5307:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1331, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5319:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5325:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "5319:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1333, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5333:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5350:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5333:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5354:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "5333:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5333:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1327, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "5275:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5275:88:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1338, "nodeType": "EmitStatement", "src": "5270:93:9"}]}, "functionSelector": "8932cee0", "id": 1340, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4388:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1234, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4435:8:9"}, "parameters": {"id": 1233, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1232, "mutability": "mutable", "name": "operatorId", "nameLocation": "4414:10:9", "nodeType": "VariableDeclaration", "scope": 1340, "src": "4407:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1231, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4407:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4406:19:9"}, "returnParameters": {"id": 1235, "nodeType": "ParameterList", "parameters": [], "src": "4444:0:9"}, "scope": 1621, "src": "4379:991:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1918], "body": {"id": 1384, "nodeType": "Block", "src": "5448:333:9", "statements": [{"assignments": [1348], "declarations": [{"constant": false, "id": 1348, "mutability": "mutable", "name": "s", "nameLocation": "5478:1:9", "nodeType": "VariableDeclaration", "scope": 1384, "src": "5458:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1347, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1346, "name": "StorageData", "nameLocations": ["5458:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5458:11:9"}, "referencedDeclaration": 2436, "src": "5458:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1352, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1349, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5482:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5493:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5482:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5482:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5458:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1353, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5509:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1356, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5511:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5509:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1357, "indexExpression": {"id": 1355, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5521:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5509:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5533:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5509:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5509:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1360, "nodeType": "ExpressionStatement", "src": "5509:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1361, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5560:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1362, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5562:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5560:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1364, "indexExpression": {"id": 1363, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5588:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5560:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5600:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "5560:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5621:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5560:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1371, "nodeType": "IfStatement", "src": "5556:90:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1368, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "5631:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1369, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5631:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1370, "nodeType": "RevertStatement", "src": "5624:22:9"}}, {"expression": {"id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5657:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1372, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5664:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5666:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5664:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1375, "indexExpression": {"id": 1374, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5692:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5664:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1377, "nodeType": "ExpressionStatement", "src": "5657:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1379, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5751:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5755:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5751:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1381, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5763:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1378, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1979, "src": "5719:31:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1382, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5719:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1383, "nodeType": "EmitStatement", "src": "5714:60:9"}]}, "functionSelector": "23d68a6d", "id": 1385, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5385:25:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1344, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5439:8:9"}, "parameters": {"id": 1343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1342, "mutability": "mutable", "name": "operatorId", "nameLocation": "5418:10:9", "nodeType": "VariableDeclaration", "scope": 1385, "src": "5411:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1341, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5411:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5410:19:9"}, "returnParameters": {"id": 1345, "nodeType": "ParameterList", "parameters": [], "src": "5448:0:9"}, "scope": 1621, "src": "5376:405:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1926], "body": {"id": 1469, "nodeType": "Block", "src": "5864:599:9", "statements": [{"assignments": [1395], "declarations": [{"constant": false, "id": 1395, "mutability": "mutable", "name": "s", "nameLocation": "5894:1:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1393, "name": "StorageData", "nameLocations": ["5874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5874:11:9"}, "referencedDeclaration": 2436, "src": "5874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1399, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1396, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5874:41:9"}, {"assignments": [1402], "declarations": [{"constant": false, "id": 1402, "mutability": "mutable", "name": "operator", "nameLocation": "5941:8:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1401, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1400, "name": "Operator", "nameLocations": ["5925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "5925:8:9"}, "referencedDeclaration": 1650, "src": "5925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1407, "initialValue": {"baseExpression": {"expression": {"id": 1403, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "5952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1404, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1406, "indexExpression": {"id": 1405, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "5964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1408, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "5985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "5985:21:9"}, {"assignments": [1414], "declarations": [{"constant": false, "id": 1414, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6024:12:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "6017:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1413, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6017:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1418, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1415, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6039:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6043:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "6039:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6039:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6017:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1419, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6065:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1420, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1421, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6090:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6081:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6065:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1426, "nodeType": "IfStatement", "src": "6061:64:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1423, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "6102:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6102:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1425, "nodeType": "RevertStatement", "src": "6095:30:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1427, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6136:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6145:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "6136:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6136:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1431, "nodeType": "ExpressionStatement", "src": "6136:25:9"}, {"expression": {"id": 1436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6171:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1434, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6180:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6171:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1435, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6186:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6171:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1437, "nodeType": "ExpressionStatement", "src": "6171:27:9"}, {"expression": {"id": 1444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1438, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1441, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1442, "indexExpression": {"id": 1440, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1443, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6234:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6208:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1445, "nodeType": "ExpressionStatement", "src": "6208:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1446, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6257:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6259:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6257:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1449, "indexExpression": {"id": 1448, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6285:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6257:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6297:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "6257:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6318:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6257:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1459, "nodeType": "IfStatement", "src": "6253:126:9", "trueBody": {"expression": {"id": 1457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6333:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1453, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6340:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6342:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6340:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1456, "indexExpression": {"id": 1455, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6368:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6340:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1458, "nodeType": "ExpressionStatement", "src": "6333:46:9"}}, {"eventCall": {"arguments": [{"expression": {"id": 1461, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6414:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6418:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "6414:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1463, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6426:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1464, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6438:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6444:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "6438:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1466, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6452:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1460, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "6394:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6394:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "EmitStatement", "src": "6389:67:9"}]}, "functionSelector": "190d82e4", "id": 1470, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5796:17:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1391, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5855:8:9"}, "parameters": {"id": 1390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1387, "mutability": "mutable", "name": "operatorId", "nameLocation": "5821:10:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5814:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1386, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5814:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1389, "mutability": "mutable", "name": "fee", "nameLocation": "5841:3:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5833:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1388, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5833:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5813:32:9"}, "returnParameters": {"id": 1392, "nodeType": "ParameterList", "parameters": [], "src": "5864:0:9"}, "scope": 1621, "src": "5787:676:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1934], "body": {"id": 1483, "nodeType": "Block", "src": "6556:62:9", "statements": [{"expression": {"arguments": [{"id": 1479, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1472, "src": "6592:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1480, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1474, "src": "6604:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1478, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6566:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6566:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1482, "nodeType": "ExpressionStatement", "src": "6566:45:9"}]}, "functionSelector": "35f63767", "id": 1484, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6478:24:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1476, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6547:8:9"}, "parameters": {"id": 1475, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1472, "mutability": "mutable", "name": "operatorId", "nameLocation": "6510:10:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6503:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6503:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1474, "mutability": "mutable", "name": "amount", "nameLocation": "6530:6:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6522:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1473, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6522:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6502:35:9"}, "returnParameters": {"id": 1477, "nodeType": "ParameterList", "parameters": [], "src": "6556:0:9"}, "scope": 1621, "src": "6469:149:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1940], "body": {"id": 1495, "nodeType": "Block", "src": "6698:57:9", "statements": [{"expression": {"arguments": [{"id": 1491, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "6734:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6746:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1490, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6708:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6708:40:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1494, "nodeType": "ExpressionStatement", "src": "6708:40:9"}]}, "functionSelector": "4bc93b64", "id": 1496, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6633:27:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6689:8:9"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1486, "mutability": "mutable", "name": "operatorId", "nameLocation": "6668:10:9", "nodeType": "VariableDeclaration", "scope": 1496, "src": "6661:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1485, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6661:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6660:19:9"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "6698:0:9"}, "scope": 1621, "src": "6624:131:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1596, "nodeType": "Block", "src": "6864:753:9", "statements": [{"assignments": [1505], "declarations": [{"constant": false, "id": 1505, "mutability": "mutable", "name": "s", "nameLocation": "6894:1:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1504, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1503, "name": "StorageData", "nameLocations": ["6874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "6874:11:9"}, "referencedDeclaration": 2436, "src": "6874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1509, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1506, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "6898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "6898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6874:41:9"}, {"assignments": [1512], "declarations": [{"constant": false, "id": 1512, "mutability": "mutable", "name": "operator", "nameLocation": "6941:8:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1511, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1510, "name": "Operator", "nameLocations": ["6925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "6925:8:9"}, "referencedDeclaration": 1650, "src": "6925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1517, "initialValue": {"baseExpression": {"expression": {"id": 1513, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "6952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1516, "indexExpression": {"id": 1515, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "6964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1518, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "6985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "6985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1522, "nodeType": "ExpressionStatement", "src": "6985:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1523, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7017:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7026:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "7017:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7017:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1527, "nodeType": "ExpressionStatement", "src": "7017:25:9"}, {"assignments": [1529], "declarations": [{"constant": false, "id": 1529, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "7060:15:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7053:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1528, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7053:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1530, "nodeType": "VariableDeclarationStatement", "src": "7053:22:9"}, {"assignments": [1532], "declarations": [{"constant": false, "id": 1532, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "7092:12:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7085:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7085:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1536, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1533, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7107:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7114:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "7107:13:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7107:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "7085:37:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1537, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7137:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7147:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7137:11:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1540, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7152:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7161:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7152:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7170:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7152:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7180:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7152:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7137:44:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1553, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7261:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7270:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7261:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1556, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7275:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1557, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7284:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7275:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1558, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7293:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7275:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1559, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7304:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7275:41:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7261:55:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1570, "nodeType": "Block", "src": "7379:53:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1567, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1692, "src": "7400:19:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7400:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1569, "nodeType": "RevertStatement", "src": "7393:28:9"}]}, "id": 1571, "nodeType": "IfStatement", "src": "7257:175:9", "trueBody": {"id": 1566, "nodeType": "Block", "src": "7318:55:9", "statements": [{"expression": {"id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1562, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7332:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1563, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7350:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7332:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1565, "nodeType": "ExpressionStatement", "src": "7332:30:9"}]}}, "id": 1572, "nodeType": "IfStatement", "src": "7133:299:9", "trueBody": {"id": 1552, "nodeType": "Block", "src": "7183:68:9", "statements": [{"expression": {"id": 1550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1546, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7197:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1547, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7215:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1548, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7224:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7215:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7215:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7197:43:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1551, "nodeType": "ExpressionStatement", "src": "7197:43:9"}]}}, {"expression": {"id": 1579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1573, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7442:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7451:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7442:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7460:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7442:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1578, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7471:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7442:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1580, "nodeType": "ExpressionStatement", "src": "7442:44:9"}, {"expression": {"id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1581, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "7497:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1584, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7499:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "7497:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1585, "indexExpression": {"id": 1583, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7509:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7497:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1586, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7523:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7497:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1588, "nodeType": "ExpressionStatement", "src": "7497:34:9"}, {"expression": {"arguments": [{"id": 1590, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7573:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1591, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7585:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7601:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "7585:22:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7585:24:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1589, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "7542:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7542:68:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1595, "nodeType": "ExpressionStatement", "src": "7542:68:9"}]}, "id": 1597, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6795:25:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1501, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "operatorId", "nameLocation": "6828:10:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6821:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1497, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6821:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1500, "mutability": "mutable", "name": "amount", "nameLocation": "6848:6:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6840:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6840:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6820:35:9"}, "returnParameters": {"id": 1502, "nodeType": "ParameterList", "parameters": [], "src": "6864:0:9"}, "scope": 1621, "src": "6786:831:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1619, "nodeType": "Block", "src": "7706:124:9", "statements": [{"expression": {"arguments": [{"expression": {"id": 1607, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7740:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7744:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7740:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1609, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7752:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1604, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2136, "src": "7716:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2136_$", "typeString": "type(library CoreLib)"}}, "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7724:15:9", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2047, "src": "7716:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7716:43:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1611, "nodeType": "ExpressionStatement", "src": "7716:43:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7792:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7796:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7792:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1615, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "7804:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1616, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7816:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1612, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1998, "src": "7774:17:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7774:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "EmitStatement", "src": "7769:54:9"}]}, "id": 1620, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7632:30:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1602, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1599, "mutability": "mutable", "name": "operatorId", "nameLocation": "7670:10:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7663:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1598, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7663:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1601, "mutability": "mutable", "name": "amount", "nameLocation": "7690:6:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7682:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7662:35:9"}, "returnParameters": {"id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "7706:0:9"}, "scope": 1621, "src": "7623:207:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1622, "src": "358:7474:9", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:7788:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2611]}, "id": 2612, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2535, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2536, "nodeType": "StructuredDocumentation", "src": "131:70:10", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2611, "linearizedBaseContracts": [2611], "name": "IERC20", "nameLocation": "212:6:10", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2537, "nodeType": "StructuredDocumentation", "src": "225:158:10", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2545, "name": "Transfer", "nameLocation": "394:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2544, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2539, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "403:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2538, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2541, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "425:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2540, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2543, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "445:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2542, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:10"}, "src": "388:72:10"}, {"anonymous": false, "documentation": {"id": 2546, "nodeType": "StructuredDocumentation", "src": "466:148:10", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2554, "name": "Approval", "nameLocation": "625:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2553, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2548, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "634:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2547, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2550, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "657:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2549, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "682:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2551, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:10"}, "src": "619:78:10"}, {"documentation": {"id": 2555, "nodeType": "StructuredDocumentation", "src": "703:66:10", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2560, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2556, "nodeType": "ParameterList", "parameters": [], "src": "794:2:10"}, "returnParameters": {"id": 2559, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2558, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2560, "src": "820:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2557, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:10"}, "scope": 2611, "src": "774:55:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2561, "nodeType": "StructuredDocumentation", "src": "835:72:10", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2568, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2564, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2563, "mutability": "mutable", "name": "account", "nameLocation": "939:7:10", "nodeType": "VariableDeclaration", "scope": 2568, "src": "931:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2562, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:10"}, "returnParameters": {"id": 2567, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2566, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2568, "src": "971:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2565, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:10"}, "scope": 2611, "src": "912:68:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2569, "nodeType": "StructuredDocumentation", "src": "986:202:10", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2578, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1211:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2570, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2573, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1223:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:10"}, "returnParameters": {"id": 2577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2576, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1257:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:10"}, "scope": 2611, "src": "1193:70:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2579, "nodeType": "StructuredDocumentation", "src": "1269:264:10", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2588, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2584, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1557:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2580, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2583, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1572:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2582, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:10"}, "returnParameters": {"id": 2587, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2586, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1612:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2585, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:10"}, "scope": 2611, "src": "1538:83:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2589, "nodeType": "StructuredDocumentation", "src": "1627:642:10", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2598, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2594, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2591, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2291:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2590, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2593, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2308:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2592, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:10"}, "returnParameters": {"id": 2597, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2596, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2342:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2595, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:10"}, "scope": 2611, "src": "2274:74:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2599, "nodeType": "StructuredDocumentation", "src": "2354:287:10", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2610, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2601, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2668:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2600, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2603, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2682:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2602, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2605, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2694:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2604, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:10"}, "returnParameters": {"id": 2609, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2608, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2728:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2607, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:10"}, "scope": 2611, "src": "2646:88:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2612, "src": "202:2534:10", "usedErrors": []}], "src": "106:2631:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2533]}, "id": 2534, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2461, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2462, "nodeType": "StructuredDocumentation", "src": "112:311:11", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2533, "linearizedBaseContracts": [2533], "name": "Counters", "nameLocation": "432:8:11", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2465, "members": [{"constant": false, "id": 2464, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:11", "nodeType": "VariableDeclaration", "scope": 2465, "src": "786:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:11", "nodeType": "StructDefinition", "scope": 2533, "src": "447:374:11", "visibility": "public"}, {"body": {"id": 2476, "nodeType": "Block", "src": "901:38:11", "statements": [{"expression": {"expression": {"id": 2473, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "918:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "918:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2472, "id": 2475, "nodeType": "Return", "src": "911:21:11"}]}, "id": 2477, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2468, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:11", "nodeType": "VariableDeclaration", "scope": 2477, "src": "844:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2466, "name": "Counter", "nameLocations": ["844:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "844:7:11"}, "referencedDeclaration": 2465, "src": "844:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:11"}, "returnParameters": {"id": 2472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2477, "src": "892:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2470, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:11"}, "scope": 2533, "src": "827:112:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2490, "nodeType": "Block", "src": "998:70:11", "statements": [{"id": 2489, "nodeType": "UncheckedBlock", "src": "1008:54:11", "statements": [{"expression": {"id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2483, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1032:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1032:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2488, "nodeType": "ExpressionStatement", "src": "1032:19:11"}]}]}, "id": 2491, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2480, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:11", "nodeType": "VariableDeclaration", "scope": 2491, "src": "964:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2479, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2478, "name": "Counter", "nameLocations": ["964:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "964:7:11"}, "referencedDeclaration": 2465, "src": "964:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:11"}, "returnParameters": {"id": 2482, "nodeType": "ParameterList", "parameters": [], "src": "998:0:11"}, "scope": 2533, "src": "945:123:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2518, "nodeType": "Block", "src": "1127:176:11", "statements": [{"assignments": [2498], "declarations": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:11", "nodeType": "VariableDeclaration", "scope": 2518, "src": "1137:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2501, "initialValue": {"expression": {"id": 2499, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1153:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1153:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:11"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2503, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1185:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2508, "nodeType": "ExpressionStatement", "src": "1177:49:11"}, {"id": 2517, "nodeType": "UncheckedBlock", "src": "1236:61:11", "statements": [{"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2509, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1260:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1260:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2512, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1277:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "1260:26:11"}]}]}, "id": 2519, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2495, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2494, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:11", "nodeType": "VariableDeclaration", "scope": 2519, "src": "1093:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2493, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2492, "name": "Counter", "nameLocations": ["1093:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1093:7:11"}, "referencedDeclaration": 2465, "src": "1093:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:11"}, "returnParameters": {"id": 2496, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:11"}, "scope": 2533, "src": "1074:229:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2531, "nodeType": "Block", "src": "1358:35:11", "statements": [{"expression": {"id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2525, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2522, "src": "1368:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1368:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2528, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2530, "nodeType": "ExpressionStatement", "src": "1368:18:11"}]}, "id": 2532, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2522, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:11", "nodeType": "VariableDeclaration", "scope": 2532, "src": "1324:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2520, "name": "Counter", "nameLocations": ["1324:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1324:7:11"}, "referencedDeclaration": 2465, "src": "1324:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:11"}, "returnParameters": {"id": 2524, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:11"}, "scope": 2533, "src": "1309:84:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2534, "src": "424:971:11", "usedErrors": []}], "src": "87:1309:11"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol:Operators": {"srcmap": "148:4855:0:-:0;;;635:523;;;;;;;;;;342:11;659:13;;:36;;;;;;;;;;;;;;;;;;705:26;734:25;:23;;;;;:25;;:::i;:::-;705:54;;805:6;769:2;:33;;;:42;;;;;;;;;;;;;;;;;;855:37;863:19;855:35;;;;;:37;;:::i;:::-;821:2;:31;;;:71;;;;;;;;;;;;;;;;;;934:3;902:2;:29;;;:35;;;;;;;;;;;;;;;;;;977:6;947:2;:27;;;:36;;;;;;;;;;;;;;;;;;1023:6;993:2;:27;;;:36;;;;;;;;;;;;;;;;;;1067:4;1039:2;:25;;;:32;;;;;;;;;;;;;;;;;;1117:1;1101:13;;;;;;;;;;;:17;;;;:::i;:::-;1081:2;:17;;;:37;;;;;;;;;;;;;;;;;;1129:22;1149:1;1129:2;:19;;;;;;:22;;;;:::i;:::-;649:509;148:4855;;1672:184:7;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;;;:21;;:::i;:::-;691:26;714:2;691:22;;;:26;;:::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;;;;;:12;;:::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;;;:24;;:::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;1111:215::-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:101:12:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:180::-;162:77;159:1;152:88;259:4;256:1;249:15;283:4;280:1;273:15;300:275;339:7;362:19;379:1;362:19;:::i;:::-;357:24;;395:19;412:1;395:19;:::i;:::-;390:24;;449:1;446;442:9;471:29;488:11;471:29;:::i;:::-;460:40;;532:11;523:7;520:24;510:58;;548:18;;:::i;:::-;510:58;347:228;300:275;;;;:::o;581:77::-;618:7;647:5;636:16;;581:77;;;:::o;664:194::-;704:4;724:20;742:1;724:20;:::i;:::-;719:25;;758:20;776:1;758:20;:::i;:::-;753:25;;802:1;799;795:9;787:17;;826:1;820:4;817:11;814:37;;;831:18;;:::i;:::-;814:37;664:194;;;;:::o;864:410::-;904:7;927:20;945:1;927:20;:::i;:::-;922:25;;961:20;979:1;961:20;:::i;:::-;956:25;;1016:1;1013;1009:9;1038:30;1056:11;1038:30;:::i;:::-;1027:41;;1217:1;1208:7;1204:15;1201:1;1198:22;1178:1;1171:9;1151:83;1128:139;;1247:18;;:::i;:::-;1128:139;912:362;864:410;;;;:::o;1280:169::-;1364:11;1398:6;1393:3;1386:19;1438:4;1433:3;1429:14;1414:29;;1280:169;;;;:::o;1455:168::-;1595:20;1591:1;1583:6;1579:14;1572:44;1455:168;:::o;1629:366::-;1771:3;1792:67;1856:2;1851:3;1792:67;:::i;:::-;1785:74;;1868:93;1957:3;1868:93;:::i;:::-;1986:2;1981:3;1977:12;1970:19;;1629:366;;;:::o;2001:419::-;2167:4;2205:2;2194:9;2190:18;2182:26;;2254:9;2248:4;2244:20;2240:1;2229:9;2225:17;2218:47;2282:131;2408:4;2282:131;:::i;:::-;2274:139;;2001:419;;;:::o;2426:180::-;2474:77;2471:1;2464:88;2571:4;2568:1;2561:15;2595:4;2592:1;2585:15;2612:185;2652:1;2669:20;2687:1;2669:20;:::i;:::-;2664:25;;2703:20;2721:1;2703:20;:::i;:::-;2698:25;;2742:1;2732:35;;2747:18;;:::i;:::-;2732:35;2789:1;2786;2782:9;2777:14;;2612:185;;;;:::o;2803:176::-;2835:1;2852:20;2870:1;2852:20;:::i;:::-;2847:25;;2886:20;2904:1;2886:20;:::i;:::-;2881:25;;2925:1;2915:35;;2930:18;;:::i;:::-;2915:35;2971:1;2968;2964:9;2959:14;;2803:176;;;;:::o;2985:172::-;3125:24;3121:1;3113:6;3109:14;3102:48;2985:172;:::o;3163:366::-;3305:3;3326:67;3390:2;3385:3;3326:67;:::i;:::-;3319:74;;3402:93;3491:3;3402:93;:::i;:::-;3520:2;3515:3;3511:12;3504:19;;3163:366;;;:::o;3535:419::-;3701:4;3739:2;3728:9;3724:18;3716:26;;3788:9;3782:4;3778:20;3774:1;3763:9;3759:17;3752:47;3816:131;3942:4;3816:131;:::i;:::-;3808:139;;3535:419;;;:::o;3960:205::-;3999:3;4018:19;4035:1;4018:19;:::i;:::-;4013:24;;4051:19;4068:1;4051:19;:::i;:::-;4046:24;;4093:1;4090;4086:9;4079:16;;4116:18;4111:3;4108:27;4105:53;;;4138:18;;:::i;:::-;4105:53;3960:205;;;;:::o;4171:208::-;4210:4;4230:19;4247:1;4230:19;:::i;:::-;4225:24;;4263:19;4280:1;4263:19;:::i;:::-;4258:24;;4306:1;4303;4299:9;4291:17;;4330:18;4324:4;4321:28;4318:54;;;4352:18;;:::i;:::-;4318:54;4171:208;;;;:::o;148:4855:0:-;;;;;;;", "srcmap-runtime": "148:4855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3463:349:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1892:423:0;;;:::i;:::-;;1772:799:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4623:378:0;;;:::i;:::-;;6469:149:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3242:162:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1538:348;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3066:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2321:208:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3818:518:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4342:275:0;;;:::i;:::-;;2535:525;2639:5;:12;;;;2619:10;:33;;;;:::i;:::-;2606:46;;2663:25;2691:17;:15;:17::i;:::-;:27;;:39;2719:10;2691:39;;;;;;;;;;;;;;;2663:67;;2775:1;2748:8;:17;;:23;;;;;;;;;;;;:28;;;2740:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2816:10;2829:8;:12;;;;;;;;;;;;2816:25;;2852:20;402:6;2902:25;:23;:25::i;:::-;:48;;;;;;;;;;;;402:6;2883:67;;;;:::i;:::-;2876:3;:75;;;;:::i;:::-;2875:108;;;;:::i;:::-;2852:131;;2994:4;:23;;;3018:10;3030:22;:13;:20;;;:22::i;:::-;2994:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2596:464;;;2535:525;:::o;778:988:9:-;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;3463:349:0:-;3577:5;:12;;;;3557:10;:33;;;;:::i;:::-;3544:46;;3601:25;3629:17;:15;:17::i;:::-;:27;;:39;3657:10;3629:39;;;;;;;;;;;;;;;3601:67;;3711:1;3684:8;:17;;:23;;;;;;;;;;;;:28;;;3683:54;;;;;3717:8;:20;;;;;;;;;;;;3683:54;3679:126;;;3756:49;3772:10;3784:8;:20;;;;;;;;;;;;3756:49;;;;;;;:::i;:::-;;;;;;;;3679:126;3534:278;3463:349;:::o;5376:405:9:-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1892:423:0:-;1942:11;1956:13;;;;;;;;;;;1942:27;;1979:11;1993:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1979:54;;2044:22;2069:20;:18;:20::i;:::-;2044:45;;2099:10;2112:24;2125:4;2131;2112:12;:24::i;:::-;2099:37;;2151:4;:21;;;2173:9;2184:3;2151:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2147:162;;2292:5;2285:13;;;;:::i;:::-;;2147:162;;;2231:5;2242:10;2231:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:75;2147:162;1932:383;;;;1892:423::o;1772:799:9:-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;4623:378:0:-;4685:25;4713;:23;:25::i;:::-;4685:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4748:15;4778:9;4773:179;4793:5;:12;;;;4789:1;:16;4773:179;;;4826:24;4853:17;:15;:17::i;:::-;:27;;:37;4881:5;4887:1;4881:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4853:37;;;;;;;;;;;;;;;4826:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4916:8;:17;;;:25;;;4904:37;;;;;:::i;:::-;;;4812:140;4807:3;;;;;:::i;:::-;;;;4773:179;;;;4985:8;4968:25;;:2;:13;;;:25;;;4961:33;;;;:::i;:::-;;4675:326;;4623:378::o;6469:149:9:-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;3242:162:0:-;3342:5;:12;;;;3322:10;:33;;;;:::i;:::-;3309:46;;3366:4;:19;;;3386:10;3366:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:162;:::o;1538:348::-;1600:6;1632:3;1626:9;;:3;:9;;;1618:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:18;1734:5;;1741:15;1717:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1707:51;;;;;;1699:60;;1678:81;;1769:5;;:7;;;;;;;;;:::i;:::-;;;;;;1786:18;1814:10;1786:39;;1876:3;1870:1;1864:3;1858;:9;;;;:::i;:::-;:13;;;;:::i;:::-;1843:11;:29;;;;:::i;:::-;1842:37;;;;:::i;:::-;1835:44;;;;1538:348;;;;:::o;3066:170::-;3170:5;:12;;;;3150:10;:33;;;;:::i;:::-;3137:46;;3194:4;:23;;;3218:10;3194:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:170;:::o;6624:131:9:-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;2321:208:0:-;2448:5;:12;;;;2428:10;:33;;;;:::i;:::-;2415:46;;2472:4;:25;;;2498:10;2510:11;2472:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:208;;:::o;4379:991:9:-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3818:518:0:-;3953:1;3937:5;:12;;;;3930:24;;;;:::i;:::-;3916:10;:39;;;;:::i;:::-;3911:1;:45;;;;:::i;:::-;3898:58;;3966:25;3994:17;:15;:17::i;:::-;:27;;:39;4022:10;3994:39;;;;;;;;;;;;;;;3966:67;;4089:1;4062:8;:17;;:23;;;;;;;;;;;;:28;;;4061:126;;;;;4185:1;4108:17;:15;:17::i;:::-;:43;;:55;4152:10;4108:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;4061:126;4044:286;;;4217:102;4233:10;4245:17;:15;:17::i;:::-;:43;;:55;4289:10;4245:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;4217:102;;;;;;;:::i;:::-;;;;;;;;4044:286;3888:448;3818:518;:::o;3069:1304:9:-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;4342:275:0:-;4405:9;4400:211;4420:5;:12;;;;4416:1;:16;4400:211;;;4453:24;4480:17;:15;:17::i;:::-;:27;;:37;4508:5;4514:1;4508:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:37;;;;;;;;;;;;;;;4453:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4564:1;4538:8;:23;;;:27;;;:61;;;;4598:1;4569:8;:17;;;:25;;;:30;;;4538:61;4531:69;;;;:::i;:::-;;4439:172;4434:3;;;;;:::i;:::-;;;;4400:211;;;;4342:275::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;1164:368:0:-;1212:12;1236:24;1273:2;1263:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1236:40;;1291:6;1286:195;1307:2;1303:1;:6;1286:195;;;1452:3;1409:5;;1416:15;1433:10;1445:1;1392:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1382:66;;;;;;1377:72;;:78;;;;:::i;:::-;1347:123;;1330:11;1342:1;1330:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;1311:3;;;;;:::i;:::-;;;;1286:195;;;;1490:5;;:7;;;;;;;;;:::i;:::-;;;;;;1514:11;1507:18;;;1164:368;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:327::-;768:6;817:2;805:9;796:7;792:23;788:32;785:119;;;823:79;;:::i;:::-;785:119;943:1;968:52;1012:7;1003:6;992:9;988:22;968:52;:::i;:::-;958:62;;914:116;710:327;;;;:::o;1043:117::-;1152:1;1149;1142:12;1166:117;1275:1;1272;1265:12;1289:117;1398:1;1395;1388:12;1425:552;1482:8;1492:6;1542:3;1535:4;1527:6;1523:17;1519:27;1509:122;;1550:79;;:::i;:::-;1509:122;1663:6;1650:20;1640:30;;1693:18;1685:6;1682:30;1679:117;;;1715:79;;:::i;:::-;1679:117;1829:4;1821:6;1817:17;1805:29;;1883:3;1875:4;1867:6;1863:17;1853:8;1849:32;1846:41;1843:128;;;1890:79;;:::i;:::-;1843:128;1425:552;;;;;:::o;1983:670::-;2061:6;2069;2077;2126:2;2114:9;2105:7;2101:23;2097:32;2094:119;;;2132:79;;:::i;:::-;2094:119;2280:1;2269:9;2265:17;2252:31;2310:18;2302:6;2299:30;2296:117;;;2332:79;;:::i;:::-;2296:117;2445:64;2501:7;2492:6;2481:9;2477:22;2445:64;:::i;:::-;2427:82;;;;2223:296;2558:2;2584:52;2628:7;2619:6;2608:9;2604:22;2584:52;:::i;:::-;2574:62;;2529:117;1983:670;;;;;:::o;2659:115::-;2744:23;2761:5;2744:23;:::i;:::-;2739:3;2732:36;2659:115;;:::o;2780:218::-;2871:4;2909:2;2898:9;2894:18;2886:26;;2922:69;2988:1;2977:9;2973:17;2964:6;2922:69;:::i;:::-;2780:218;;;;:::o;3004:77::-;3041:7;3070:5;3059:16;;3004:77;;;:::o;3087:122::-;3160:24;3178:5;3160:24;:::i;:::-;3153:5;3150:35;3140:63;;3199:1;3196;3189:12;3140:63;3087:122;:::o;3215:139::-;3261:5;3299:6;3286:20;3277:29;;3315:33;3342:5;3315:33;:::i;:::-;3215:139;;;;:::o;3360:472::-;3427:6;3435;3484:2;3472:9;3463:7;3459:23;3455:32;3452:119;;;3490:79;;:::i;:::-;3452:119;3610:1;3635:52;3679:7;3670:6;3659:9;3655:22;3635:52;:::i;:::-;3625:62;;3581:116;3736:2;3762:53;3807:7;3798:6;3787:9;3783:22;3762:53;:::i;:::-;3752:63;;3707:118;3360:472;;;;;:::o;3838:470::-;3904:6;3912;3961:2;3949:9;3940:7;3936:23;3932:32;3929:119;;;3967:79;;:::i;:::-;3929:119;4087:1;4112:52;4156:7;4147:6;4136:9;4132:22;4112:52;:::i;:::-;4102:62;;4058:116;4213:2;4239:52;4283:7;4274:6;4263:9;4259:22;4239:52;:::i;:::-;4229:62;;4184:117;3838:470;;;;;:::o;4314:126::-;4351:7;4391:42;4384:5;4380:54;4369:65;;4314:126;;;:::o;4446:96::-;4483:7;4512:24;4530:5;4512:24;:::i;:::-;4501:35;;4446:96;;;:::o;4548:122::-;4621:24;4639:5;4621:24;:::i;:::-;4614:5;4611:35;4601:63;;4660:1;4657;4650:12;4601:63;4548:122;:::o;4676:139::-;4722:5;4760:6;4747:20;4738:29;;4776:33;4803:5;4776:33;:::i;:::-;4676:139;;;;:::o;4821:472::-;4888:6;4896;4945:2;4933:9;4924:7;4920:23;4916:32;4913:119;;;4951:79;;:::i;:::-;4913:119;5071:1;5096:52;5140:7;5131:6;5120:9;5116:22;5096:52;:::i;:::-;5086:62;;5042:116;5197:2;5223:53;5268:7;5259:6;5248:9;5244:22;5223:53;:::i;:::-;5213:63;;5168:118;4821:472;;;;;:::o;5299:180::-;5347:77;5344:1;5337:88;5444:4;5441:1;5434:15;5468:4;5465:1;5458:15;5485:173;5516:1;5533:19;5550:1;5533:19;:::i;:::-;5528:24;;5566:19;5583:1;5566:19;:::i;:::-;5561:24;;5604:1;5594:35;;5609:18;;:::i;:::-;5594:35;5650:1;5647;5643:9;5638:14;;5485:173;;;;:::o;5664:169::-;5748:11;5782:6;5777:3;5770:19;5822:4;5817:3;5813:14;5798:29;;5664:169;;;;:::o;5839:174::-;5979:26;5975:1;5967:6;5963:14;5956:50;5839:174;:::o;6019:366::-;6161:3;6182:67;6246:2;6241:3;6182:67;:::i;:::-;6175:74;;6258:93;6347:3;6258:93;:::i;:::-;6376:2;6371:3;6367:12;6360:19;;6019:366;;;:::o;6391:419::-;6557:4;6595:2;6584:9;6580:18;6572:26;;6644:9;6638:4;6634:20;6630:1;6619:9;6615:17;6608:47;6672:131;6798:4;6672:131;:::i;:::-;6664:139;;6391:419;;;:::o;6816:180::-;6864:77;6861:1;6854:88;6961:4;6958:1;6951:15;6985:4;6982:1;6975:15;7002:205;7041:3;7060:19;7077:1;7060:19;:::i;:::-;7055:24;;7093:19;7110:1;7093:19;:::i;:::-;7088:24;;7135:1;7132;7128:9;7121:16;;7158:18;7153:3;7150:27;7147:53;;;7180:18;;:::i;:::-;7147:53;7002:205;;;;:::o;7213:275::-;7252:7;7275:19;7292:1;7275:19;:::i;:::-;7270:24;;7308:19;7325:1;7308:19;:::i;:::-;7303:24;;7362:1;7359;7355:9;7384:29;7401:11;7384:29;:::i;:::-;7373:40;;7445:11;7436:7;7433:24;7423:58;;7461:18;;:::i;:::-;7423:58;7260:228;7213:275;;;;:::o;7494:182::-;7533:1;7550:19;7567:1;7550:19;:::i;:::-;7545:24;;7583:19;7600:1;7583:19;:::i;:::-;7578:24;;7621:1;7611:35;;7626:18;;:::i;:::-;7611:35;7668:1;7665;7661:9;7656:14;;7494:182;;;;:::o;7682:118::-;7769:24;7787:5;7769:24;:::i;:::-;7764:3;7757:37;7682:118;;:::o;7806:328::-;7925:4;7963:2;7952:9;7948:18;7940:26;;7976:69;8042:1;8031:9;8027:17;8018:6;7976:69;:::i;:::-;8055:72;8123:2;8112:9;8108:18;8099:6;8055:72;:::i;:::-;7806:328;;;;;:::o;8140:147::-;8241:11;8278:3;8263:18;;8140:147;;;;:::o;8293:146::-;8390:6;8385:3;8380;8367:30;8431:1;8422:6;8417:3;8413:16;8406:27;8293:146;;;:::o;8467:327::-;8581:3;8602:88;8683:6;8678:3;8602:88;:::i;:::-;8595:95;;8700:56;8749:6;8744:3;8737:5;8700:56;:::i;:::-;8781:6;8776:3;8772:16;8765:23;;8467:327;;;;;:::o;8800:291::-;8940:3;8962:103;9061:3;9052:6;9044;8962:103;:::i;:::-;8955:110;;9082:3;9075:10;;8800:291;;;;;:::o;9097:168::-;9180:11;9214:6;9209:3;9202:19;9254:4;9249:3;9245:14;9230:29;;9097:168;;;;:::o;9271:102::-;9312:6;9363:2;9359:7;9354:2;9347:5;9343:14;9339:28;9329:38;;9271:102;;;:::o;9401:314::-;9497:3;9518:70;9581:6;9576:3;9518:70;:::i;:::-;9511:77;;9598:56;9647:6;9642:3;9635:5;9598:56;:::i;:::-;9679:29;9701:6;9679:29;:::i;:::-;9674:3;9670:39;9663:46;;9401:314;;;;;:::o;9721:60::-;9749:3;9770:5;9763:12;;9721:60;;;:::o;9787:140::-;9836:9;9869:52;9887:33;9896:23;9913:5;9896:23;:::i;:::-;9887:33;:::i;:::-;9869:52;:::i;:::-;9856:65;;9787:140;;;:::o;9933:129::-;10019:36;10049:5;10019:36;:::i;:::-;10014:3;10007:49;9933:129;;:::o;10068:437::-;10216:4;10254:2;10243:9;10239:18;10231:26;;10303:9;10297:4;10293:20;10289:1;10278:9;10274:17;10267:47;10331:86;10412:4;10403:6;10395;10331:86;:::i;:::-;10323:94;;10427:71;10494:2;10483:9;10479:18;10470:6;10427:71;:::i;:::-;10068:437;;;;;;:::o;10511:332::-;10632:4;10670:2;10659:9;10655:18;10647:26;;10683:71;10751:1;10740:9;10736:17;10727:6;10683:71;:::i;:::-;10764:72;10832:2;10821:9;10817:18;10808:6;10764:72;:::i;:::-;10511:332;;;;;:::o;10849:90::-;10883:7;10926:5;10919:13;10912:21;10901:32;;10849:90;;;:::o;10945:109::-;11026:21;11041:5;11026:21;:::i;:::-;11021:3;11014:34;10945:109;;:::o;11060:316::-;11173:4;11211:2;11200:9;11196:18;11188:26;;11224:69;11290:1;11279:9;11275:17;11266:6;11224:69;:::i;:::-;11303:66;11365:2;11354:9;11350:18;11341:6;11303:66;:::i;:::-;11060:316;;;;;:::o;11382:98::-;11433:6;11467:5;11461:12;11451:22;;11382:98;;;:::o;11486:246::-;11567:1;11577:113;11591:6;11588:1;11585:13;11577:113;;;11676:1;11671:3;11667:11;11661:18;11657:1;11652:3;11648:11;11641:39;11613:2;11610:1;11606:10;11601:15;;11577:113;;;11724:1;11715:6;11710:3;11706:16;11699:27;11548:184;11486:246;;;:::o;11738:373::-;11824:3;11852:38;11884:5;11852:38;:::i;:::-;11906:70;11969:6;11964:3;11906:70;:::i;:::-;11899:77;;11985:65;12043:6;12038:3;12031:4;12024:5;12020:16;11985:65;:::i;:::-;12075:29;12097:6;12075:29;:::i;:::-;12070:3;12066:39;12059:46;;11828:283;11738:373;;;;:::o;12117:415::-;12254:4;12292:2;12281:9;12277:18;12269:26;;12341:9;12335:4;12331:20;12327:1;12316:9;12312:17;12305:47;12369:76;12440:4;12431:6;12369:76;:::i;:::-;12361:84;;12455:70;12521:2;12510:9;12506:18;12497:6;12455:70;:::i;:::-;12117:415;;;;;:::o;12538:141::-;12594:5;12625:6;12619:13;12610:22;;12641:32;12667:5;12641:32;:::i;:::-;12538:141;;;;:::o;12685:349::-;12754:6;12803:2;12791:9;12782:7;12778:23;12774:32;12771:119;;;12809:79;;:::i;:::-;12771:119;12929:1;12954:63;13009:7;13000:6;12989:9;12985:22;12954:63;:::i;:::-;12944:73;;12900:127;12685:349;;;;:::o;13040:180::-;13088:77;13085:1;13078:88;13185:4;13182:1;13175:15;13209:4;13206:1;13199:15;13226:180;13274:77;13271:1;13264:88;13371:4;13368:1;13361:15;13395:4;13392:1;13385:15;13412:233;13451:3;13474:24;13492:5;13474:24;:::i;:::-;13465:33;;13520:66;13513:5;13510:77;13507:103;;13590:18;;:::i;:::-;13507:103;13637:1;13630:5;13626:13;13619:20;;13412:233;;;:::o;13651:178::-;13791:30;13787:1;13779:6;13775:14;13768:54;13651:178;:::o;13835:366::-;13977:3;13998:67;14062:2;14057:3;13998:67;:::i;:::-;13991:74;;14074:93;14163:3;14074:93;:::i;:::-;14192:2;14187:3;14183:12;14176:19;;13835:366;;;:::o;14207:419::-;14373:4;14411:2;14400:9;14396:18;14388:26;;14460:9;14454:4;14450:20;14446:1;14435:9;14431:17;14424:47;14488:131;14614:4;14488:131;:::i;:::-;14480:139;;14207:419;;;:::o;14632:79::-;14671:7;14700:5;14689:16;;14632:79;;;:::o;14717:157::-;14822:45;14842:24;14860:5;14842:24;:::i;:::-;14822:45;:::i;:::-;14817:3;14810:58;14717:157;;:::o;14880:397::-;15020:3;15035:75;15106:3;15097:6;15035:75;:::i;:::-;15135:2;15130:3;15126:12;15119:19;;15148:75;15219:3;15210:6;15148:75;:::i;:::-;15248:2;15243:3;15239:12;15232:19;;15268:3;15261:10;;14880:397;;;;;:::o;15283:208::-;15322:4;15342:19;15359:1;15342:19;:::i;:::-;15337:24;;15375:19;15392:1;15375:19;:::i;:::-;15370:24;;15418:1;15415;15411:9;15403:17;;15442:18;15436:4;15433:28;15430:54;;;15464:18;;:::i;:::-;15430:54;15283:208;;;;:::o;15497:118::-;15584:24;15602:5;15584:24;:::i;:::-;15579:3;15572:37;15497:118;;:::o;15621:328::-;15740:4;15778:2;15767:9;15763:18;15755:26;;15791:69;15857:1;15846:9;15842:17;15833:6;15791:69;:::i;:::-;15870:72;15938:2;15927:9;15923:18;15914:6;15870:72;:::i;:::-;15621:328;;;;;:::o;15955:324::-;16072:4;16110:2;16099:9;16095:18;16087:26;;16123:69;16189:1;16178:9;16174:17;16165:6;16123:69;:::i;:::-;16202:70;16268:2;16257:9;16253:18;16244:6;16202:70;:::i;:::-;15955:324;;;;;:::o;16285:222::-;16378:4;16416:2;16405:9;16401:18;16393:26;;16429:71;16497:1;16486:9;16482:17;16473:6;16429:71;:::i;:::-;16285:222;;;;:::o;16513:194::-;16553:4;16573:20;16591:1;16573:20;:::i;:::-;16568:25;;16607:20;16625:1;16607:20;:::i;:::-;16602:25;;16651:1;16648;16644:9;16636:17;;16675:1;16669:4;16666:11;16663:37;;;16680:18;;:::i;:::-;16663:37;16513:194;;;;:::o;16713:410::-;16753:7;16776:20;16794:1;16776:20;:::i;:::-;16771:25;;16810:20;16828:1;16810:20;:::i;:::-;16805:25;;16865:1;16862;16858:9;16887:30;16905:11;16887:30;:::i;:::-;16876:41;;17066:1;17057:7;17053:15;17050:1;17047:22;17027:1;17020:9;17000:83;16977:139;;17096:18;;:::i;:::-;16977:139;16761:362;16713:410;;;;:::o;17129:168::-;17269:20;17265:1;17257:6;17253:14;17246:44;17129:168;:::o;17303:366::-;17445:3;17466:67;17530:2;17525:3;17466:67;:::i;:::-;17459:74;;17542:93;17631:3;17542:93;:::i;:::-;17660:2;17655:3;17651:12;17644:19;;17303:366;;;:::o;17675:419::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17928:9;17922:4;17918:20;17914:1;17903:9;17899:17;17892:47;17956:131;18082:4;17956:131;:::i;:::-;17948:139;;17675:419;;;:::o;18100:185::-;18140:1;18157:20;18175:1;18157:20;:::i;:::-;18152:25;;18191:20;18209:1;18191:20;:::i;:::-;18186:25;;18230:1;18220:35;;18235:18;;:::i;:::-;18220:35;18277:1;18274;18270:9;18265:14;;18100:185;;;;:::o;18291:93::-;18327:7;18367:10;18360:5;18356:22;18345:33;;18291:93;;;:::o;18390:200::-;18429:4;18449:19;18466:1;18449:19;:::i;:::-;18444:24;;18482:19;18499:1;18482:19;:::i;:::-;18477:24;;18525:1;18522;18518:9;18510:17;;18549:10;18543:4;18540:20;18537:46;;;18563:18;;:::i;:::-;18537:46;18390:200;;;;:::o;18596:180::-;18644:77;18641:1;18634:88;18741:4;18738:1;18731:15;18765:4;18762:1;18755:15;18782:94;18815:8;18863:5;18859:2;18855:14;18834:35;;18782:94;;;:::o;18882:::-;18921:7;18950:20;18964:5;18950:20;:::i;:::-;18939:31;;18882:94;;;:::o;18982:100::-;19021:7;19050:26;19070:5;19050:26;:::i;:::-;19039:37;;18982:100;;;:::o;19088:157::-;19193:45;19213:24;19231:5;19213:24;:::i;:::-;19193:45;:::i;:::-;19188:3;19181:58;19088:157;;:::o;19251:679::-;19447:3;19462:75;19533:3;19524:6;19462:75;:::i;:::-;19562:2;19557:3;19553:12;19546:19;;19575:75;19646:3;19637:6;19575:75;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19688:75;19759:3;19750:6;19688:75;:::i;:::-;19788:2;19783:3;19779:12;19772:19;;19801:75;19872:3;19863:6;19801:75;:::i;:::-;19901:2;19896:3;19892:12;19885:19;;19921:3;19914:10;;19251:679;;;;;;;:::o;19936:176::-;19968:1;19985:20;20003:1;19985:20;:::i;:::-;19980:25;;20019:20;20037:1;20019:20;:::i;:::-;20014:25;;20058:1;20048:35;;20063:18;;:::i;:::-;20048:35;20104:1;20101;20097:9;20092:14;;19936:176;;;;:::o;20118:222::-;20211:4;20249:2;20238:9;20234:18;20226:26;;20262:71;20330:1;20319:9;20315:17;20306:6;20262:71;:::i;:::-;20118:222;;;;:::o;20346:172::-;20486:24;20482:1;20474:6;20470:14;20463:48;20346:172;:::o;20524:366::-;20666:3;20687:67;20751:2;20746:3;20687:67;:::i;:::-;20680:74;;20763:93;20852:3;20763:93;:::i;:::-;20881:2;20876:3;20872:12;20865:19;;20524:366;;;:::o;20896:419::-;21062:4;21100:2;21089:9;21085:18;21077:26;;21149:9;21143:4;21139:20;21135:1;21124:9;21120:17;21113:47;21177:131;21303:4;21177:131;:::i;:::-;21169:139;;20896:419;;;:::o;21321:332::-;21442:4;21480:2;21469:9;21465:18;21457:26;;21493:71;21561:1;21550:9;21546:17;21537:6;21493:71;:::i;:::-;21574:72;21642:2;21631:9;21627:18;21618:6;21574:72;:::i;:::-;21321:332;;;;;:::o;21659:116::-;21729:21;21744:5;21729:21;:::i;:::-;21722:5;21719:32;21709:60;;21765:1;21762;21755:12;21709:60;21659:116;:::o;21781:137::-;21835:5;21866:6;21860:13;21851:22;;21882:30;21906:5;21882:30;:::i;:::-;21781:137;;;;:::o;21924:345::-;21991:6;22040:2;22028:9;22019:7;22015:23;22011:32;22008:119;;;22046:79;;:::i;:::-;22008:119;22166:1;22191:61;22244:7;22235:6;22224:9;22220:22;22191:61;:::i;:::-;22181:71;;22137:125;21924:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"_generateFee\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_operatorEarningsWithBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helper_createOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506305f5e100600260006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600062000056620001ec60201b6200317c1760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620000a4670de0b6b3a76400006200022a60201b620031b81760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060028060009054906101000a900467ffffffffffffffff16620001a0919062000586565b8160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620001e5600082620002b360201b620032321790919060201c565b5062000876565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c620002219190620005d6565b90508091505090565b6000629896806801000000000000000062000246919062000611565b8211156200028b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028290620006bd565b60405180910390fd5b62989680620002a0836200036660201b60201c565b620002ac91906200070e565b9050919050565b620002c482620003c560201b60201c565b620002d5826200042660201b60201c565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555062000338816200022a60201b620031b81760201c565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008062989680836200037a919062000746565b14620003bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b490620007ce565b60405180910390fd5b819050919050565b620003d681620004a160201b60201c565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643620004699190620005d6565b62000475919062000586565b8260000160189054906101000a900467ffffffffffffffff166200049a9190620007f0565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643620004ff919062000833565b6200050b919062000586565b62000517919062000586565b8260010160009054906101000a900467ffffffffffffffff166200053c9190620007f0565b9050919050565b600067ffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005938262000543565b9150620005a08362000543565b9250828202620005b08162000543565b9150808214620005c557620005c462000557565b5b5092915050565b6000819050919050565b6000620005e382620005cc565b9150620005f083620005cc565b92508282039050818111156200060b576200060a62000557565b5b92915050565b60006200061e82620005cc565b91506200062b83620005cc565b92508282026200063b81620005cc565b9150828204841483151762000655576200065462000557565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000620006a56012836200065c565b9150620006b2826200066d565b602082019050919050565b60006020820190508181036000830152620006d88162000696565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071b82620005cc565b91506200072883620005cc565b9250826200073b576200073a620006df565b5b828204905092915050565b60006200075382620005cc565b91506200076083620005cc565b925082620007735762000772620006df565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000620007b66016836200065c565b9150620007c3826200077e565b602082019050919050565b60006020820190508181036000830152620007e981620007a7565b9050919050565b6000620007fd8262000543565b91506200080a8362000543565b9250828201905067ffffffffffffffff8111156200082d576200082c62000557565b5b92915050565b6000620008408262000543565b91506200084d8362000543565b9250828203905067ffffffffffffffff81111562000870576200086f62000557565b5b92915050565b6149d880620008866000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1772:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6469:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;5376:405::-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1772:799::-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;6469:149::-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;6624:131::-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;4379:991::-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3069:1304::-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:101::-;1310:7;1350:18;1343:5;1339:30;1328:41;;1274:101;;;:::o;1381:120::-;1453:23;1470:5;1453:23;:::i;:::-;1446:5;1443:34;1433:62;;1491:1;1488;1481:12;1433:62;1381:120;:::o;1507:137::-;1552:5;1590:6;1577:20;1568:29;;1606:32;1632:5;1606:32;:::i;:::-;1507:137;;;;:::o;1650:670::-;1728:6;1736;1744;1793:2;1781:9;1772:7;1768:23;1764:32;1761:119;;;1799:79;;:::i;:::-;1761:119;1947:1;1936:9;1932:17;1919:31;1977:18;1969:6;1966:30;1963:117;;;1999:79;;:::i;:::-;1963:117;2112:64;2168:7;2159:6;2148:9;2144:22;2112:64;:::i;:::-;2094:82;;;;1890:296;2225:2;2251:52;2295:7;2286:6;2275:9;2271:22;2251:52;:::i;:::-;2241:62;;2196:117;1650:670;;;;;:::o;2326:115::-;2411:23;2428:5;2411:23;:::i;:::-;2406:3;2399:36;2326:115;;:::o;2447:218::-;2538:4;2576:2;2565:9;2561:18;2553:26;;2589:69;2655:1;2644:9;2640:17;2631:6;2589:69;:::i;:::-;2447:218;;;;:::o;2671:77::-;2708:7;2737:5;2726:16;;2671:77;;;:::o;2754:122::-;2827:24;2845:5;2827:24;:::i;:::-;2820:5;2817:35;2807:63;;2866:1;2863;2856:12;2807:63;2754:122;:::o;2882:139::-;2928:5;2966:6;2953:20;2944:29;;2982:33;3009:5;2982:33;:::i;:::-;2882:139;;;;:::o;3027:472::-;3094:6;3102;3151:2;3139:9;3130:7;3126:23;3122:32;3119:119;;;3157:79;;:::i;:::-;3119:119;3277:1;3302:52;3346:7;3337:6;3326:9;3322:22;3302:52;:::i;:::-;3292:62;;3248:116;3403:2;3429:53;3474:7;3465:6;3454:9;3450:22;3429:53;:::i;:::-;3419:63;;3374:118;3027:472;;;;;:::o;3505:327::-;3563:6;3612:2;3600:9;3591:7;3587:23;3583:32;3580:119;;;3618:79;;:::i;:::-;3580:119;3738:1;3763:52;3807:7;3798:6;3787:9;3783:22;3763:52;:::i;:::-;3753:62;;3709:116;3505:327;;;;:::o;3838:126::-;3875:7;3915:42;3908:5;3904:54;3893:65;;3838:126;;;:::o;3970:96::-;4007:7;4036:24;4054:5;4036:24;:::i;:::-;4025:35;;3970:96;;;:::o;4072:122::-;4145:24;4163:5;4145:24;:::i;:::-;4138:5;4135:35;4125:63;;4184:1;4181;4174:12;4125:63;4072:122;:::o;4200:139::-;4246:5;4284:6;4271:20;4262:29;;4300:33;4327:5;4300:33;:::i;:::-;4200:139;;;;:::o;4345:472::-;4412:6;4420;4469:2;4457:9;4448:7;4444:23;4440:32;4437:119;;;4475:79;;:::i;:::-;4437:119;4595:1;4620:52;4664:7;4655:6;4644:9;4640:22;4620:52;:::i;:::-;4610:62;;4566:116;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4345:472;;;;;:::o;4823:147::-;4924:11;4961:3;4946:18;;4823:147;;;;:::o;4976:146::-;5073:6;5068:3;5063;5050:30;5114:1;5105:6;5100:3;5096:16;5089:27;4976:146;;;:::o;5150:327::-;5264:3;5285:88;5366:6;5361:3;5285:88;:::i;:::-;5278:95;;5383:56;5432:6;5427:3;5420:5;5383:56;:::i;:::-;5464:6;5459:3;5455:16;5448:23;;5150:327;;;;;:::o;5483:291::-;5623:3;5645:103;5744:3;5735:6;5727;5645:103;:::i;:::-;5638:110;;5765:3;5758:10;;5483:291;;;;;:::o;5780:168::-;5863:11;5897:6;5892:3;5885:19;5937:4;5932:3;5928:14;5913:29;;5780:168;;;;:::o;5954:102::-;5995:6;6046:2;6042:7;6037:2;6030:5;6026:14;6022:28;6012:38;;5954:102;;;:::o;6084:314::-;6180:3;6201:70;6264:6;6259:3;6201:70;:::i;:::-;6194:77;;6281:56;6330:6;6325:3;6318:5;6281:56;:::i;:::-;6362:29;6384:6;6362:29;:::i;:::-;6357:3;6353:39;6346:46;;6084:314;;;;;:::o;6404:60::-;6432:3;6453:5;6446:12;;6404:60;;;:::o;6470:140::-;6519:9;6552:52;6570:33;6579:23;6596:5;6579:23;:::i;:::-;6570:33;:::i;:::-;6552:52;:::i;:::-;6539:65;;6470:140;;;:::o;6616:129::-;6702:36;6732:5;6702:36;:::i;:::-;6697:3;6690:49;6616:129;;:::o;6751:437::-;6899:4;6937:2;6926:9;6922:18;6914:26;;6986:9;6980:4;6976:20;6972:1;6961:9;6957:17;6950:47;7014:86;7095:4;7086:6;7078;7014:86;:::i;:::-;7006:94;;7110:71;7177:2;7166:9;7162:18;7153:6;7110:71;:::i;:::-;6751:437;;;;;;:::o;7194:118::-;7281:24;7299:5;7281:24;:::i;:::-;7276:3;7269:37;7194:118;;:::o;7318:332::-;7439:4;7477:2;7466:9;7462:18;7454:26;;7490:71;7558:1;7547:9;7543:17;7534:6;7490:71;:::i;:::-;7571:72;7639:2;7628:9;7624:18;7615:6;7571:72;:::i;:::-;7318:332;;;;;:::o;7656:180::-;7704:77;7701:1;7694:88;7801:4;7798:1;7791:15;7825:4;7822:1;7815:15;7842:205;7881:3;7900:19;7917:1;7900:19;:::i;:::-;7895:24;;7933:19;7950:1;7933:19;:::i;:::-;7928:24;;7975:1;7972;7968:9;7961:16;;7998:18;7993:3;7990:27;7987:53;;;8020:18;;:::i;:::-;7987:53;7842:205;;;;:::o;8053:275::-;8092:7;8115:19;8132:1;8115:19;:::i;:::-;8110:24;;8148:19;8165:1;8148:19;:::i;:::-;8143:24;;8202:1;8199;8195:9;8224:29;8241:11;8224:29;:::i;:::-;8213:40;;8285:11;8276:7;8273:24;8263:58;;8301:18;;:::i;:::-;8263:58;8100:228;8053:275;;;;:::o;8334:180::-;8382:77;8379:1;8372:88;8479:4;8476:1;8469:15;8503:4;8500:1;8493:15;8520:182;8559:1;8576:19;8593:1;8576:19;:::i;:::-;8571:24;;8609:19;8626:1;8609:19;:::i;:::-;8604:24;;8647:1;8637:35;;8652:18;;:::i;:::-;8637:35;8694:1;8691;8687:9;8682:14;;8520:182;;;;:::o;8708:118::-;8795:24;8813:5;8795:24;:::i;:::-;8790:3;8783:37;8708:118;;:::o;8832:222::-;8925:4;8963:2;8952:9;8948:18;8940:26;;8976:71;9044:1;9033:9;9029:17;9020:6;8976:71;:::i;:::-;8832:222;;;;:::o;9060:194::-;9100:4;9120:20;9138:1;9120:20;:::i;:::-;9115:25;;9154:20;9172:1;9154:20;:::i;:::-;9149:25;;9198:1;9195;9191:9;9183:17;;9222:1;9216:4;9213:11;9210:37;;;9227:18;;:::i;:::-;9210:37;9060:194;;;;:::o;9260:410::-;9300:7;9323:20;9341:1;9323:20;:::i;:::-;9318:25;;9357:20;9375:1;9357:20;:::i;:::-;9352:25;;9412:1;9409;9405:9;9434:30;9452:11;9434:30;:::i;:::-;9423:41;;9613:1;9604:7;9600:15;9597:1;9594:22;9574:1;9567:9;9547:83;9524:139;;9643:18;;:::i;:::-;9524:139;9308:362;9260:410;;;;:::o;9676:169::-;9760:11;9794:6;9789:3;9782:19;9834:4;9829:3;9825:14;9810:29;;9676:169;;;;:::o;9851:168::-;9991:20;9987:1;9979:6;9975:14;9968:44;9851:168;:::o;10025:366::-;10167:3;10188:67;10252:2;10247:3;10188:67;:::i;:::-;10181:74;;10264:93;10353:3;10264:93;:::i;:::-;10382:2;10377:3;10373:12;10366:19;;10025:366;;;:::o;10397:419::-;10563:4;10601:2;10590:9;10586:18;10578:26;;10650:9;10644:4;10640:20;10636:1;10625:9;10621:17;10614:47;10678:131;10804:4;10678:131;:::i;:::-;10670:139;;10397:419;;;:::o;10822:185::-;10862:1;10879:20;10897:1;10879:20;:::i;:::-;10874:25;;10913:20;10931:1;10913:20;:::i;:::-;10908:25;;10952:1;10942:35;;10957:18;;:::i;:::-;10942:35;10999:1;10996;10992:9;10987:14;;10822:185;;;;:::o;11013:93::-;11049:7;11089:10;11082:5;11078:22;11067:33;;11013:93;;;:::o;11112:200::-;11151:4;11171:19;11188:1;11171:19;:::i;:::-;11166:24;;11204:19;11221:1;11204:19;:::i;:::-;11199:24;;11247:1;11244;11240:9;11232:17;;11271:10;11265:4;11262:20;11259:46;;;11285:18;;:::i;:::-;11259:46;11112:200;;;;:::o;11318:222::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11462:71;11530:1;11519:9;11515:17;11506:6;11462:71;:::i;:::-;11318:222;;;;:::o;11546:208::-;11585:4;11605:19;11622:1;11605:19;:::i;:::-;11600:24;;11638:19;11655:1;11638:19;:::i;:::-;11633:24;;11681:1;11678;11674:9;11666:17;;11705:18;11699:4;11696:28;11693:54;;;11727:18;;:::i;:::-;11693:54;11546:208;;;;:::o;11760:176::-;11792:1;11809:20;11827:1;11809:20;:::i;:::-;11804:25;;11843:20;11861:1;11843:20;:::i;:::-;11838:25;;11882:1;11872:35;;11887:18;;:::i;:::-;11872:35;11928:1;11925;11921:9;11916:14;;11760:176;;;;:::o;11942:172::-;12082:24;12078:1;12070:6;12066:14;12059:48;11942:172;:::o;12120:366::-;12262:3;12283:67;12347:2;12342:3;12283:67;:::i;:::-;12276:74;;12359:93;12448:3;12359:93;:::i;:::-;12477:2;12472:3;12468:12;12461:19;;12120:366;;;:::o;12492:419::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12492:419;;;:::o;12917:332::-;13038:4;13076:2;13065:9;13061:18;13053:26;;13089:71;13157:1;13146:9;13142:17;13133:6;13089:71;:::i;:::-;13170:72;13238:2;13227:9;13223:18;13214:6;13170:72;:::i;:::-;12917:332;;;;;:::o;13255:90::-;13289:7;13332:5;13325:13;13318:21;13307:32;;13255:90;;;:::o;13351:116::-;13421:21;13436:5;13421:21;:::i;:::-;13414:5;13411:32;13401:60;;13457:1;13454;13447:12;13401:60;13351:116;:::o;13473:137::-;13527:5;13558:6;13552:13;13543:22;;13574:30;13598:5;13574:30;:::i;:::-;13473:137;;;;:::o;13616:345::-;13683:6;13732:2;13720:9;13711:7;13707:23;13703:32;13700:119;;;13738:79;;:::i;:::-;13700:119;13858:1;13883:61;13936:7;13927:6;13916:9;13912:22;13883:61;:::i;:::-;13873:71;;13829:125;13616:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613233806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file From d72e8f5a3c1f890f06f7875aef6da433f7fe4c65 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Wed, 14 Feb 2024 18:17:45 +0100 Subject: [PATCH 13/19] fix: 2 erros in SSVOperators.sol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Operator is removed but the whitelisted is true yet. - Operator is removed but declared fee of the operator isn't deleted, so the operatorFeeChangeRequests isn’t optimized --- abis/SSVNetwork.json | 1717 +++++++++++++++++ abis/SSVNetworkViews.json | 875 +++++++++ contracts/SSVNetwork.sol | 25 +- contracts/SSVNetworkViews.sol | 23 +- .../RegisterAuth.sol | 4 +- contracts/echidna/Clusters.sol | 137 +- contracts/echidna/DAO.sol | 5 - contracts/echidna/Operators.sol | 45 +- contracts/interfaces/ISSVClusters.sol | 39 + contracts/interfaces/ISSVNetwork.sol | 4 - contracts/interfaces/ISSVOperators.sol | 2 +- contracts/interfaces/ISSVViews.sol | 29 +- contracts/libraries/CoreLib.sol | 2 +- contracts/libraries/OperatorLib.sol | 11 +- contracts/libraries/Types.sol | 2 +- contracts/libraries/ValidatorLib.sol | 27 + contracts/modules/SSVClusters.sol | 32 +- contracts/modules/SSVDAO.sol | 1 + contracts/modules/SSVOperators.sol | 19 +- contracts/modules/SSVViews.sol | 22 +- contracts/test/SSVNetworkUpgrade.sol | 11 +- contracts/test/SSVViewsT.sol | 4 + contracts/test/interfaces/ISSVNetworkT.sol | 2 - contracts/test/libraries/CoreLibT.sol | 2 +- contracts/test/modules/SSVOperatorsUpdate.sol | 4 +- contracts/token/SSVToken.sol | 23 + .../SSVNetworkValidatorsPerOperator.sol | 2 +- ...SSVNetworkUpgradeValidatorsPerOperator.sol | 12 + crytic-export/combined_solc.json | 2 +- hardhat.config.ts | 23 + package-lock.json | 116 +- package.json | 30 +- test/account/deposit.ts | 2 +- test/account/withdraw.ts | 49 +- test/dao/network-fee-change.ts | 6 + test/dao/network-fee-withdraw.ts | 25 +- test/dao/operational.ts | 61 +- test/deployment/deploy.ts | 48 +- test/deployment/version.ts | 2 +- test/helpers/contract-helpers.ts | 14 +- test/helpers/gas-usage.ts | 9 + test/liquidate/liquidate.ts | 1 - test/liquidate/liquidated-cluster.ts | 5 +- test/liquidate/reactivate.ts | 3 +- test/operators/others.ts | 3 - test/operators/register-auth.ts | 87 - test/operators/register.ts | 2 - test/operators/remove.ts | 7 +- test/operators/update-fee.ts | 1 - test/sanity/balances.ts | 51 +- test/validators/others.ts | 154 ++ test/validators/register.ts | 13 - test/validators/remove.ts | 78 +- 53 files changed, 3435 insertions(+), 438 deletions(-) create mode 100644 abis/SSVNetwork.json create mode 100644 abis/SSVNetworkViews.json rename contracts/{libraries => deprecated}/RegisterAuth.sol (70%) create mode 100644 contracts/libraries/ValidatorLib.sol create mode 100644 contracts/token/SSVToken.sol rename contracts/upgrades/stage/{ => goerli}/SSVNetworkValidatorsPerOperator.sol (91%) create mode 100644 contracts/upgrades/stage/holesky/SSVNetworkUpgradeValidatorsPerOperator.sol delete mode 100644 test/operators/register-auth.ts create mode 100644 test/validators/others.ts diff --git a/abis/SSVNetwork.json b/abis/SSVNetwork.json new file mode 100644 index 00000000..9a017710 --- /dev/null +++ b/abis/SSVNetwork.json @@ -0,0 +1,1717 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ApprovalNotWithinTimeframe", + "type": "error" + }, + { + "inputs": [], + "name": "CallerNotOwner", + "type": "error" + }, + { + "inputs": [], + "name": "CallerNotWhitelisted", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterAlreadyEnabled", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterDoesNotExists", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterIsLiquidated", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterNotLiquidatable", + "type": "error" + }, + { + "inputs": [], + "name": "ExceedValidatorLimit", + "type": "error" + }, + { + "inputs": [], + "name": "FeeExceedsIncreaseLimit", + "type": "error" + }, + { + "inputs": [], + "name": "FeeIncreaseNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectClusterState", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectValidatorState", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperatorIdsLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPublicKeyLength", + "type": "error" + }, + { + "inputs": [], + "name": "MaxValueExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "NewBlockPeriodIsBelowMinimum", + "type": "error" + }, + { + "inputs": [], + "name": "NoFeeDeclared", + "type": "error" + }, + { + "inputs": [], + "name": "NotAuthorized", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorsListNotUnique", + "type": "error" + }, + { + "inputs": [], + "name": "SameFeeChangeNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "TargetModuleDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TokenTransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "UnsortedOperatorsList", + "type": "error" + }, + { + "inputs": [], + "name": "ValidatorAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ValidatorDoesNotExist", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ClusterDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ClusterLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ClusterReactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ClusterWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "value", + "type": "uint64" + } + ], + "name": "DeclareOperatorFeePeriodUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "value", + "type": "uint64" + } + ], + "name": "ExecuteOperatorFeePeriodUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipientAddress", + "type": "address" + } + ], + "name": "FeeRecipientAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "value", + "type": "uint64" + } + ], + "name": "LiquidationThresholdPeriodUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "MinimumLiquidationCollateralUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "NetworkEarningsWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFee", + "type": "uint256" + } + ], + "name": "NetworkFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "OperatorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "OperatorFeeDeclarationCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "OperatorFeeDeclared", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "OperatorFeeExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "value", + "type": "uint64" + } + ], + "name": "OperatorFeeIncreaseLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "maxFee", + "type": "uint64" + } + ], + "name": "OperatorMaximumFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "OperatorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "address", + "name": "whitelisted", + "type": "address" + } + ], + "name": "OperatorWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "OperatorWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "shares", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ValidatorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "ValidatorExited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "ValidatorRemoved", + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "cancelDeclaredOperatorFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "declareOperatorFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "executeOperatorFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + } + ], + "name": "exitValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "version", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token_", + "type": "address" + }, + { + "internalType": "contract ISSVOperators", + "name": "ssvOperators_", + "type": "address" + }, + { + "internalType": "contract ISSVClusters", + "name": "ssvClusters_", + "type": "address" + }, + { + "internalType": "contract ISSVDAO", + "name": "ssvDAO_", + "type": "address" + }, + { + "internalType": "contract ISSVViews", + "name": "ssvViews_", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minimumBlocksBeforeLiquidation_", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "minimumLiquidationCollateral_", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validatorsPerOperatorLimit_", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "declareOperatorFeePeriod_", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "executeOperatorFeePeriod_", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "operatorMaxFeeIncrease_", + "type": "uint64" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "liquidate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "reactivate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "reduceOperatorFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "registerOperator", + "outputs": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "internalType": "bytes", + "name": "sharesData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "registerValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "removeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "removeValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipientAddress", + "type": "address" + } + ], + "name": "setFeeRecipientAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "whitelisted", + "type": "address" + } + ], + "name": "setOperatorWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "timeInSeconds", + "type": "uint64" + } + ], + "name": "updateDeclareOperatorFeePeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "timeInSeconds", + "type": "uint64" + } + ], + "name": "updateExecuteOperatorFeePeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blocks", + "type": "uint64" + } + ], + "name": "updateLiquidationThresholdPeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "maxFee", + "type": "uint64" + } + ], + "name": "updateMaximumOperatorFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "updateMinimumLiquidationCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum SSVModules", + "name": "moduleId", + "type": "uint8" + }, + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "updateModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "updateNetworkFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "percentage", + "type": "uint64" + } + ], + "name": "updateOperatorFeeIncreaseLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "withdrawAllOperatorEarnings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawNetworkEarnings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawOperatorEarnings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/abis/SSVNetworkViews.json b/abis/SSVNetworkViews.json new file mode 100644 index 00000000..64cc9826 --- /dev/null +++ b/abis/SSVNetworkViews.json @@ -0,0 +1,875 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ApprovalNotWithinTimeframe", + "type": "error" + }, + { + "inputs": [], + "name": "CallerNotOwner", + "type": "error" + }, + { + "inputs": [], + "name": "CallerNotWhitelisted", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterAlreadyEnabled", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterDoesNotExists", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterIsLiquidated", + "type": "error" + }, + { + "inputs": [], + "name": "ClusterNotLiquidatable", + "type": "error" + }, + { + "inputs": [], + "name": "ExceedValidatorLimit", + "type": "error" + }, + { + "inputs": [], + "name": "FeeExceedsIncreaseLimit", + "type": "error" + }, + { + "inputs": [], + "name": "FeeIncreaseNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectClusterState", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectValidatorState", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperatorIdsLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPublicKeyLength", + "type": "error" + }, + { + "inputs": [], + "name": "MaxValueExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "NewBlockPeriodIsBelowMinimum", + "type": "error" + }, + { + "inputs": [], + "name": "NoFeeDeclared", + "type": "error" + }, + { + "inputs": [], + "name": "NotAuthorized", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "OperatorsListNotUnique", + "type": "error" + }, + { + "inputs": [], + "name": "SameFeeChangeNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "TargetModuleDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TokenTransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "UnsortedOperatorsList", + "type": "error" + }, + { + "inputs": [], + "name": "ValidatorAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ValidatorDoesNotExist", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "getBurnRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLiquidationThresholdPeriod", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaximumOperatorFee", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumLiquidationCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNetworkEarnings", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNetworkFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNetworkValidatorsCount", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "getOperatorById", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "", + "type": "uint32" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "getOperatorDeclaredFee", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "name": "getOperatorEarnings", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "operatorId", + "type": "uint64" + } + ], + "name": "getOperatorFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOperatorFeeIncreaseLimit", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOperatorFeePeriods", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "getValidator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getValidatorsPerOperatorLimit", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISSVViews", + "name": "ssvNetwork_", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "isLiquidatable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clusterOwner", + "type": "address" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "isLiquidated", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ssvNetwork", + "outputs": [ + { + "internalType": "contract ISSVViews", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } +] diff --git a/contracts/SSVNetwork.sol b/contracts/SSVNetwork.sol index 62179ad8..3380af0a 100644 --- a/contracts/SSVNetwork.sol +++ b/contracts/SSVNetwork.sol @@ -12,7 +12,6 @@ import "./libraries/Types.sol"; import "./libraries/CoreLib.sol"; import "./libraries/SSVStorage.sol"; import "./libraries/SSVStorageProtocol.sol"; -import "./libraries/RegisterAuth.sol"; import "./SSVProxy.sol"; @@ -118,9 +117,7 @@ contract SSVNetwork is /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { - if (!RegisterAuth.load().authorization[msg.sender].registerOperator) revert NotAuthorized(); - + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); } @@ -175,8 +172,6 @@ contract SSVNetwork is uint256 amount, ISSVNetworkCore.Cluster memory cluster ) external override { - if (!RegisterAuth.load().authorization[msg.sender].registerValidator) revert NotAuthorized(); - _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); } @@ -221,6 +216,10 @@ contract SSVNetwork is _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); } + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + function updateNetworkFee(uint256 fee) external override onlyOwner { _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); } @@ -263,18 +262,4 @@ contract SSVNetwork is function updateModule(SSVModules moduleId, address moduleAddress) external onlyOwner { CoreLib.setModuleContract(moduleId, moduleAddress); } - - /*******************************/ - /* Register Authorization */ - /*******************************/ - function setRegisterAuth(address userAddress, bool authOperator, bool authValidator) external override onlyOwner { - RegisterAuth.load().authorization[userAddress] = Authorization(authOperator, authValidator); - } - - function getRegisterAuth( - address userAddress - ) external view override returns (bool authOperators, bool authValidators) { - Authorization memory auth = RegisterAuth.load().authorization[userAddress]; - return (auth.registerOperator, auth.registerValidator); - } } diff --git a/contracts/SSVNetworkViews.sol b/contracts/SSVNetworkViews.sol index b731d7f8..5da979a6 100644 --- a/contracts/SSVNetworkViews.sol +++ b/contracts/SSVNetworkViews.sol @@ -39,7 +39,7 @@ contract SSVNetworkViews is UUPSUpgradeable, Ownable2StepUpgradeable, ISSVViews /* Validator External View Functions */ /*************************************/ - function getValidator(address clusterOwner, bytes calldata publicKey) external view override returns (bool active) { + function getValidator(address clusterOwner, bytes calldata publicKey) external view override returns (bool) { return ssvNetwork.getValidator(clusterOwner, publicKey); } @@ -55,7 +55,9 @@ contract SSVNetworkViews is UUPSUpgradeable, Ownable2StepUpgradeable, ISSVViews return ssvNetwork.getOperatorDeclaredFee(operatorId); } - function getOperatorById(uint64 operatorId) external view override returns (address, uint256, uint32, address, bool, bool) { + function getOperatorById( + uint64 operatorId + ) external view override returns (address, uint256, uint32, address, bool, bool) { return ssvNetwork.getOperatorById(operatorId); } @@ -115,20 +117,15 @@ contract SSVNetworkViews is UUPSUpgradeable, Ownable2StepUpgradeable, ISSVViews return ssvNetwork.getNetworkEarnings(); } - function getOperatorFeeIncreaseLimit() external view override returns (uint64 operatorMaxFeeIncrease) { + function getOperatorFeeIncreaseLimit() external view override returns (uint64) { return ssvNetwork.getOperatorFeeIncreaseLimit(); } - function getMaximumOperatorFee() external view override returns (uint64 operatorMaxFee) { + function getMaximumOperatorFee() external view override returns (uint64) { return ssvNetwork.getMaximumOperatorFee(); } - function getOperatorFeePeriods() - external - view - override - returns (uint64 declareOperatorFeePeriod, uint64 executeOperatorFeePeriod) - { + function getOperatorFeePeriods() external view override returns (uint64, uint64) { return ssvNetwork.getOperatorFeePeriods(); } @@ -144,7 +141,11 @@ contract SSVNetworkViews is UUPSUpgradeable, Ownable2StepUpgradeable, ISSVViews return ssvNetwork.getValidatorsPerOperatorLimit(); } - function getVersion() external view override returns (string memory version) { + function getNetworkValidatorsCount() external view override returns (uint32) { + return ssvNetwork.getNetworkValidatorsCount(); + } + + function getVersion() external view override returns (string memory) { return ssvNetwork.getVersion(); } } diff --git a/contracts/libraries/RegisterAuth.sol b/contracts/deprecated/RegisterAuth.sol similarity index 70% rename from contracts/libraries/RegisterAuth.sol rename to contracts/deprecated/RegisterAuth.sol index 351721b3..48cc836d 100644 --- a/contracts/libraries/RegisterAuth.sol +++ b/contracts/deprecated/RegisterAuth.sol @@ -6,8 +6,10 @@ struct Authorization { bool registerValidator; } +/// @notice Deprecated. Notice that if the library is used again, +/// all the values in AuthData.authorization will still be available. library RegisterAuth { - uint256 constant private SSV_STORAGE_POSITION = uint256(keccak256("ssv.network.storage.auth")) - 1; + uint256 private constant SSV_STORAGE_POSITION = uint256(keccak256("ssv.network.storage.auth")) - 1; struct AuthData { mapping(address => Authorization) authorization; diff --git a/contracts/echidna/Clusters.sol b/contracts/echidna/Clusters.sol index acc74b3b..78e640a0 100644 --- a/contracts/echidna/Clusters.sol +++ b/contracts/echidna/Clusters.sol @@ -3,22 +3,32 @@ pragma solidity 0.8.18; import "../modules/SSVClusters.sol"; import "../libraries/ClusterLib.sol"; +import "../libraries/ProtocolLib.sol"; contract Clusters is SSVClusters { using ClusterLib for Cluster; - - constructor() {} + using Types64 for uint64; + using Types256 for uint256; + using ProtocolLib for StorageProtocol; bytes[] publicKeys; bytes32[] hashedClusters; - uint64[] public operatorIds; + uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; uint64 private constant MIN_OPERATORS_LENGTH = 4; uint64 private constant MAX_OPERATORS_LENGTH = 13; uint64 private constant MODULO_OPERATORS_LENGTH = 3; uint64 private constant PUBLIC_KEY_LENGTH = 48; uint256 private sault = 0; + constructor() { + // operators = new Operators(); + // for (uint i; i < 4; i++) { + // uint64 operatorId = operators.helper_createOperator(); + // } + // assert(operators.getOperatorBlock(1) == SSVStorage.load().operators[1].snapshot.block); + } + function _generatePublicKey() internal returns (bytes memory) { bytes memory randomBytes = new bytes(48); for (uint i = 0; i < 48; i++) { @@ -30,86 +40,43 @@ contract Clusters is SSVClusters { return randomBytes; } - function _generateOperatorIds() internal returns (uint64[] memory operatorIds) { - uint256 baseLength = (uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, sault))) % - MIN_OPERATORS_LENGTH); - uint256 length = 4 + baseLength * 3; // This will produce lengths 4, 7, 10, or 13 - sault++; - - operatorIds = new uint64[](length); - for (uint256 i = 0; i < length; i++) { - uint64 randomId; - bool unique; - do { - sault++; // Ensure a different seed for the random number - randomId = _generateRandomId(); - unique = !_isDuplicate(randomId); - } while (!unique); - - // Insert the unique randomId in a sorted position - uint256 j = i; - while (j > 0 && operatorIds[j - 1] > randomId) { - if (j < operatorIds.length) { - operatorIds[j] = operatorIds[j - 1]; // Shift larger IDs to the right - } - j--; - } - operatorIds[j] = randomId; // Insert the new ID in its correct sorted position - } - return operatorIds; - } - - function _generateRandomId() internal returns (uint64) { - return uint64(uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, sault))) % 2 ** 64); - } - - function _isDuplicate(uint64 id) internal view returns (bool) { - for (uint256 i = 0; i < operatorIds.length; i++) { - if (operatorIds[i] == id) { - return true; - } - } - return false; - } - - function helper_registerValidator(bytes calldata sharesData, uint256 amount, Cluster memory cluster) public { - StorageData storage s = SSVStorage.load(); - - bytes memory _publicKey = _generatePublicKey(); - uint64[] memory _operatorIds = _generateOperatorIds(); - - bytes32 _hashedCluster = keccak256(abi.encodePacked(msg.sender, _operatorIds)); - - bytes32 clusterData = s.clusters[_hashedCluster]; - if (clusterData == bytes32(0)) { - cluster.validatorCount = 0; - cluster.networkFeeIndex = 0; - cluster.index = 0; - cluster.balance = 0; - cluster.active = true; - } else { - s.clusters[_hashedCluster] = cluster.hashClusterData(); - } - - try this.registerValidator(_publicKey, _operatorIds, sharesData, amount, cluster) { - publicKeys.push(_publicKey); - hashedClusters.push(_hashedCluster); - } catch { - assert(false); - } - } - - function check_removeValidator(uint64 publicKeyId, uint64[] calldata operatorIds, Cluster memory cluster) public { - publicKeyId = publicKeyId % uint64(publicKeys.length); - - this.removeValidator(publicKeys[publicKeyId], operatorIds, cluster); - } - - function check_invariant_validatorPKs() public { - StorageData storage s = SSVStorage.load(); - - for (uint64 i = 0; i < hashedClusters.length; i++) { - assert(s.clusters[hashedClusters[i]] == bytes32(0)); - } - } + // function helper_registerValidator(bytes calldata sharesData, uint256 amount, Cluster memory cluster) public { + // StorageData storage s = SSVStorage.load(); + // bytes memory _publicKey = _generatePublicKey(); + // uint64[] memory _operatorIds = operators.getOperatorIds(); + + // bytes32 _hashedCluster = keccak256(abi.encodePacked(msg.sender, _operatorIds)); + + // bytes32 clusterData = s.clusters[_hashedCluster]; + // if (clusterData == bytes32(0)) { + // cluster.validatorCount = 0; + // cluster.networkFeeIndex = 0; + // cluster.index = 0; + // cluster.balance = 0; + // cluster.active = true; + // } else { + // s.clusters[_hashedCluster] = cluster.hashClusterData(); + // } + + // try this.registerValidator(_publicKey, _operatorIds, sharesData, amount, cluster) { + // publicKeys.push(_publicKey); + // hashedClusters.push(_hashedCluster); + // } catch { + // assert(false); + // } + // } + + // function check_removeValidator(uint64 publicKeyId, uint64[] calldata operatorIds, Cluster memory cluster) public { + // publicKeyId = publicKeyId % uint64(publicKeys.length); + + // this.removeValidator(publicKeys[publicKeyId], operatorIds, cluster); + // } + + // function check_invariant_validatorPKs() public { + // StorageData storage s = SSVStorage.load(); + + // for (uint64 i = 0; i < hashedClusters.length; i++) { + // assert(s.clusters[hashedClusters[i]] == bytes32(0)); + // } + // } } diff --git a/contracts/echidna/DAO.sol b/contracts/echidna/DAO.sol index 9016a18e..d87b8833 100644 --- a/contracts/echidna/DAO.sol +++ b/contracts/echidna/DAO.sol @@ -12,9 +12,4 @@ contract DAO is SSVDAO { function check_updateNetworkFee(uint256 fee) public { this.updateNetworkFee(fee); } - - function check_invariant_networkfee() public { - StorageProtocol storage sp = SSVStorageProtocol.load(); - assert(sp.networkFee > 0); - } } diff --git a/contracts/echidna/Operators.sol b/contracts/echidna/Operators.sol index 1919a4a0..d06bcb3e 100644 --- a/contracts/echidna/Operators.sol +++ b/contracts/echidna/Operators.sol @@ -10,8 +10,9 @@ contract Operators is SSVOperators { using ProtocolLib for StorageProtocol; uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; + uint64 private constant MAXIMUM_OPERATOR_FEE = 76_528_650_000_000; uint64 private constant PRECISION_FACTOR = 10_000; - uint64[] opIds; + uint64[] public opIds; uint256 private sault; uint64 private minNetworkFee; @@ -27,11 +28,19 @@ contract Operators is SSVOperators { sp.declareOperatorFeePeriod = 604800; sp.executeOperatorFeePeriod = 604800; sp.operatorMaxFeeIncrease = 1000; - sp.operatorMaxFee = minNetworkFee * 2; + sp.operatorMaxFee = MAXIMUM_OPERATOR_FEE; sp.updateNetworkFee(0); } + function getOperatorIds() public view returns (uint64[] memory) { + return opIds; + } + + function getOperatorBlock(uint64 operatorId) public view returns (uint256) { + return SSVStorage.load().operators[operatorId].snapshot.block; + } + function _generatePublicKey() internal returns (bytes memory) { bytes memory randomBytes = new bytes(48); for (uint i = 0; i < 48; i++) { @@ -43,23 +52,36 @@ contract Operators is SSVOperators { return randomBytes; } - function _generateFee(uint64 min, uint64 max) public returns (uint64) { + function _generateFee(uint256 min, uint256 max) internal returns (uint256) { require(max > min, "Max must be greater than min"); + require( + min % DEDUCTED_DIGITS == 0 && max % DEDUCTED_DIGITS == 0, + "Min and Max must be multiples of 10,000,000" + ); + uint256 randomHash = uint256(keccak256(abi.encodePacked(sault, block.timestamp))); sault++; uint64 reducedHash = uint64(randomHash); - return (reducedHash % (max - min + 1)) + min; + + // Calculate a fee within the range, ensuring it ends in a multiple of 10,000,000 + uint256 range = (max - min) / DEDUCTED_DIGITS + 1; + uint256 feeMultiplier = (reducedHash % range) * DEDUCTED_DIGITS; + uint256 fee = min + feeMultiplier; + fee = fee - (fee % DEDUCTED_DIGITS); + + return fee; } - function helper_createOperator() public { - uint64 minN = minNetworkFee; - uint64 maxN = SSVStorageProtocol.load().operatorMaxFee; + function helper_createOperator() public returns (uint64) { + uint256 minN = minNetworkFee; + uint256 maxN = SSVStorageProtocol.load().operatorMaxFee; bytes memory publicKey = _generatePublicKey(); - uint64 fee = _generateFee(minN, maxN); + uint256 fee = _generateFee(minN, maxN); try this.registerOperator(publicKey, fee) returns (uint64 operatorId) { opIds.push(operatorId); + return operatorId; } catch { assert(false); } @@ -103,15 +125,16 @@ contract Operators is SSVOperators { function check_removedOperatorNotWhitelisted(uint64 operatorId) public { operatorId = operatorId % uint64(opIds.length); - Operator storage operator = SSVStorage.load().operators[operatorId]; + Operator memory operator = SSVStorage.load().operators[operatorId]; if ((operator.snapshot.block == 0) && operator.whitelisted) emit AssertionFailed(operatorId, operator.whitelisted); } function check_removedOperatorNoFeeDeclared(uint64 operatorId) public { - operatorId = 1 + (operatorId % (uint64(opIds.length) - 1)); - Operator storage operator = SSVStorage.load().operators[operatorId]; + operatorId = operatorId % uint64(opIds.length); + + Operator memory operator = SSVStorage.load().operators[operatorId]; if ( (operator.snapshot.block == 0) && diff --git a/contracts/interfaces/ISSVClusters.sol b/contracts/interfaces/ISSVClusters.sol index 9910e9fd..b3d82d87 100644 --- a/contracts/interfaces/ISSVClusters.sol +++ b/contracts/interfaces/ISSVClusters.sol @@ -57,6 +57,11 @@ interface ISSVClusters is ISSVNetworkCore { /// @param cluster Cluster where the withdrawal will be made function withdraw(uint64[] memory operatorIds, uint256 tokenAmount, Cluster memory cluster) external; + /// @notice Fires the exit event for a validator + /// @param publicKey The public key of the validator to be exited + /// @param operatorIds Array of IDs of operators managing the validator + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external; + /** * @dev Emitted when the validator has been added. * @param publicKey The public key of a validator. @@ -74,11 +79,45 @@ interface ISSVClusters is ISSVNetworkCore { */ event ValidatorRemoved(address indexed owner, uint64[] operatorIds, bytes publicKey, Cluster cluster); + /** + * @dev Emitted when a cluster is liquidated. + * @param owner The owner of the liquidated cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param cluster The liquidated cluster data. + */ event ClusterLiquidated(address indexed owner, uint64[] operatorIds, Cluster cluster); + /** + * @dev Emitted when a cluster is reactivated. + * @param owner The owner of the reactivated cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param cluster The reactivated cluster data. + */ event ClusterReactivated(address indexed owner, uint64[] operatorIds, Cluster cluster); + /** + * @dev Emitted when tokens are withdrawn from a cluster. + * @param owner The owner of the cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param value The amount of tokens withdrawn. + * @param cluster The cluster from which tokens were withdrawn. + */ event ClusterWithdrawn(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster); + /** + * @dev Emitted when tokens are deposited into a cluster. + * @param owner The owner of the cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param value The amount of SSV tokens deposited. + * @param cluster The cluster into which SSV tokens were deposited. + */ event ClusterDeposited(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster); + + /** + * @dev Emitted when a validator begins the exit process. + * @param owner The owner of the exiting validator. + * @param operatorIds The operator IDs managing the validator. + * @param publicKey The public key of the exiting validator. + */ + event ValidatorExited(address indexed owner, uint64[] operatorIds, bytes publicKey); } diff --git a/contracts/interfaces/ISSVNetwork.sol b/contracts/interfaces/ISSVNetwork.sol index de6e5e73..e88a56a6 100644 --- a/contracts/interfaces/ISSVNetwork.sol +++ b/contracts/interfaces/ISSVNetwork.sol @@ -31,8 +31,4 @@ interface ISSVNetwork { function setFeeRecipientAddress(address feeRecipientAddress) external; function updateModule(SSVModules moduleId, address moduleAddress) external; - - function setRegisterAuth(address userAddress, bool authOperators, bool authValidators) external; - - function getRegisterAuth(address userAddress) external view returns (bool authOperators, bool authValidators); } diff --git a/contracts/interfaces/ISSVOperators.sol b/contracts/interfaces/ISSVOperators.sol index aa82eb8a..c77c2329 100644 --- a/contracts/interfaces/ISSVOperators.sol +++ b/contracts/interfaces/ISSVOperators.sol @@ -7,7 +7,7 @@ interface ISSVOperators is ISSVNetworkCore { /// @notice Registers a new operator /// @param publicKey The public key of the operator /// @param fee The operator's fee (SSV) - function registerOperator(bytes calldata publicKey, uint64 fee) external returns (uint64); + function registerOperator(bytes calldata publicKey, uint256 fee) external returns (uint64); /// @notice Removes an existing operator /// @param operatorId The ID of the operator to be removed diff --git a/contracts/interfaces/ISSVViews.sol b/contracts/interfaces/ISSVViews.sol index 8b5c1657..b635013c 100644 --- a/contracts/interfaces/ISSVViews.sol +++ b/contracts/interfaces/ISSVViews.sol @@ -8,7 +8,7 @@ interface ISSVViews is ISSVNetworkCore { /// @param owner The address of the validator's owner /// @param publicKey The public key of the validator /// @return active A boolean indicating if the validator is active. If it does not exist, returns false. - function getValidator(address owner, bytes calldata publicKey) external view returns (bool active); + function getValidator(address owner, bytes calldata publicKey) external view returns (bool); /// @notice Gets the operator fee /// @param operatorId The ID of the operator @@ -46,7 +46,7 @@ interface ISSVViews is ISSVNetworkCore { /// @return isLiquidatable A boolean indicating if the cluster can be liquidated function isLiquidatable( address owner, - uint64[] memory operatorIds, + uint64[] calldata operatorIds, Cluster memory cluster ) external view returns (bool isLiquidatable); @@ -94,20 +94,17 @@ interface ISSVViews is ISSVNetworkCore { function getNetworkEarnings() external view returns (uint256 networkEarnings); /// @notice Gets the operator fee increase limit - /// @return operatorMaxFeeIncrease The maximum limit of operator fee increase - function getOperatorFeeIncreaseLimit() external view returns (uint64 operatorMaxFeeIncrease); + /// @return The maximum limit of operator fee increase + function getOperatorFeeIncreaseLimit() external view returns (uint64); /// @notice Gets the operator maximum fee for operators that use SSV token - /// @return operatorMaxFee The maximum fee value (SSV) - function getMaximumOperatorFee() external view returns (uint64 operatorMaxFee); + /// @return The maximum fee value (SSV) + function getMaximumOperatorFee() external view returns (uint64); /// @notice Gets the periods of operator fee declaration and execution - /// @return declareOperatorFeePeriod The period for declaring operator fee - /// @return executeOperatorFeePeriod The period for executing operator fee - function getOperatorFeePeriods() - external - view - returns (uint64 declareOperatorFeePeriod, uint64 executeOperatorFeePeriod); + /// @return The period for declaring operator fee + /// @return The period for executing operator fee + function getOperatorFeePeriods() external view returns (uint64, uint64); /// @notice Gets the liquidation threshold period /// @return blocks The number of blocks for the liquidation threshold period @@ -121,7 +118,11 @@ interface ISSVViews is ISSVNetworkCore { /// @return validators The maximum number of validators per operator function getValidatorsPerOperatorLimit() external view returns (uint32 validators); + /// @notice Gets the total number of validators in the network + /// @return validatorsCount The total number of validators in the network + function getNetworkValidatorsCount() external view returns (uint32 validatorsCount); + /// @notice Gets the version of the contract - /// @return version The version of the contract - function getVersion() external view returns (string memory version); + /// @return The version of the contract + function getVersion() external view returns (string memory); } diff --git a/contracts/libraries/CoreLib.sol b/contracts/libraries/CoreLib.sol index e8d31429..f508d6ee 100644 --- a/contracts/libraries/CoreLib.sol +++ b/contracts/libraries/CoreLib.sol @@ -7,7 +7,7 @@ library CoreLib { event ModuleUpgraded(SSVModules indexed moduleId, address moduleAddress); function getVersion() internal pure returns (string memory) { - return "v1.0.0.rc3"; + return "v1.0.2"; } function transferBalance(address to, uint256 amount) internal { diff --git a/contracts/libraries/OperatorLib.sol b/contracts/libraries/OperatorLib.sol index ef3a6e01..f0672d59 100644 --- a/contracts/libraries/OperatorLib.sol +++ b/contracts/libraries/OperatorLib.sol @@ -34,18 +34,19 @@ library OperatorLib { uint64[] memory operatorIds, bool increaseValidatorCount, uint32 deltaValidatorCount, - StorageData storage s + StorageData storage s, + StorageProtocol storage sp ) internal returns (uint64 clusterIndex, uint64 burnRate) { - for (uint256 i; i < operatorIds.length; ) { + uint256 operatorsLength = operatorIds.length; + + for (uint256 i; i < operatorsLength; ) { uint64 operatorId = operatorIds[i]; ISSVNetworkCore.Operator storage operator = s.operators[operatorId]; if (operator.snapshot.block != 0) { updateSnapshotSt(operator); if (!increaseValidatorCount) { operator.validatorCount -= deltaValidatorCount; - } else if ( - (operator.validatorCount += deltaValidatorCount) > SSVStorageProtocol.load().validatorsPerOperatorLimit - ) { + } else if ((operator.validatorCount += deltaValidatorCount) > sp.validatorsPerOperatorLimit) { revert ISSVNetworkCore.ExceedValidatorLimit(); } burnRate += operator.fee; diff --git a/contracts/libraries/Types.sol b/contracts/libraries/Types.sol index f0e3257e..e0f49156 100644 --- a/contracts/libraries/Types.sol +++ b/contracts/libraries/Types.sol @@ -11,7 +11,7 @@ library Types64 { library Types256 { function shrink(uint256 value) internal pure returns (uint64) { - require(value <= (2 ** 64 * DEDUCTED_DIGITS), "Max value exceeded"); + require(value < (2 ** 64 * DEDUCTED_DIGITS), "Max value exceeded"); return uint64(shrinkable(value) / DEDUCTED_DIGITS); } diff --git a/contracts/libraries/ValidatorLib.sol b/contracts/libraries/ValidatorLib.sol new file mode 100644 index 00000000..ad98ee5e --- /dev/null +++ b/contracts/libraries/ValidatorLib.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../interfaces/ISSVNetworkCore.sol"; +import "./SSVStorage.sol"; + +library ValidatorLib { + function validateState( + bytes calldata publicKey, + uint64[] calldata operatorIds, + StorageData storage s + ) internal view returns (bytes32 hashedValidator) { + hashedValidator = keccak256(abi.encodePacked(publicKey, msg.sender)); + bytes32 validatorData = s.validatorPKs[hashedValidator]; + + if (validatorData == bytes32(0)) { + revert ISSVNetworkCore.ValidatorDoesNotExist(); + } + bytes32 mask = ~bytes32(uint256(1)); // All bits set to 1 except LSB + + bytes32 hashedOperatorIds = keccak256(abi.encodePacked(operatorIds)) & mask; // Clear LSB of provided operator ids + if ((validatorData & mask) != hashedOperatorIds) { + // Clear LSB of stored validator data and compare + revert ISSVNetworkCore.IncorrectValidatorState(); + } + } +} diff --git a/contracts/modules/SSVClusters.sol b/contracts/modules/SSVClusters.sol index 8d1df9aa..b05355e2 100644 --- a/contracts/modules/SSVClusters.sol +++ b/contracts/modules/SSVClusters.sol @@ -6,6 +6,7 @@ import "../libraries/ClusterLib.sol"; import "../libraries/OperatorLib.sol"; import "../libraries/ProtocolLib.sol"; import "../libraries/CoreLib.sol"; +import "../libraries/ValidatorLib.sol"; import "../libraries/SSVStorage.sol"; import "../libraries/SSVStorageProtocol.sol"; @@ -145,27 +146,14 @@ contract SSVClusters is ISSVClusters { ) external override { StorageData storage s = SSVStorage.load(); - bytes32 hashedValidator = keccak256(abi.encodePacked(publicKey, msg.sender)); - - bytes32 mask = ~bytes32(uint256(1)); // All bits set to 1 except LSB - bytes32 validatorData = s.validatorPKs[hashedValidator]; - - if (validatorData == bytes32(0)) { - revert ValidatorDoesNotExist(); - } - - bytes32 hashedOperatorIds = keccak256(abi.encodePacked(operatorIds)) & mask; // Clear LSB of provided operator ids - if ((validatorData & mask) != hashedOperatorIds) { - // Clear LSB of stored validator data and compare - revert IncorrectValidatorState(); - } + bytes32 hashedValidator = ValidatorLib.validateState(publicKey, operatorIds, s); bytes32 hashedCluster = cluster.validateHashedCluster(msg.sender, operatorIds, s); { if (cluster.active) { - (uint64 clusterIndex, ) = OperatorLib.updateOperators(operatorIds, false, 1, s); StorageProtocol storage sp = SSVStorageProtocol.load(); + (uint64 clusterIndex, ) = OperatorLib.updateOperators(operatorIds, false, 1, s, sp); cluster.updateClusterData(clusterIndex, sp.currentNetworkFeeIndex()); @@ -182,7 +170,7 @@ contract SSVClusters is ISSVClusters { emit ValidatorRemoved(msg.sender, operatorIds, publicKey, cluster); } - function liquidate(address clusterOwner, uint64[] memory operatorIds, Cluster memory cluster) external override { + function liquidate(address clusterOwner, uint64[] calldata operatorIds, Cluster memory cluster) external override { StorageData storage s = SSVStorage.load(); bytes32 hashedCluster = cluster.validateHashedCluster(clusterOwner, operatorIds, s); @@ -194,7 +182,8 @@ contract SSVClusters is ISSVClusters { operatorIds, false, cluster.validatorCount, - s + s, + sp ); cluster.updateBalance(clusterIndex, sp.currentNetworkFeeIndex()); @@ -244,7 +233,8 @@ contract SSVClusters is ISSVClusters { operatorIds, true, cluster.validatorCount, - s + s, + sp ); cluster.balance += amount; @@ -344,4 +334,10 @@ contract SSVClusters is ISSVClusters { emit ClusterWithdrawn(msg.sender, operatorIds, amount, cluster); } + + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + ValidatorLib.validateState(publicKey, operatorIds, SSVStorage.load()); + + emit ValidatorExited(msg.sender, operatorIds, publicKey); + } } diff --git a/contracts/modules/SSVDAO.sol b/contracts/modules/SSVDAO.sol index cec7a6cf..e3e0a700 100644 --- a/contracts/modules/SSVDAO.sol +++ b/contracts/modules/SSVDAO.sol @@ -34,6 +34,7 @@ contract SSVDAO is ISSVDAO { } sp.daoBalance = networkBalance - shrunkAmount; + sp.daoIndexBlockNumber = uint32(block.number); CoreLib.transferBalance(msg.sender, amount); diff --git a/contracts/modules/SSVOperators.sol b/contracts/modules/SSVOperators.sol index 2406ca54..a227ef57 100644 --- a/contracts/modules/SSVOperators.sol +++ b/contracts/modules/SSVOperators.sol @@ -23,7 +23,7 @@ contract SSVOperators is ISSVOperators { /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) { revert ISSVNetworkCore.FeeTooLow(); } @@ -42,7 +42,7 @@ contract SSVOperators is ISSVOperators { owner: msg.sender, snapshot: ISSVNetworkCore.Snapshot({block: uint32(block.number), index: 0, balance: 0}), validatorCount: 0, - fee: fee, + fee: fee.shrink(), whitelisted: false }); s.operatorsPKs[hashedPk] = id; @@ -62,17 +62,20 @@ contract SSVOperators is ISSVOperators { operator.snapshot.balance = 0; operator.validatorCount = 0; operator.fee = 0; + operator.whitelisted = false; - if (operator.whitelisted) { - operator.whitelisted = false; - delete s.operatorsWhitelist[operatorId]; - } s.operators[operatorId] = operator; + delete s.operatorsWhitelist[operatorId]; + if (currentBalance > 0) { _transferOperatorBalanceUnsafe(operatorId, currentBalance.expand()); } emit OperatorRemoved(operatorId); + + delete s.operatorFeeChangeRequests[operatorId]; + + emit OperatorFeeDeclarationCancelled(msg.sender, operatorId); } function setOperatorWhitelist(uint64 operatorId, address whitelisted) external { @@ -169,8 +172,8 @@ contract SSVOperators is ISSVOperators { operator.fee = shrunkAmount; s.operators[operatorId] = operator; - if (s.operatorFeeChangeRequests[operatorId].approvalBeginTime != 0) - delete s.operatorFeeChangeRequests[operatorId]; + delete s.operatorFeeChangeRequests[operatorId]; + emit OperatorFeeExecuted(msg.sender, operatorId, block.number, fee); } diff --git a/contracts/modules/SSVViews.sol b/contracts/modules/SSVViews.sol index 2c6c2070..48a7fc17 100644 --- a/contracts/modules/SSVViews.sol +++ b/contracts/modules/SSVViews.sol @@ -21,21 +21,20 @@ contract SSVViews is ISSVViews { /* Validator External View Functions */ /*************************************/ - function getValidator(address clusterOwner, bytes calldata publicKey) external view override returns (bool active) { + function getValidator(address clusterOwner, bytes calldata publicKey) external view override returns (bool) { bytes32 validatorData = SSVStorage.load().validatorPKs[keccak256(abi.encodePacked(publicKey, clusterOwner))]; if (validatorData == bytes32(0)) return false; bytes32 activeFlag = validatorData & bytes32(uint256(1)); // Retrieve LSB of stored value return activeFlag == bytes32(uint256(1)); - } /************************************/ /* Operator External View Functions */ /************************************/ - function getOperatorFee(uint64 operatorId) external view override returns (uint256 fee) { + function getOperatorFee(uint64 operatorId) external view override returns (uint256) { return SSVStorage.load().operators[operatorId].fee.expand(); } @@ -172,20 +171,15 @@ contract SSVViews is ISSVViews { return SSVStorageProtocol.load().networkTotalEarnings().expand(); } - function getOperatorFeeIncreaseLimit() external view override returns (uint64 operatorMaxFeeIncrease) { + function getOperatorFeeIncreaseLimit() external view override returns (uint64) { return SSVStorageProtocol.load().operatorMaxFeeIncrease; } - function getMaximumOperatorFee() external view override returns (uint64 operatorMaxFee) { + function getMaximumOperatorFee() external view override returns (uint64) { return SSVStorageProtocol.load().operatorMaxFee; } - function getOperatorFeePeriods() - external - view - override - returns (uint64 declareOperatorFeePeriod, uint64 executeOperatorFeePeriod) - { + function getOperatorFeePeriods() external view override returns (uint64, uint64) { return (SSVStorageProtocol.load().declareOperatorFeePeriod, SSVStorageProtocol.load().executeOperatorFeePeriod); } @@ -201,7 +195,11 @@ contract SSVViews is ISSVViews { return SSVStorageProtocol.load().validatorsPerOperatorLimit; } - function getVersion() external pure override returns (string memory version) { + function getNetworkValidatorsCount() external view override returns (uint32) { + return SSVStorageProtocol.load().daoValidatorCount; + } + + function getVersion() external pure override returns (string memory) { return CoreLib.getVersion(); } } diff --git a/contracts/test/SSVNetworkUpgrade.sol b/contracts/test/SSVNetworkUpgrade.sol index 4ec5938a..c7288c17 100644 --- a/contracts/test/SSVNetworkUpgrade.sol +++ b/contracts/test/SSVNetworkUpgrade.sol @@ -117,10 +117,10 @@ contract SSVNetworkUpgrade is /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { bytes memory result = _delegateCall( SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], - abi.encodeWithSignature("registerOperator(bytes,uint64)", publicKey, fee) + abi.encodeWithSignature("registerOperator(bytes,uint256)", publicKey, fee) ); return abi.decode(result, (uint64)); } @@ -286,6 +286,13 @@ contract SSVNetworkUpgrade is ); } + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature("exitValidator(bytes,uint64[]))", publicKey, operatorIds) + ); + } + function updateNetworkFee(uint256 fee) external override onlyOwner { _delegateCall( SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], diff --git a/contracts/test/SSVViewsT.sol b/contracts/test/SSVViewsT.sol index 428f595f..b9d756ff 100644 --- a/contracts/test/SSVViewsT.sol +++ b/contracts/test/SSVViewsT.sol @@ -208,6 +208,10 @@ contract SSVViewsT is ISSVViews { return CoreLibT.getVersion(); } + function getNetworkValidatorsCount() external view override returns (uint32) { + return SSVStorageProtocol.load().daoValidatorCount; + } + function getMinOperatorsPerCluster() external view returns (uint64) { return SSVStorageUpgrade.load().minOperatorsPerCluster; } diff --git a/contracts/test/interfaces/ISSVNetworkT.sol b/contracts/test/interfaces/ISSVNetworkT.sol index eaa3d0e3..84786b1b 100644 --- a/contracts/test/interfaces/ISSVNetworkT.sol +++ b/contracts/test/interfaces/ISSVNetworkT.sol @@ -8,8 +8,6 @@ import "../../interfaces/ISSVDAO.sol"; import "../../interfaces/ISSVViews.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../libraries/RegisterAuth.sol"; - interface ISSVNetworkT { function initialize( IERC20 token_, diff --git a/contracts/test/libraries/CoreLibT.sol b/contracts/test/libraries/CoreLibT.sol index 9125938f..fc9bd614 100644 --- a/contracts/test/libraries/CoreLibT.sol +++ b/contracts/test/libraries/CoreLibT.sol @@ -6,7 +6,7 @@ import "../../libraries/SSVStorage.sol"; library CoreLibT { function getVersion() internal pure returns (string memory) { - return "v1.0.0.rc3"; + return "v1.0.2"; } function transfer(address to, uint256 amount) internal { diff --git a/contracts/test/modules/SSVOperatorsUpdate.sol b/contracts/test/modules/SSVOperatorsUpdate.sol index 2b5fa8ce..1120a292 100644 --- a/contracts/test/modules/SSVOperatorsUpdate.sol +++ b/contracts/test/modules/SSVOperatorsUpdate.sol @@ -23,7 +23,7 @@ contract SSVOperatorsUpdate is ISSVOperators { /* Operator External Functions */ /*******************************/ - function registerOperator(bytes calldata publicKey, uint64 fee) external override returns (uint64 id) { + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) { revert ISSVNetworkCore.FeeTooLow(); } @@ -38,7 +38,7 @@ contract SSVOperatorsUpdate is ISSVOperators { owner: msg.sender, snapshot: ISSVNetworkCore.Snapshot({block: uint32(block.number), index: 0, balance: 0}), validatorCount: 0, - fee: fee, + fee: fee.shrink(), whitelisted: false }); s.operatorsPKs[hashedPk] = id; diff --git a/contracts/token/SSVToken.sol b/contracts/token/SSVToken.sol new file mode 100644 index 00000000..df3588d8 --- /dev/null +++ b/contracts/token/SSVToken.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.4; + +import "@openzeppelin/contracts/utils/Context.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; + +/** + * @title SSV Token + */ +contract SSVToken is Ownable, ERC20, ERC20Burnable { + constructor() ERC20("SSV Token", "SSV") { + } + + /** + * @dev Mint tokens + * @param to The target address + * @param amount The amount of token to mint + */ + function mint(address to, uint256 amount) external onlyOwner { + _mint(to, amount); + } +} \ No newline at end of file diff --git a/contracts/upgrades/stage/SSVNetworkValidatorsPerOperator.sol b/contracts/upgrades/stage/goerli/SSVNetworkValidatorsPerOperator.sol similarity index 91% rename from contracts/upgrades/stage/SSVNetworkValidatorsPerOperator.sol rename to contracts/upgrades/stage/goerli/SSVNetworkValidatorsPerOperator.sol index f0cec467..5411cc4a 100644 --- a/contracts/upgrades/stage/SSVNetworkValidatorsPerOperator.sol +++ b/contracts/upgrades/stage/goerli/SSVNetworkValidatorsPerOperator.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; -import "../../SSVNetwork.sol"; +import "../../../SSVNetwork.sol"; contract SSVNetworkValidatorsPerOperator is SSVNetwork { diff --git a/contracts/upgrades/stage/holesky/SSVNetworkUpgradeValidatorsPerOperator.sol b/contracts/upgrades/stage/holesky/SSVNetworkUpgradeValidatorsPerOperator.sol new file mode 100644 index 00000000..9e5623ea --- /dev/null +++ b/contracts/upgrades/stage/holesky/SSVNetworkUpgradeValidatorsPerOperator.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../../../SSVNetwork.sol"; + + +contract SSVNetworkUpgradeValidatorsPerOperator is SSVNetwork { + + function initializev2(uint32 validatorsPerOperatorLimit_) external reinitializer(_getInitializedVersion() + 1) { + SSVStorageProtocol.load().validatorsPerOperatorLimit = validatorsPerOperatorLimit_; + } +} diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index ed8ca6e8..3320c94c 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol": {"AST": {"absolutePath": "contracts/echidna/Operators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "Operators": [600], "ProtocolLib": [768], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 601, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "../modules/SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 1622, "src": "70:37:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 601, "sourceUnit": 769, "src": "108:38:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVOperators", "nameLocations": ["170:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1621, "src": "170:12:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "170:12:0"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 600, "linearizedBaseContracts": [600, 1621, 2005, 1737], "name": "Operators", "nameLocation": "157:9:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8, "libraryName": {"id": 6, "name": "Types64", "nameLocations": ["195:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "195:7:0"}, "nodeType": "UsingForDirective", "src": "189:25:0", "typeName": {"id": 7, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 11, "libraryName": {"id": 9, "name": "Types256", "nameLocations": ["225:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "225:8:0"}, "nodeType": "UsingForDirective", "src": "219:27:0", "typeName": {"id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "238:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 15, "libraryName": {"id": 12, "name": "ProtocolLib", "nameLocations": ["257:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 768, "src": "257:11:0"}, "nodeType": "UsingForDirective", "src": "251:38:0", "typeName": {"id": 14, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 13, "name": "StorageProtocol", "nameLocations": ["273:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "273:15:0"}, "referencedDeclaration": 1779, "src": "273:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 18, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "319:20:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "295:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 16, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "295:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "342:11:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 21, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "383:16:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "359:49:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 19, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "359:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "402:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "id": 24, "mutability": "mutable", "name": "opIds", "nameLocation": "423:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "414:14:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "414:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 23, "nodeType": "ArrayTypeName", "src": "414:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 26, "mutability": "mutable", "name": "sault", "nameLocation": "450:5:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "434:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 25, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "434:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 28, "mutability": "mutable", "name": "minNetworkFee", "nameLocation": "476:13:0", "nodeType": "VariableDeclaration", "scope": 600, "src": "461:28:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 27, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "461:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 34, "name": "AssertionFailed", "nameLocation": "502:15:0", "nodeType": "EventDefinition", "parameters": {"id": 33, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "525:10:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "518:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 29, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "518:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 32, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "542:13:0", "nodeType": "VariableDeclaration", "scope": 34, "src": "537:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 31, "name": "bool", "nodeType": "ElementaryTypeName", "src": "537:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "517:39:0"}, "src": "496:61:0"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 40, "name": "AssertionFailed", "nameLocation": "568:15:0", "nodeType": "EventDefinition", "parameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 36, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "591:10:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "584:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 35, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "584:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 38, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "610:17:0", "nodeType": "VariableDeclaration", "scope": 40, "src": "603:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 37, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "603:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "583:45:0"}, "src": "562:67:0"}, {"body": {"id": 109, "nodeType": "Block", "src": "649:509:0", "statements": [{"expression": {"id": 45, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 43, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "659:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 44, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "675:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "659:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 46, "nodeType": "ExpressionStatement", "src": "659:36:0"}, {"assignments": [49], "declarations": [{"constant": false, "id": 49, "mutability": "mutable", "name": "sp", "nameLocation": "729:2:0", "nodeType": "VariableDeclaration", "scope": 109, "src": "705:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 48, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 47, "name": "StorageProtocol", "nameLocations": ["705:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "705:15:0"}, "referencedDeclaration": 1779, "src": "705:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 53, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 50, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "734:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "753:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "734:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "734:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "705:54:0"}, {"expression": {"id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 54, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "769:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 56, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "772:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1763, "src": "769:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "805:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "769:42:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 59, "nodeType": "ExpressionStatement", "src": "769:42:0"}, {"expression": {"id": 69, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 60, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "821:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 62, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "824:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1766, "src": "821:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 65, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "863:19:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 64, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "855:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 63, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "855:7:0", "typeDescriptions": {}}}, "id": 66, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 67, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "884:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "855:35:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "855:37:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "821:71:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 70, "nodeType": "ExpressionStatement", "src": "821:71:0"}, {"expression": {"id": 75, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 71, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "902:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 73, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "905:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "902:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "934:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "902:35:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 76, "nodeType": "ExpressionStatement", "src": "902:35:0"}, {"expression": {"id": 81, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 77, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "947:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 79, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "950:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "947:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "977:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "947:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 82, "nodeType": "ExpressionStatement", "src": "947:36:0"}, {"expression": {"id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 83, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "993:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 85, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "996:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "993:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 86, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1023:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "993:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 88, "nodeType": "ExpressionStatement", "src": "993:36:0"}, {"expression": {"id": 93, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 89, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1039:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 91, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1042:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "1039:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 92, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1067:4:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "1039:32:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 94, "nodeType": "ExpressionStatement", "src": "1039:32:0"}, {"expression": {"id": 101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1081:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1084:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1081:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 98, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1101:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "32", "id": 99, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1117:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1101:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1081:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 102, "nodeType": "ExpressionStatement", "src": "1081:37:0"}, {"expression": {"arguments": [{"hexValue": "30", "id": 106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1149:1:0", "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"}], "expression": {"id": 103, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49, "src": "1129:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 105, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1132:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 671, "src": "1129:19:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1129:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 108, "nodeType": "ExpressionStatement", "src": "1129:22:0"}]}, "id": 110, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 41, "nodeType": "ParameterList", "parameters": [], "src": "646:2:0"}, "returnParameters": {"id": 42, "nodeType": "ParameterList", "parameters": [], "src": "649:0:0"}, "scope": 600, "src": "635:523:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 166, "nodeType": "Block", "src": "1226:306:0", "statements": [{"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "randomBytes", "nameLocation": "1249:11:0", "nodeType": "VariableDeclaration", "scope": 166, "src": "1236:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 115, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1236:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [{"hexValue": "3438", "id": 119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1273:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1263:9:0", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 117, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1267:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1263:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1236:40:0"}, {"body": {"id": 159, "nodeType": "Block", "src": "1316:165:0", "statements": [{"expression": {"id": 157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 132, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1330:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 134, "indexExpression": {"id": 133, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1342:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1330:14:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 144, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1409:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 145, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1416:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1422:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1416:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1433:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1437:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1433:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 149, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1445:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 142, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1392:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1396:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1392:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1392:55:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 141, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1382:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1382:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:4:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 139, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1377:4:0", "typeDescriptions": {}}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:72:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1452:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "1377:78:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 138, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1371:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 137, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1371:5:0", "typeDescriptions": {}}}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1371:85:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1347:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 135, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "1347:6:0", "typeDescriptions": {}}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1347:123:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1330:140:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 158, "nodeType": "ExpressionStatement", "src": "1330:140:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 126, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1303:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1307:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "1303:6:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 160, "initializationExpression": {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "i", "nameLocation": "1296:1:0", "nodeType": "VariableDeclaration", "scope": 160, "src": "1291:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 122, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1291:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 125, "initialValue": {"hexValue": "30", "id": 124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1300:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1291:10:0"}, "loopExpression": {"expression": {"id": 130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1311:3:0", "subExpression": {"id": 129, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1311:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 131, "nodeType": "ExpressionStatement", "src": "1311:3:0"}, "nodeType": "ForStatement", "src": "1286:195:0"}, {"expression": {"id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1490:7:0", "subExpression": {"id": 161, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1490:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 163, "nodeType": "ExpressionStatement", "src": "1490:7:0"}, {"expression": {"id": 164, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1514:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 114, "id": 165, "nodeType": "Return", "src": "1507:18:0"}]}, "id": 167, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "1173:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 111, "nodeType": "ParameterList", "parameters": [], "src": "1191:2:0"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 113, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1212:12:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 112, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1212:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1211:14:0"}, "scope": 600, "src": "1164:368:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 219, "nodeType": "Block", "src": "1608:278:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 177, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1626:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 178, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1632:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1626:9:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d6178206d7573742062652067726561746572207468616e206d696e", "id": 180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1637:30:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}, "value": "Max must be greater than min"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}], "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1618:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1618:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "ExpressionStatement", "src": "1618:50:0"}, {"assignments": [184], "declarations": [{"constant": false, "id": 184, "mutability": "mutable", "name": "randomHash", "nameLocation": "1686:10:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1678:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 183, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1678:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 196, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 190, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1734:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 191, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1741:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1747:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1741:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 188, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1717:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 189, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1721:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1717:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1717:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 187, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1707:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1707:51:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1699:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 185, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1699:7:0", "typeDescriptions": {}}}, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1699:60:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1678:81:0"}, {"expression": {"id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1769:7:0", "subExpression": {"id": 197, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1769:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 199, "nodeType": "ExpressionStatement", "src": "1769:7:0"}, {"assignments": [201], "declarations": [{"constant": false, "id": 201, "mutability": "mutable", "name": "reducedHash", "nameLocation": "1793:11:0", "nodeType": "VariableDeclaration", "scope": 219, "src": "1786:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1786:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 206, "initialValue": {"arguments": [{"id": 204, "name": "randomHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 184, "src": "1814:10:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1807:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1807:6:0", "typeDescriptions": {}}}, "id": 205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1807:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1786:39:0"}, {"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 207, "name": "reducedHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "1843:11:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 208, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "1858:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 209, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1864:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1858:9:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1870:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1858:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 213, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1857:15:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1843:29:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 215, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1842:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 216, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 169, "src": "1876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1842:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 175, "id": 218, "nodeType": "Return", "src": "1835:44:0"}]}, "functionSelector": "41bfe2ba", "id": 220, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateFee", "nameLocation": "1547:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 172, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 169, "mutability": "mutable", "name": "min", "nameLocation": "1567:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1560:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 168, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1560:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 171, "mutability": "mutable", "name": "max", "nameLocation": "1579:3:0", "nodeType": "VariableDeclaration", "scope": 220, "src": "1572:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1572:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1559:24:0"}, "returnParameters": {"id": 175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 174, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 220, "src": "1600:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 173, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1600:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1599:8:0"}, "scope": 600, "src": "1538:348:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 269, "nodeType": "Block", "src": "1932:383:0", "statements": [{"assignments": [224], "declarations": [{"constant": false, "id": 224, "mutability": "mutable", "name": "minN", "nameLocation": "1949:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1942:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1942:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 226, "initialValue": {"id": 225, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28, "src": "1956:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1942:27:0"}, {"assignments": [228], "declarations": [{"constant": false, "id": 228, "mutability": "mutable", "name": "maxN", "nameLocation": "1986:4:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "1979:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 227, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1979:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 233, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 229, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1993:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2012:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1993:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1993:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2019:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1993:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1979:54:0"}, {"assignments": [235], "declarations": [{"constant": false, "id": 235, "mutability": "mutable", "name": "publicKey", "nameLocation": "2057:9:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2044:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 234, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2044:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 238, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 236, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "2069:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2069:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2044:45:0"}, {"assignments": [240], "declarations": [{"constant": false, "id": 240, "mutability": "mutable", "name": "fee", "nameLocation": "2106:3:0", "nodeType": "VariableDeclaration", "scope": 269, "src": "2099:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 239, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2099:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 245, "initialValue": {"arguments": [{"id": 242, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2125:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 243, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 228, "src": "2131:4:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 241, "name": "_generateFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 220, "src": "2112:12:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (uint64,uint64) returns (uint64)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2112:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2099:37:0"}, {"clauses": [{"block": {"id": 260, "nodeType": "Block", "src": "2217:47:0", "statements": [{"expression": {"arguments": [{"id": 257, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 252, "src": "2242:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 254, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2231:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2237:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "2231:10:0", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2231:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 259, "nodeType": "ExpressionStatement", "src": "2231:22:0"}]}, "errorName": "", "id": 261, "nodeType": "TryCatchClause", "parameters": {"id": 253, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 252, "mutability": "mutable", "name": "operatorId", "nameLocation": "2205:10:0", "nodeType": "VariableDeclaration", "scope": 261, "src": "2198:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 251, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2198:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2197:19:0"}, "src": "2189:75:0"}, {"block": {"id": 266, "nodeType": "Block", "src": "2271:38:0", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2292:5:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 262, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "2285:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2285:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 265, "nodeType": "ExpressionStatement", "src": "2285:13:0"}]}, "errorName": "", "id": 267, "nodeType": "TryCatchClause", "src": "2265:44:0"}], "externalCall": {"arguments": [{"id": 248, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "2173:9:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 249, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 240, "src": "2184:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 246, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2151:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2156:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 919, "src": "2151:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint64_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint64) external returns (uint64)"}}, "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2151:37:0", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 268, "nodeType": "TryStatement", "src": "2147:162:0"}]}, "functionSelector": "249eaafa", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "1901:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 221, "nodeType": "ParameterList", "parameters": [], "src": "1922:2:0"}, "returnParameters": {"id": 222, "nodeType": "ParameterList", "parameters": [], "src": "1932:0:0"}, "scope": 600, "src": "1892:423:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 294, "nodeType": "Block", "src": "2405:124:0", "statements": [{"expression": {"id": 285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 277, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2415:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 278, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2428:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 281, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2448:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2454:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2448:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2441:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 279, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2441:6:0", "typeDescriptions": {}}}, "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2441:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2428:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2415:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 286, "nodeType": "ExpressionStatement", "src": "2415:46:0"}, {"expression": {"arguments": [{"id": 290, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2498:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 291, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "2510:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 287, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2472:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2477:20:0", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1088, "src": "2472:25:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2472:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 293, "nodeType": "ExpressionStatement", "src": "2472:50:0"}]}, "functionSelector": "60e7474e", "id": 295, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "2330:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 275, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "operatorId", "nameLocation": "2365:10:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2358:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 274, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2385:11:0", "nodeType": "VariableDeclaration", "scope": 295, "src": "2377:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 273, "name": "address", "nodeType": "ElementaryTypeName", "src": "2377:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2357:40:0"}, "returnParameters": {"id": 276, "nodeType": "ParameterList", "parameters": [], "src": "2405:0:0"}, "scope": 600, "src": "2321:208:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 358, "nodeType": "Block", "src": "2596:464:0", "statements": [{"expression": {"id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 300, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2606:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 301, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2619:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 304, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2639:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2645:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "2639:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2632:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2632:6:0", "typeDescriptions": {}}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2632:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2619:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2606:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 309, "nodeType": "ExpressionStatement", "src": "2606:46:0"}, {"assignments": [312], "declarations": [{"constant": false, "id": 312, "mutability": "mutable", "name": "operator", "nameLocation": "2680:8:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2663:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 311, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 310, "name": "Operator", "nameLocations": ["2663:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "2663:8:0"}, "referencedDeclaration": 1650, "src": "2663:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 319, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 313, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2691:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2702:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2691:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2691:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2709:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2691:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 318, "indexExpression": {"id": 317, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2719:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2691:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "2663:67:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 321, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2748:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2757:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2748:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2766:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2748:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2775:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2748:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2778:26:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 320, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2740:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2740:65:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "2740:65:0"}, {"assignments": [330], "declarations": [{"constant": false, "id": 330, "mutability": "mutable", "name": "fee", "nameLocation": "2823:3:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2816:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2816:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 333, "initialValue": {"expression": {"id": 331, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 312, "src": "2829:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2838:3:0", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2829:12:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2816:25:0"}, {"assignments": [335], "declarations": [{"constant": false, "id": 335, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "2859:13:0", "nodeType": "VariableDeclaration", "scope": 358, "src": "2852:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2852:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 348, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 336, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, "src": "2876:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 337, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2883:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 338, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "2902:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2921:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "2902:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2902:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2928:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "2902:48:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2883:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 343, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2882:69:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2876:75:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2875:77:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 346, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "2967:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2875:108:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2852:131:0"}, {"expression": {"arguments": [{"id": 352, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "3018:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 353, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 335, "src": "3030:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3044:6:0", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "3030:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3030:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 349, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2994:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2999:18:0", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1230, "src": "2994:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2994:59:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 357, "nodeType": "ExpressionStatement", "src": "2994:59:0"}]}, "functionSelector": "0f5baea8", "id": 359, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "2544:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "operatorId", "nameLocation": "2577:10:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "2570:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2570:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2569:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "2596:0:0"}, "scope": 600, "src": "2535:525:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 380, "nodeType": "Block", "src": "3127:109:0", "statements": [{"expression": {"id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 364, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3137:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 365, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3150:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 368, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3170:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3176:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3170:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3163:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 366, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3163:6:0", "typeDescriptions": {}}}, "id": 370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3163:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3150:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3137:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 373, "nodeType": "ExpressionStatement", "src": "3137:46:0"}, {"expression": {"arguments": [{"id": 377, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "3218:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 374, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3194:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3199:18:0", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1340, "src": "3194:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3194:35:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 379, "nodeType": "ExpressionStatement", "src": "3194:35:0"}]}, "functionSelector": "45a5605a", "id": 381, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "3075:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "mutability": "mutable", "name": "operatorId", "nameLocation": "3108:10:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "3101:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 360, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3101:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3100:19:0"}, "returnParameters": {"id": 363, "nodeType": "ParameterList", "parameters": [], "src": "3127:0:0"}, "scope": 600, "src": "3066:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 402, "nodeType": "Block", "src": "3299:105:0", "statements": [{"expression": {"id": 394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 386, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3309:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 387, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3322:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 390, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3342:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3348:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3342:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 389, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3335:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 388, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3335:6:0", "typeDescriptions": {}}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3335:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3322:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3309:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "3309:46:0"}, {"expression": {"arguments": [{"id": 399, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3386:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 396, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3366:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$600", "typeString": "contract Operators"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3371:14:0", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1025, "src": "3366:19:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3366:31:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 401, "nodeType": "ExpressionStatement", "src": "3366:31:0"}]}, "functionSelector": "36058dc4", "id": 403, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "3251:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 384, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 383, "mutability": "mutable", "name": "operatorId", "nameLocation": "3280:10:0", "nodeType": "VariableDeclaration", "scope": 403, "src": "3273:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 382, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3273:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3272:19:0"}, "returnParameters": {"id": 385, "nodeType": "ParameterList", "parameters": [], "src": "3299:0:0"}, "scope": 600, "src": "3242:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 444, "nodeType": "Block", "src": "3534:278:0", "statements": [{"expression": {"id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 408, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3544:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 409, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3557:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 412, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3577:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3583:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3577:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3570:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 410, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3570:6:0", "typeDescriptions": {}}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3570:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3557:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3544:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 417, "nodeType": "ExpressionStatement", "src": "3544:46:0"}, {"assignments": [420], "declarations": [{"constant": false, "id": 420, "mutability": "mutable", "name": "operator", "nameLocation": "3618:8:0", "nodeType": "VariableDeclaration", "scope": 444, "src": "3601:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 418, "name": "Operator", "nameLocations": ["3601:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3601:8:0"}, "referencedDeclaration": 1650, "src": "3601:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 427, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 421, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3629:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3640:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3629:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3629:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 424, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3647:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3629:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 426, "indexExpression": {"id": 425, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3657:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3629:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3601:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 428, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3684:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3693:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "3684:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 430, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3702:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "3684:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3711:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3684:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 433, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3683:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 434, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3717:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 435, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3726:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3717:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3683:54:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 443, "nodeType": "IfStatement", "src": "3679:126:0", "trueBody": {"eventCall": {"arguments": [{"id": 438, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "3772:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 439, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3784:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3793:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "3784:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 437, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 34, "src": "3756:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3756:49:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 442, "nodeType": "EmitStatement", "src": "3751:54:0"}}]}, "functionSelector": "22ca0bed", "id": 445, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "3472:35:0", "nodeType": "FunctionDefinition", "parameters": {"id": 406, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 405, "mutability": "mutable", "name": "operatorId", "nameLocation": "3515:10:0", "nodeType": "VariableDeclaration", "scope": 445, "src": "3508:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 404, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3508:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3507:19:0"}, "returnParameters": {"id": 407, "nodeType": "ParameterList", "parameters": [], "src": "3534:0:0"}, "scope": 600, "src": "3463:349:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 506, "nodeType": "Block", "src": "3888:448:0", "statements": [{"expression": {"id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 450, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3898:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3911:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 452, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "3916:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 455, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3937:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3943:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3937:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 454, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3930:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 453, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3930:6:0", "typeDescriptions": {}}}, "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3930:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3953:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3930:24:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 460, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3929:26:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3916:39:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 462, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3915:41:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3911:45:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3898:58:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 465, "nodeType": "ExpressionStatement", "src": "3898:58:0"}, {"assignments": [468], "declarations": [{"constant": false, "id": 468, "mutability": "mutable", "name": "operator", "nameLocation": "3983:8:0", "nodeType": "VariableDeclaration", "scope": 506, "src": "3966:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "Operator", "nameLocations": ["3966:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "3966:8:0"}, "referencedDeclaration": 1650, "src": "3966:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 475, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 469, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3994:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4005:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3994:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3994:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 472, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4012:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3994:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 474, "indexExpression": {"id": 473, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4022:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3994:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3966:67:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 476, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "4062:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 477, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4071:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4062:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4080:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "4062:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 479, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4089:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4062:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 481, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4061:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 482, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4108:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4119:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4108:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4108:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4126:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4108:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 487, "indexExpression": {"id": 486, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4152:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4108:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 488, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4164:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4108:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4185:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4108:78:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 491, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4107:80:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4061:126:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 505, "nodeType": "IfStatement", "src": "4044:286:0", "trueBody": {"id": 504, "nodeType": "Block", "src": "4198:132:0", "statements": [{"eventCall": {"arguments": [{"id": 494, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4233:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 495, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4245:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4256:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4245:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4245:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4263:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4245:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 500, "indexExpression": {"id": 499, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 447, "src": "4289:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4245:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4301:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4245:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 493, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [34, 40], "referencedDeclaration": 40, "src": "4217:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4217:102:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 503, "nodeType": "EmitStatement", "src": "4212:107:0"}]}}]}, "functionSelector": "9d5ceb91", "id": 507, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "3827:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 447, "mutability": "mutable", "name": "operatorId", "nameLocation": "3869:10:0", "nodeType": "VariableDeclaration", "scope": 507, "src": "3862:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 446, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3862:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3861:19:0"}, "returnParameters": {"id": 449, "nodeType": "ParameterList", "parameters": [], "src": "3888:0:0"}, "scope": 600, "src": "3818:518:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 547, "nodeType": "Block", "src": "4390:227:0", "statements": [{"body": {"id": 545, "nodeType": "Block", "src": "4439:172:0", "statements": [{"assignments": [522], "declarations": [{"constant": false, "id": 522, "mutability": "mutable", "name": "operator", "nameLocation": "4469:8:0", "nodeType": "VariableDeclaration", "scope": 545, "src": "4453:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 520, "name": "Operator", "nameLocations": ["4453:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4453:8:0"}, "referencedDeclaration": 1650, "src": "4453:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 531, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 523, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4480:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4491:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4480:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4480:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4498:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4480:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 530, "indexExpression": {"baseExpression": {"id": 527, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4508:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 529, "indexExpression": {"id": 528, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4514:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4480:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4453:64:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4538:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 534, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4547:14:0", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "4538:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4564:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4538:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 537, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 522, "src": "4569:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4578:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4569:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 539, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4587:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4569:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4598:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4569:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4538:61:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 532, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4531:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4531:69:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 544, "nodeType": "ExpressionStatement", "src": "4531:69:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 513, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4416:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 514, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4420:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4426:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4420:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4416:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 546, "initializationExpression": {"assignments": [511], "declarations": [{"constant": false, "id": 511, "mutability": "mutable", "name": "i", "nameLocation": "4413:1:0", "nodeType": "VariableDeclaration", "scope": 546, "src": "4405:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4405:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 512, "nodeType": "VariableDeclarationStatement", "src": "4405:9:0"}, "loopExpression": {"expression": {"id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4434:3:0", "subExpression": {"id": 517, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "4434:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 519, "nodeType": "ExpressionStatement", "src": "4434:3:0"}, "nodeType": "ForStatement", "src": "4400:211:0"}]}, "functionSelector": "e7780e00", "id": 548, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "4351:29:0", "nodeType": "FunctionDefinition", "parameters": {"id": 508, "nodeType": "ParameterList", "parameters": [], "src": "4380:2:0"}, "returnParameters": {"id": 509, "nodeType": "ParameterList", "parameters": [], "src": "4390:0:0"}, "scope": 600, "src": "4342:275:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 598, "nodeType": "Block", "src": "4675:326:0", "statements": [{"assignments": [553], "declarations": [{"constant": false, "id": 553, "mutability": "mutable", "name": "sp", "nameLocation": "4708:2:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4685:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 552, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 551, "name": "StorageProtocol", "nameLocations": ["4685:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "4685:15:0"}, "referencedDeclaration": 1779, "src": "4685:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 557, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 554, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "4713:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4732:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "4713:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4713:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4685:53:0"}, {"assignments": [559], "declarations": [{"constant": false, "id": 559, "mutability": "mutable", "name": "earnings", "nameLocation": "4755:8:0", "nodeType": "VariableDeclaration", "scope": 598, "src": "4748:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 558, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4748:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 560, "nodeType": "VariableDeclarationStatement", "src": "4748:15:0"}, {"body": {"id": 589, "nodeType": "Block", "src": "4812:140:0", "statements": [{"assignments": [573], "declarations": [{"constant": false, "id": 573, "mutability": "mutable", "name": "operator", "nameLocation": "4842:8:0", "nodeType": "VariableDeclaration", "scope": 589, "src": "4826:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 572, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 571, "name": "Operator", "nameLocations": ["4826:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4826:8:0"}, "referencedDeclaration": 1650, "src": "4826:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 582, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 574, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4853:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4864:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4853:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4853:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4871:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4853:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 581, "indexExpression": {"baseExpression": {"id": 578, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4881:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 580, "indexExpression": {"id": 579, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4887:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4881:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4853:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4826:64:0"}, {"expression": {"id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 583, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4904:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 584, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 573, "src": "4916:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4925:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "4916:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 586, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4934:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "4916:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4904:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 588, "nodeType": "ExpressionStatement", "src": "4904:37:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 564, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4789:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 565, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4793:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4793:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4789:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 590, "initializationExpression": {"assignments": [562], "declarations": [{"constant": false, "id": 562, "mutability": "mutable", "name": "i", "nameLocation": "4786:1:0", "nodeType": "VariableDeclaration", "scope": 590, "src": "4778:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4778:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 563, "nodeType": "VariableDeclarationStatement", "src": "4778:9:0"}, "loopExpression": {"expression": {"id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4807:3:0", "subExpression": {"id": 568, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "4807:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 570, "nodeType": "ExpressionStatement", "src": "4807:3:0"}, "nodeType": "ForStatement", "src": "4773:179:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 592, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 553, "src": "4968:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_memory_ptr", "typeString": "struct StorageProtocol memory"}}, "id": 593, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4971:10:0", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "4968:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 594, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 559, "src": "4985:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4968:25:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 591, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "4961:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4961:33:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "4961:33:0"}]}, "functionSelector": "30eab391", "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "check_operatorEarningsWithBalance", "nameLocation": "4632:33:0", "nodeType": "FunctionDefinition", "parameters": {"id": 549, "nodeType": "ParameterList", "parameters": [], "src": "4665:2:0"}, "returnParameters": {"id": 550, "nodeType": "ParameterList", "parameters": [], "src": "4675:0:0"}, "scope": 600, "src": "4623:378:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 601, "src": "148:4855:0", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:4959:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1737]}, "id": 1738, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1623, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1737, "linearizedBaseContracts": [1737], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1633, "members": [{"constant": false, "id": 1626, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1625, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1629, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1628, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1632, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1633, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1631, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1650, "members": [{"constant": false, "id": 1636, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1635, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1639, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1638, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1642, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1641, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1645, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1644, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1649, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1650, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1648, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1647, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1633, "src": "1129:8:1"}, "referencedDeclaration": 1633, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1737, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1660, "members": [{"constant": false, "id": 1653, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1652, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1656, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1655, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1659, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1660, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1658, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1676, "members": [{"constant": false, "id": 1663, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1662, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1666, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1665, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1669, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1668, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1672, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1675, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1676, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1737, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1678, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1677, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1680, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1679, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1682, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1681, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1684, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1683, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1686, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1685, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1688, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1687, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1690, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1689, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1692, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1694, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1693, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1696, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1695, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1698, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1697, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1700, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1699, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1702, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1701, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1704, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1703, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1706, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1705, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1708, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1707, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1710, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1709, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1712, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1711, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1714, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1713, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1716, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1718, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1717, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1720, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1719, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1722, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1721, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1724, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1723, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1726, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1725, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1728, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1730, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1729, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1732, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1731, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1734, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1733, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1736, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1735, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1738, "src": "70:3477:1", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [1737], "ISSVOperators": [2005]}, "id": 2006, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1871, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1872, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2006, "sourceUnit": 1738, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1873, "name": "ISSVNetworkCore", "nameLocations": ["130:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1737, "src": "130:15:2"}, "id": 1874, "nodeType": "InheritanceSpecifier", "src": "130:15:2"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2005, "linearizedBaseContracts": [2005, 1737], "name": "ISSVOperators", "nameLocation": "113:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1875, "nodeType": "StructuredDocumentation", "src": "152:136:2", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "10e7f406", "id": 1884, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1880, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1877, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "319:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1876, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1879, "mutability": "mutable", "name": "fee", "nameLocation": "352:3:2", "nodeType": "VariableDeclaration", "scope": 1884, "src": "345:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1878, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "345:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "318:38:2"}, "returnParameters": {"id": 1883, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1882, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1884, "src": "375:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1881, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "375:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "374:8:2"}, "scope": 2005, "src": "293:90:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1885, "nodeType": "StructuredDocumentation", "src": "389:103:2", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1890, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "506:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1887, "mutability": "mutable", "name": "operatorId", "nameLocation": "528:10:2", "nodeType": "VariableDeclaration", "scope": 1890, "src": "521:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1886, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "521:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "520:19:2"}, "returnParameters": {"id": 1889, "nodeType": "ParameterList", "parameters": [], "src": "548:0:2"}, "scope": 2005, "src": "497:52:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1891, "nodeType": "StructuredDocumentation", "src": "555:152:2", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1898, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "721:20:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1896, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1893, "mutability": "mutable", "name": "operatorId", "nameLocation": "749:10:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "742:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1892, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "742:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1895, "mutability": "mutable", "name": "whitelisted", "nameLocation": "769:11:2", "nodeType": "VariableDeclaration", "scope": 1898, "src": "761:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1894, "name": "address", "nodeType": "ElementaryTypeName", "src": "761:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "741:40:2"}, "returnParameters": {"id": 1897, "nodeType": "ParameterList", "parameters": [], "src": "790:0:2"}, "scope": 2005, "src": "712:79:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1899, "nodeType": "StructuredDocumentation", "src": "797:136:2", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1906, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "947:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1901, "mutability": "mutable", "name": "operatorId", "nameLocation": "973:10:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "966:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1900, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "966:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1903, "mutability": "mutable", "name": "fee", "nameLocation": "993:3:2", "nodeType": "VariableDeclaration", "scope": 1906, "src": "985:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "985:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "965:32:2"}, "returnParameters": {"id": 1905, "nodeType": "ParameterList", "parameters": [], "src": "1006:0:2"}, "scope": 2005, "src": "938:69:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1907, "nodeType": "StructuredDocumentation", "src": "1013:88:2", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1912, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1115:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1910, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1909, "mutability": "mutable", "name": "operatorId", "nameLocation": "1141:10:2", "nodeType": "VariableDeclaration", "scope": 1912, "src": "1134:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1134:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1133:19:2"}, "returnParameters": {"id": 1911, "nodeType": "ParameterList", "parameters": [], "src": "1161:0:2"}, "scope": 2005, "src": "1106:56:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1913, "nodeType": "StructuredDocumentation", "src": "1168:96:2", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1918, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1278:25:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1915, "mutability": "mutable", "name": "operatorId", "nameLocation": "1311:10:2", "nodeType": "VariableDeclaration", "scope": 1918, "src": "1304:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1914, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1304:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1303:19:2"}, "returnParameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "1331:0:2"}, "scope": 2005, "src": "1269:63:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1919, "nodeType": "StructuredDocumentation", "src": "1338:135:2", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1926, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1487:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1512:10:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1505:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1505:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "fee", "nameLocation": "1532:3:2", "nodeType": "VariableDeclaration", "scope": 1926, "src": "1524:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1504:32:2"}, "returnParameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "1545:0:2"}, "scope": 2005, "src": "1478:68:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1927, "nodeType": "StructuredDocumentation", "src": "1552:154:2", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1934, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1720:24:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1929, "mutability": "mutable", "name": "operatorId", "nameLocation": "1752:10:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1745:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1928, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1931, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1772:11:2", "nodeType": "VariableDeclaration", "scope": 1934, "src": "1764:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1930, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1764:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1744:40:2"}, "returnParameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "1793:0:2"}, "scope": 2005, "src": "1711:83:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1935, "nodeType": "StructuredDocumentation", "src": "1800:92:2", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1940, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1906:27:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1937, "mutability": "mutable", "name": "operatorId", "nameLocation": "1941:10:2", "nodeType": "VariableDeclaration", "scope": 1940, "src": "1934:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1936, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1934:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1933:19:2"}, "returnParameters": {"id": 1939, "nodeType": "ParameterList", "parameters": [], "src": "1961:0:2"}, "scope": 2005, "src": "1897:65:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1941, "nodeType": "StructuredDocumentation", "src": "1968:317:2", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 1951, "name": "OperatorAdded", "nameLocation": "2296:13:2", "nodeType": "EventDefinition", "parameters": {"id": 1950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1943, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2325:10:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2310:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1942, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2310:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1945, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2353:5:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2337:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1944, "name": "address", "nodeType": "ElementaryTypeName", "src": "2337:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2366:9:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2360:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1946, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2360:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1949, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2385:3:2", "nodeType": "VariableDeclaration", "scope": 1951, "src": "2377:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1948, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2377:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2309:80:2"}, "src": "2290:100:2"}, {"anonymous": false, "documentation": {"id": 1952, "nodeType": "StructuredDocumentation", "src": "2396:103:2", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 1956, "name": "OperatorRemoved", "nameLocation": "2510:15:2", "nodeType": "EventDefinition", "parameters": {"id": 1955, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1954, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2541:10:2", "nodeType": "VariableDeclaration", "scope": 1956, "src": "2526:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2526:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2525:27:2"}, "src": "2504:49:2"}, {"anonymous": false, "documentation": {"id": 1957, "nodeType": "StructuredDocumentation", "src": "2559:179:2", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 1963, "name": "OperatorWhitelistUpdated", "nameLocation": "2749:24:2", "nodeType": "EventDefinition", "parameters": {"id": 1962, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1959, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2789:10:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2774:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1958, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2774:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1961, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2809:11:2", "nodeType": "VariableDeclaration", "scope": 1963, "src": "2801:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1960, "name": "address", "nodeType": "ElementaryTypeName", "src": "2801:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2773:48:2"}, "src": "2743:79:2"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 1973, "name": "OperatorFeeDeclared", "nameLocation": "2833:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1972, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1965, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2869:5:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2853:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1964, "name": "address", "nodeType": "ElementaryTypeName", "src": "2853:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1967, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2891:10:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2876:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2876:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1969, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2911:11:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2903:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2903:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1971, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2932:3:2", "nodeType": "VariableDeclaration", "scope": 1973, "src": "2924:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2924:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2852:84:2"}, "src": "2827:110:2"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 1979, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2949:31:2", "nodeType": "EventDefinition", "parameters": {"id": 1978, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1975, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2997:5:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "2981:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1974, "name": "address", "nodeType": "ElementaryTypeName", "src": "2981:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1977, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3019:10:2", "nodeType": "VariableDeclaration", "scope": 1979, "src": "3004:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1976, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3004:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2980:50:2"}, "src": "2943:88:2"}, {"anonymous": false, "documentation": {"id": 1980, "nodeType": "StructuredDocumentation", "src": "3036:192:2", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 1990, "name": "OperatorFeeExecuted", "nameLocation": "3239:19:2", "nodeType": "EventDefinition", "parameters": {"id": 1989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1982, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3275:5:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3259:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1981, "name": "address", "nodeType": "ElementaryTypeName", "src": "3259:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1984, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3297:10:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3282:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1983, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3282:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1986, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3317:11:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3309:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1985, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3309:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1988, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3338:3:2", "nodeType": "VariableDeclaration", "scope": 1990, "src": "3330:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3330:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3258:84:2"}, "src": "3233:110:2"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 1998, "name": "OperatorWithdrawn", "nameLocation": "3354:17:2", "nodeType": "EventDefinition", "parameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1992, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3388:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3372:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1991, "name": "address", "nodeType": "ElementaryTypeName", "src": "3372:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1994, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3410:10:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3395:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1993, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3395:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1996, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3430:5:2", "nodeType": "VariableDeclaration", "scope": 1998, "src": "3422:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3422:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3371:65:2"}, "src": "3348:89:2"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 2004, "name": "FeeRecipientAddressUpdated", "nameLocation": "3448:26:2", "nodeType": "EventDefinition", "parameters": {"id": 2003, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2000, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3491:5:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3475:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1999, "name": "address", "nodeType": "ElementaryTypeName", "src": "3475:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2002, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3506:16:2", "nodeType": "VariableDeclaration", "scope": 2004, "src": "3498:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2001, "name": "address", "nodeType": "ElementaryTypeName", "src": "3498:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3474:49:2"}, "src": "3442:82:2"}], "scope": 2006, "src": "103:3423:2", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:3482:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2137, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2007, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2008, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2137, "sourceUnit": 2460, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2136, "linearizedBaseContracts": [2136], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2015, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2011, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2010, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2009, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "141:10:3"}, "referencedDeclaration": 2389, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2013, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2015, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2012, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2022, "nodeType": "Block", "src": "259:36:3", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 2020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 2019, "id": 2021, "nodeType": "Return", "src": "269:19:3"}]}, "id": 2023, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2016, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2018, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2023, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2017, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2136, "src": "199:96:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2046, "nodeType": "Block", "src": "363:136:3", "statements": [{"condition": {"id": 2038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:3", "subExpression": {"arguments": [{"id": 2035, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2025, "src": "411:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2036, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2027, "src": "415:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2030, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "378:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "378:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "378:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2578, "src": "378:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2045, "nodeType": "IfStatement", "src": "373:120:3", "trueBody": {"id": 2044, "nodeType": "Block", "src": "424:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2039, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "445:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "445:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2043, "nodeType": "RevertStatement", "src": "438:44:3"}]}}]}, "id": 2047, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2025, "mutability": "mutable", "name": "to", "nameLocation": "334:2:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "326:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2024, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2027, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:3", "nodeType": "VariableDeclaration", "scope": 2047, "src": "338:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:3"}, "returnParameters": {"id": 2029, "nodeType": "ParameterList", "parameters": [], "src": "363:0:3"}, "scope": 2136, "src": "301:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2073, "nodeType": "Block", "src": "547:163:3", "statements": [{"condition": {"id": 2065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:3", "subExpression": {"arguments": [{"expression": {"id": 2057, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2061, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2136", "typeString": "library CoreLib"}], "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2059, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:3", "typeDescriptions": {}}}, "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2063, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2049, "src": "626:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2052, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "562:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "562:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2431, "src": "562:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "id": 2056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2610, "src": "562:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2072, "nodeType": "IfStatement", "src": "557:147:3", "trueBody": {"id": 2071, "nodeType": "Block", "src": "635:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2066, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "656:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1720, "src": "656:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2070, "nodeType": "RevertStatement", "src": "649:44:3"}]}}]}, "id": 2074, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2049, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:3", "nodeType": "VariableDeclaration", "scope": 2074, "src": "522:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:3"}, "returnParameters": {"id": 2051, "nodeType": "ParameterList", "parameters": [], "src": "547:0:3"}, "scope": 2136, "src": "505:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2100, "nodeType": "Block", "src": "1352:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2082, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2077, "src": "1366:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:3", "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": 2084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2083, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:3", "typeDescriptions": {}}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2091, "nodeType": "IfStatement", "src": "1362:64:3", "trueBody": {"id": 2090, "nodeType": "Block", "src": "1389:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2081, "id": 2089, "nodeType": "Return", "src": "1403:12:3"}]}}, {"assignments": [2093], "declarations": [{"constant": false, "id": 2093, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:3", "nodeType": "VariableDeclaration", "scope": 2100, "src": "1622:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2094, "nodeType": "VariableDeclarationStatement", "src": "1622:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:3"}, "nodeType": "YulFunctionCall", "src": "1731:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2077, "isOffset": false, "isSlot": false, "src": "1743:7:3", "valueSize": 1}, {"declaration": 2093, "isOffset": false, "isSlot": false, "src": "1723:4:3", "valueSize": 1}], "id": 2095, "nodeType": "InlineAssembly", "src": "1700:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2096, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2093, "src": "1777:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2097, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2081, "id": 2099, "nodeType": "Return", "src": "1770:15:3"}]}, "documentation": {"id": 2075, "nodeType": "StructuredDocumentation", "src": "716:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2101, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2078, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2077, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:3", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2076, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:3"}, "returnParameters": {"id": 2081, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2080, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2101, "src": "1346:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2079, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:3"}, "scope": 2136, "src": "1286:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2134, "nodeType": "Block", "src": "1879:219:3", "statements": [{"condition": {"id": 2112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:3", "subExpression": {"arguments": [{"id": 2110, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "1905:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2109, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2101, "src": "1894:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2118, "nodeType": "IfStatement", "src": "1889:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2113, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1928:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1732, "src": "1928:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2117, "nodeType": "RevertStatement", "src": "1921:49:3"}}, {"expression": {"id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2119, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1981:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1981:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 2410, "src": "1981:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2125, "indexExpression": {"id": 2124, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2012:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2126, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2024:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2128, "nodeType": "ExpressionStatement", "src": "1981:56:3"}, {"eventCall": {"arguments": [{"id": 2130, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2104, "src": "2067:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, {"id": 2131, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2106, "src": "2077:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2129, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "2052:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$2389_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2133, "nodeType": "EmitStatement", "src": "2047:44:3"}]}, "id": 2135, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2107, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2104, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1826:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}, "typeName": {"id": 2103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2102, "name": "SSVModules", "nameLocations": ["1826:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1826:10:3"}, "referencedDeclaration": 2389, "src": "1826:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2106, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:3", "nodeType": "VariableDeclaration", "scope": 2135, "src": "1847:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2105, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:3"}, "returnParameters": {"id": 2108, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:3"}, "scope": 2136, "src": "1799:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2137, "src": "98:2002:3", "usedErrors": []}], "src": "45:2056:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "OperatorLib": [2379], "SSVModules": [2389], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 2380, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2138, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2139, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1738, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2140, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 2460, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2141, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1803, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2142, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2380, "sourceUnit": 1870, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2379, "linearizedBaseContracts": [2379], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2145, "libraryName": {"id": 2143, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2144, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2198, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2152], "declarations": [{"constant": false, "id": 2152, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2198, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2151, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2166, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2155, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2153, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2158, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2159, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2162, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2163, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2164, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2167, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2171, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2172, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2174, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2175, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2178, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2180, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2181, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2185, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2186, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2189, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2190, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2193, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2192, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2191, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2197, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2199, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2148, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2199, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2147, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2146, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "280:24:4"}, "referencedDeclaration": 1650, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2150, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2379, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2252, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2206], "declarations": [{"constant": false, "id": 2206, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2252, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2205, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2220, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2209, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2208, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2207, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2212, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2214, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2216, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2217, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2218, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2221, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2224, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2225, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2226, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2228, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2229, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2232, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2234, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2206, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2235, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2239, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2240, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2202, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2244, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2247, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2246, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2245, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2251, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2253, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2202, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2253, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2201, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2200, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "653:24:4"}, "referencedDeclaration": 1650, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2204, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2379, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2281, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2259, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2269, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2264, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1690, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2268, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2270, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2271, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1642, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2272, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2280, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2275, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2278, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2279, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2282, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2257, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2256, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2282, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2255, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2254, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1016:24:4"}, "referencedDeclaration": 1650, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2258, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2379, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2377, "nodeType": "Block", "src": "1485:831:4", "statements": [{"body": {"id": 2375, "nodeType": "Block", "src": "1537:773:4", "statements": [{"assignments": [2307], "declarations": [{"constant": false, "id": 2307, "mutability": "mutable", "name": "operatorId", "nameLocation": "1558:10:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1551:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2306, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1551:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2311, "initialValue": {"baseExpression": {"id": 2308, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1571:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2310, "indexExpression": {"id": 2309, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1583:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1571:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1551:34:4"}, {"assignments": [2316], "declarations": [{"constant": false, "id": 2316, "mutability": "mutable", "name": "operator", "nameLocation": "1632:8:4", "nodeType": "VariableDeclaration", "scope": 2375, "src": "1599:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2315, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2314, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1599:15:4", "1615:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1599:24:4"}, "referencedDeclaration": 1650, "src": "1599:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2321, "initialValue": {"baseExpression": {"expression": {"id": 2317, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "1643:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2318, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1645:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1643:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2320, "indexExpression": {"id": 2319, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2307, "src": "1655:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1643:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1599:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2322, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1684:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1693:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "1684:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2324, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1702:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "1684:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2325, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1711:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1684:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2364, "nodeType": "IfStatement", "src": "1680:507:4", "trueBody": {"id": 2363, "nodeType": "Block", "src": "1714:473:4", "statements": [{"expression": {"arguments": [{"id": 2328, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1749:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2327, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2253, "src": "1732:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1650_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1732:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2330, "nodeType": "ExpressionStatement", "src": "1732:26:4"}, {"condition": {"id": 2332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1780:23:4", "subExpression": {"id": 2331, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2287, "src": "1781:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2340, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1924:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1933:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1924:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2342, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1951:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1924:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2344, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1923:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2345, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1974:18:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 2346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1993:4:4", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1974:23:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1974:25:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2000:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1751, "src": "1974:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1923:103:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2356, "nodeType": "IfStatement", "src": "1898:233:4", "trueBody": {"id": 2355, "nodeType": "Block", "src": "2045:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2350, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "2074:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2090:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1718, "src": "2074:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2074:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2354, "nodeType": "RevertStatement", "src": "2067:45:4"}]}}, "id": 2357, "nodeType": "IfStatement", "src": "1776:355:4", "trueBody": {"id": 2339, "nodeType": "Block", "src": "1805:87:4", "statements": [{"expression": {"id": 2337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2333, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "1827:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2335, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "1827:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2336, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2289, "src": "1854:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1827:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2338, "nodeType": "ExpressionStatement", "src": "1827:46:4"}]}}, {"expression": {"id": 2361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2358, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2297, "src": "2148:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2359, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2160:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2169:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2160:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2148:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2362, "nodeType": "ExpressionStatement", "src": "2148:24:4"}]}}, {"expression": {"id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2365, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2295, "src": "2201:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2366, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2316, "src": "2217:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2226:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2217:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2235:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1629, "src": "2217:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2201:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2370, "nodeType": "ExpressionStatement", "src": "2201:39:4"}, {"id": 2374, "nodeType": "UncheckedBlock", "src": "2254:46:4", "statements": [{"expression": {"id": 2372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2282:3:4", "subExpression": {"id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "2284:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2373, "nodeType": "ExpressionStatement", "src": "2282:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2302, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2300, "src": "1511:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2303, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2285, "src": "1515:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1527:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1515:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1511:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2376, "initializationExpression": {"assignments": [2300], "declarations": [{"constant": false, "id": 2300, "mutability": "mutable", "name": "i", "nameLocation": "1508:1:4", "nodeType": "VariableDeclaration", "scope": 2376, "src": "1500:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1500:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2301, "nodeType": "VariableDeclarationStatement", "src": "1500:9:4"}, "nodeType": "ForStatement", "src": "1495:815:4"}]}, "id": 2378, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2285, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2283, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2284, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2287, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2289, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2288, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2292, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2291, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2290, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1401:11:4"}, "referencedDeclaration": 2436, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1281:147:4"}, "returnParameters": {"id": 2298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2295, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1454:12:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1447:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2294, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1447:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2297, "mutability": "mutable", "name": "burnRate", "nameLocation": "1475:8:4", "nodeType": "VariableDeclaration", "scope": 2378, "src": "1468:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1468:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1446:38:4"}, "scope": 2379, "src": "1257:1059:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2380, "src": "199:2119:4", "usedErrors": []}], "src": "45:2274:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "ISSVNetworkCore": [1737], "ProtocolLib": [768], "SSVStorageProtocol": [1802], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 769, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 602, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 603, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1738, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 604, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1870, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 605, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 769, "sourceUnit": 1803, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 768, "linearizedBaseContracts": [768], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 608, "libraryName": {"id": 606, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 607, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 631, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 616, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 620, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 622, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 623, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 618, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 626, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 611, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 627, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 615, "id": 630, "nodeType": "Return", "src": "443:96:5"}]}, "id": 632, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 612, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 611, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 632, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 610, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 609, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "374:15:5"}, "referencedDeclaration": 1779, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 614, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 632, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 613, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 768, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 670, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 641, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 640, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 643, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 644, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1757, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 651, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 652, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1742, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 657, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 655, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 661, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 662, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 665, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 669, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 671, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 635, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 634, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 633, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "578:15:5"}, "referencedDeclaration": 1779, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 637, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 671, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 636, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 639, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 768, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 695, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 677, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 679, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 681, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 680, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 684, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 685, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 674, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 690, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 688, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 694, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 696, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 674, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 673, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 672, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "956:15:5"}, "referencedDeclaration": 1779, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 676, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 768, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 723, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 704, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 705, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1760, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 708, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 706, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 711, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 712, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1748, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 714, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 715, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 716, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1754, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 718, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 703, "id": 722, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 724, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 700, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 699, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 724, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 698, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 697, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1141:15:5"}, "referencedDeclaration": 1779, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 702, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 724, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 701, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 768, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 766, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 735, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 734, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 696, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1779_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 737, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 738, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 729, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 747, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 749, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 751, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 752, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 764, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 763, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 758, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1734, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 761, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 762, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 765, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 746, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 740, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 727, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 742, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1745, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 743, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 731, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 745, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 767, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 727, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 726, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 725, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1351:15:5"}, "referencedDeclaration": 1779, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 729, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 728, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 731, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 767, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 730, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 733, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 768, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 769, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2533], "IERC20": [2611], "ISSVNetworkCore": [1737], "SSVModules": [2389], "SSVStorage": [2459], "StorageData": [2436]}, "id": 2460, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2381, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2382, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 1738, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 2383, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2534, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2384, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2460, "sourceUnit": 2612, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 2389, "members": [{"id": 2385, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 2386, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 2387, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 2388, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2436, "members": [{"constant": false, "id": 2394, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2393, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2391, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2392, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2399, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2398, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2396, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2397, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2404, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 2403, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2401, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2402, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 2410, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 2409, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2407, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2406, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2389, "src": "1006:10:6"}, "referencedDeclaration": 2389, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2389", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2389_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2408, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2415, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2414, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2412, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2413, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2421, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2420, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2417, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2419, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2418, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "1322:40:6"}, "referencedDeclaration": 1660, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2427, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2426, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2423, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2425, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2424, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1488:24:6"}, "referencedDeclaration": 1650, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2431, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}, "typeName": {"id": 2430, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2429, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2611, "src": "1599:6:6"}, "referencedDeclaration": 2611, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2611", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2435, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2436, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2434, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2433, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1686:16:6"}, "referencedDeclaration": 2465, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2460, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2459, "linearizedBaseContracts": [2459], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2446, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2459, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2437, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2440, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2442, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2439, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2457, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2453], "declarations": [{"constant": false, "id": 2453, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2457, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2452, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2455, "initialValue": {"id": 2454, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2446, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2453, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2450, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2456, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2458, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2447, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2451, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2450, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2458, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2449, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2448, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1891:11:6"}, "referencedDeclaration": 2436, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2459, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2460, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1802], "StorageProtocol": [1779]}, "id": 1803, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1739, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 1779, "members": [{"constant": false, "id": 1742, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1741, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1745, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1744, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1748, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1747, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1751, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1750, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1754, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1753, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1756, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1760, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1759, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1763, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1762, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1766, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1769, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1768, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1772, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1775, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1774, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1778, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 1779, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1777, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 1803, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1802, "linearizedBaseContracts": [1802], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1789, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 1802, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1780, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1783, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1782, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 1786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1800, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [1796], "declarations": [{"constant": false, "id": 1796, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 1800, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1798, "initialValue": {"id": 1797, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1789, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1796, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 1793, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 1799, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 1801, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1790, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 1794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 1801, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1792, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1791, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "1711:15:7"}, "referencedDeclaration": 1779, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 1802, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1803, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1807], "Types256": [1869], "Types64": [1820]}, "id": 1870, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1804, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 1807, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 1870, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1805, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1806, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1820, "linearizedBaseContracts": [1820], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1818, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1814, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1809, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1815, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1813, "id": 1817, "nodeType": "Return", "src": "212:30:8"}]}, "id": 1819, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1809, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 1819, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1808, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 1813, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1812, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1819, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1811, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 1820, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1869, "linearizedBaseContracts": [1869], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1848, "nodeType": "Block", "src": "338:144:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1828, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1832, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "376:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1834, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1838, "nodeType": "ExpressionStatement", "src": "348:67:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1842, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1822, "src": "450:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1841, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1868, "src": "439:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1844, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "459:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1839, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:8", "typeDescriptions": {}}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1826, "id": 1847, "nodeType": "Return", "src": "425:50:8"}]}, "id": 1849, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1822, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 1849, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1821, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 1826, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1825, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1849, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1824, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 1869, "src": "276:206:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1867, "nodeType": "Block", "src": "555:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1857, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "573:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1858, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1807, "src": "581:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1864, "nodeType": "ExpressionStatement", "src": "565:63:8"}, {"expression": {"id": 1865, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "645:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1855, "id": 1866, "nodeType": "Return", "src": "638:12:8"}]}, "id": 1868, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1851, "mutability": "mutable", "name": "value", "nameLocation": "516:5:8", "nodeType": "VariableDeclaration", "scope": 1868, "src": "508:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:8"}, "returnParameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1854, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "546:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:8"}, "scope": 1869, "src": "488:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1870, "src": "253:406:8", "usedErrors": []}], "src": "45:615:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [2136], "Counters": [2533], "DEDUCTED_DIGITS": [1807], "IERC20": [2611], "ISSVNetworkCore": [1737], "ISSVOperators": [2005], "OperatorLib": [2379], "SSVModules": [2389], "SSVOperators": [1621], "SSVStorage": [2459], "SSVStorageProtocol": [1802], "StorageData": [2436], "StorageProtocol": [1779], "Types256": [1869], "Types64": [1820]}, "id": 1622, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 770, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 771, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2006, "src": "70:41:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 772, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1870, "src": "112:32:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 773, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2460, "src": "145:37:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 774, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 1803, "src": "183:45:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 775, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2380, "src": "229:38:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 776, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2137, "src": "268:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 777, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1622, "sourceUnit": 2534, "src": "304:52:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 778, "name": "ISSVOperators", "nameLocations": ["383:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2005, "src": "383:13:9"}, "id": 779, "nodeType": "InheritanceSpecifier", "src": "383:13:9"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1621, "linearizedBaseContracts": [1621, 2005, 1737], "name": "SSVOperators", "nameLocation": "367:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 782, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "403:58:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 780, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:9", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 785, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:9", "nodeType": "VariableDeclaration", "scope": 1621, "src": "467:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 783, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:9", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 788, "libraryName": {"id": 786, "name": "Types256", "nameLocations": ["529:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "529:8:9"}, "nodeType": "UsingForDirective", "src": "523:27:9", "typeName": {"id": 787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 791, "libraryName": {"id": 789, "name": "Types64", "nameLocations": ["561:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "561:7:9"}, "nodeType": "UsingForDirective", "src": "555:25:9", "typeName": {"id": 790, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 795, "libraryName": {"id": 792, "name": "Counters", "nameLocations": ["591:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2533, "src": "591:8:9"}, "nodeType": "UsingForDirective", "src": "585:36:9", "typeName": {"id": 794, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 793, "name": "Counters.Counter", "nameLocations": ["604:8:9", "613:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "604:16:9"}, "referencedDeclaration": 2465, "src": "604:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 799, "libraryName": {"id": 796, "name": "OperatorLib", "nameLocations": ["632:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2379, "src": "632:11:9"}, "nodeType": "UsingForDirective", "src": "626:31:9", "typeName": {"id": 798, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 797, "name": "Operator", "nameLocations": ["648:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "648:8:9"}, "referencedDeclaration": 1650, "src": "648:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1884], "body": {"id": 918, "nodeType": "Block", "src": "880:886:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 809, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "894:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "901:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "894:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 812, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "906:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 813, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "912:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "906:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "894:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 822, "nodeType": "IfStatement", "src": "890:103:9", "trueBody": {"id": 821, "nodeType": "Block", "src": "934:59:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 816, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "955:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "971:9:9", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 1682, "src": "955:25:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 820, "nodeType": "RevertStatement", "src": "948:34:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 823, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1006:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 824, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "1012:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1031:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "1012:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1012:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1038:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "1012:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1006:46:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 835, "nodeType": "IfStatement", "src": "1002:112:9", "trueBody": {"id": 834, "nodeType": "Block", "src": "1054:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 829, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1075:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:10:9", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 1736, "src": "1075:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1075:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 833, "nodeType": "RevertStatement", "src": "1068:35:9"}]}}, {"assignments": [838], "declarations": [{"constant": false, "id": 838, "mutability": "mutable", "name": "s", "nameLocation": "1144:1:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1124:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 837, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 836, "name": "StorageData", "nameLocations": ["1124:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1124:11:9"}, "referencedDeclaration": 2436, "src": "1124:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 842, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 839, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1148:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1159:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1148:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1148:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1124:41:9"}, {"assignments": [844], "declarations": [{"constant": false, "id": 844, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1184:8:9", "nodeType": "VariableDeclaration", "scope": 918, "src": "1176:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1176:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 848, "initialValue": {"arguments": [{"id": 846, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1205:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 845, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1195:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1176:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 849, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1229:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 850, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1231:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1229:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 852, "indexExpression": {"id": 851, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1244:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1229:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1257:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1229:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 860, "nodeType": "IfStatement", "src": "1225:81:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 855, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1267:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1283:21:9", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 1730, "src": "1267:37:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1267:39:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 859, "nodeType": "RevertStatement", "src": "1260:46:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 861, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1317:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 864, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1319:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1317:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 865, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1334:9:9", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2491, "src": "1317:26:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2465_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1317:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 867, "nodeType": "ExpressionStatement", "src": "1317:28:9"}, {"expression": {"id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 868, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1355:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 871, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1367:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 872, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1369:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2435, "src": "1367:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 873, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1384:7:9", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2477, "src": "1367:24:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2465_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2465_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1367:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1360:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 869, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1360:6:9", "typeDescriptions": {}}}, "id": 875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1360:34:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1355:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 877, "nodeType": "ExpressionStatement", "src": "1355:39:9"}, {"expression": {"id": 900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 878, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1404:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1406:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1404:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 882, "indexExpression": {"id": 880, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1416:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1404:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 884, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1452:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1456:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1452:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 890, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1526:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1532:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "1526:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1519:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 888, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1519:6:9", "typeDescriptions": {}}}, "id": 892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1519:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1548:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1560:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 886, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "1486:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1737_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1502:8:9", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1633, "src": "1486:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$1633_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1512:5:9", "1541:5:9", "1551:7:9"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1486:77:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1593:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 897, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1613:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 898, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1643:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 883, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "1422:8:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$1650_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 899, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1445:5:9", "1476:8:9", "1577:14:9", "1608:3:9", "1630:11:9"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1422:237:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1404:255:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 901, "nodeType": "ExpressionStatement", "src": "1404:255:9"}, {"expression": {"id": 908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 902, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 838, "src": "1669:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 905, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1671:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2404, "src": "1669:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 906, "indexExpression": {"id": 904, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 844, "src": "1684:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1669:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 907, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1696:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1669:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 909, "nodeType": "ExpressionStatement", "src": "1669:29:9"}, {"eventCall": {"arguments": [{"id": 911, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "1728:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 912, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1732:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1736:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1732:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 914, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1744:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 915, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1755:3:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 910, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1951, "src": "1714:13:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 916, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1714:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 917, "nodeType": "EmitStatement", "src": "1709:50:9"}]}, "functionSelector": "10e7f406", "id": 919, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:9", "nodeType": "FunctionDefinition", "overrides": {"id": 805, "nodeType": "OverrideSpecifier", "overrides": [], "src": "851:8:9"}, "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 801, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "804:24:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 800, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 803, "mutability": "mutable", "name": "fee", "nameLocation": "837:3:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "830:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "830:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "803:38:9"}, "returnParameters": {"id": 808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 807, "mutability": "mutable", "name": "id", "nameLocation": "876:2:9", "nodeType": "VariableDeclaration", "scope": 919, "src": "869:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 806, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "869:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "868:11:9"}, "scope": 1621, "src": "778:988:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1890], "body": {"id": 1024, "nodeType": "Block", "src": "1833:738:9", "statements": [{"assignments": [927], "declarations": [{"constant": false, "id": 927, "mutability": "mutable", "name": "s", "nameLocation": "1863:1:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1843:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 926, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 925, "name": "StorageData", "nameLocations": ["1843:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "1843:11:9"}, "referencedDeclaration": 2436, "src": "1843:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 931, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 928, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "1867:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1878:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1867:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1867:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1843:41:9"}, {"assignments": [934], "declarations": [{"constant": false, "id": 934, "mutability": "mutable", "name": "operator", "nameLocation": "1910:8:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "1894:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 933, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 932, "name": "Operator", "nameLocations": ["1894:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "1894:8:9"}, "referencedDeclaration": 1650, "src": "1894:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 939, "initialValue": {"baseExpression": {"expression": {"id": 935, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "1921:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1923:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "1921:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 938, "indexExpression": {"id": 937, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "1933:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1921:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1894:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 940, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1954:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1963:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "1954:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1954:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 944, "nodeType": "ExpressionStatement", "src": "1954:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 945, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1986:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "1986:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 948, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1986:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 949, "nodeType": "ExpressionStatement", "src": "1986:25:9"}, {"assignments": [951], "declarations": [{"constant": false, "id": 951, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2028:14:9", "nodeType": "VariableDeclaration", "scope": 1024, "src": "2021:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2021:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 955, "initialValue": {"expression": {"expression": {"id": 952, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2045:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 953, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2054:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2045:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2063:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2045:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2021:49:9"}, {"expression": {"id": 962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 956, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2090:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2081:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 960, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2099:5:9", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1626, "src": "2081:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2107:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2081:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 963, "nodeType": "ExpressionStatement", "src": "2081:27:9"}, {"expression": {"id": 970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 964, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2118:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 967, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2127:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "2118:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 968, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2136:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "2118:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2146:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2118:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 971, "nodeType": "ExpressionStatement", "src": "2118:29:9"}, {"expression": {"id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 972, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2157:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2166:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1636, "src": "2157:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2183:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2157:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 977, "nodeType": "ExpressionStatement", "src": "2157:27:9"}, {"expression": {"id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 978, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2203:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "2194:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2209:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2194:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 983, "nodeType": "ExpressionStatement", "src": "2194:16:9"}, {"condition": {"expression": {"id": 984, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2225:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 985, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2234:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2225:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 999, "nodeType": "IfStatement", "src": "2221:132:9", "trueBody": {"id": 998, "nodeType": "Block", "src": "2247:106:9", "statements": [{"expression": {"id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 986, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2261:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 988, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2270:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2261:20:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2284:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2261:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 991, "nodeType": "ExpressionStatement", "src": "2261:28:9"}, {"expression": {"id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2303:39:9", "subExpression": {"baseExpression": {"expression": {"id": 992, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2310:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2312:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2310:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 995, "indexExpression": {"id": 994, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2331:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2310:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 997, "nodeType": "ExpressionStatement", "src": "2303:39:9"}]}}, {"expression": {"id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1000, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "2362:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1003, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2364:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2362:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1004, "indexExpression": {"id": 1002, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2374:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2362:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1005, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "2388:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2362:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1007, "nodeType": "ExpressionStatement", "src": "2362:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1008, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2411:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2428:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2411:18:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1019, "nodeType": "IfStatement", "src": "2407:116:9", "trueBody": {"id": 1018, "nodeType": "Block", "src": "2431:92:9", "statements": [{"expression": {"arguments": [{"id": 1012, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2476:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1013, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 951, "src": "2488:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2503:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "2488:21:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2488:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1011, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "2445:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2445:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1017, "nodeType": "ExpressionStatement", "src": "2445:67:9"}]}}, {"eventCall": {"arguments": [{"id": 1021, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "2553:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1020, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1956, "src": "2537:15:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 1022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2537:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1023, "nodeType": "EmitStatement", "src": "2532:32:9"}]}, "functionSelector": "2e168e0e", "id": 1025, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1781:14:9", "nodeType": "FunctionDefinition", "overrides": {"id": 923, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1824:8:9"}, "parameters": {"id": 922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 921, "mutability": "mutable", "name": "operatorId", "nameLocation": "1803:10:9", "nodeType": "VariableDeclaration", "scope": 1025, "src": "1796:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 920, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1796:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1795:19:9"}, "returnParameters": {"id": 924, "nodeType": "ParameterList", "parameters": [], "src": "1833:0:9"}, "scope": 1621, "src": "1772:799:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1898], "body": {"id": 1087, "nodeType": "Block", "src": "2656:407:9", "statements": [{"assignments": [1034], "declarations": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "s", "nameLocation": "2686:1:9", "nodeType": "VariableDeclaration", "scope": 1087, "src": "2666:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1033, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1032, "name": "StorageData", "nameLocations": ["2666:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "2666:11:9"}, "referencedDeclaration": 2436, "src": "2666:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1038, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1035, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "2690:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2701:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "2690:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2690:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2666:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1039, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2717:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1042, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2719:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2717:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1043, "indexExpression": {"id": 1041, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2729:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2717:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2741:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "2717:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2717:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1046, "nodeType": "ExpressionStatement", "src": "2717:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1047, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2768:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2791:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1049, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2783:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "2783:7:9", "typeDescriptions": {}}}, "id": 1051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2783:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2768:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1072, "nodeType": "Block", "src": "2869:67:9", "statements": [{"expression": {"id": 1070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1063, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2883:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1066, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2885:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2883:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1067, "indexExpression": {"id": 1065, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2895:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2883:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2907:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2883:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2921:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2883:42:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1071, "nodeType": "ExpressionStatement", "src": "2883:42:9"}]}, "id": 1073, "nodeType": "IfStatement", "src": "2764:172:9", "trueBody": {"id": 1062, "nodeType": "Block", "src": "2795:68:9", "statements": [{"expression": {"id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1053, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2809:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1056, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2811:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "2809:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1057, "indexExpression": {"id": 1055, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2821:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2809:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1058, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2833:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "2809:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2847:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2809:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1061, "nodeType": "ExpressionStatement", "src": "2809:43:9"}]}}, {"expression": {"id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1074, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "2946:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1077, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2948:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2415, "src": "2946:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1078, "indexExpression": {"id": 1076, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "2967:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2946:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1079, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "2981:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2946:46:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1081, "nodeType": "ExpressionStatement", "src": "2946:46:9"}, {"eventCall": {"arguments": [{"id": 1083, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "3032:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1084, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1029, "src": "3044:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1082, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1963, "src": "3007:24:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3007:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1086, "nodeType": "EmitStatement", "src": "3002:54:9"}]}, "functionSelector": "c90a7eab", "id": 1088, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2586:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "operatorId", "nameLocation": "2614:10:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2607:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1026, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2607:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1029, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2634:11:9", "nodeType": "VariableDeclaration", "scope": 1088, "src": "2626:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "2626:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2606:40:9"}, "returnParameters": {"id": 1031, "nodeType": "ParameterList", "parameters": [], "src": "2656:0:9"}, "scope": 1621, "src": "2577:486:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1906], "body": {"id": 1229, "nodeType": "Block", "src": "3147:1226:9", "statements": [{"assignments": [1098], "declarations": [{"constant": false, "id": 1098, "mutability": "mutable", "name": "s", "nameLocation": "3177:1:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3157:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1097, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1096, "name": "StorageData", "nameLocations": ["3157:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "3157:11:9"}, "referencedDeclaration": 2436, "src": "3157:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1102, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1099, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "3181:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3192:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "3181:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3181:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3157:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1103, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1106, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1107, "indexExpression": {"id": 1105, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3232:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "3208:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3208:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1110, "nodeType": "ExpressionStatement", "src": "3208:36:9"}, {"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "sp", "nameLocation": "3279:2:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3255:26:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1112, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1111, "name": "StorageProtocol", "nameLocations": ["3255:15:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1779, "src": "3255:15:9"}, "referencedDeclaration": 1779, "src": "3255:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1117, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1114, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "3284:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3303:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "3284:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3284:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3255:54:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3324:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3331:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3324:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1121, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3336:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1122, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 782, "src": "3342:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3336:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3324:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1128, "nodeType": "IfStatement", "src": "3320:62:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1125, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1682, "src": "3371:9:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3371:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1127, "nodeType": "RevertStatement", "src": "3364:18:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1129, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3396:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3402:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3405:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "3402:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3396:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1136, "nodeType": "IfStatement", "src": "3392:48:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1133, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "3428:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3428:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1135, "nodeType": "RevertStatement", "src": "3421:19:9"}}, {"assignments": [1138], "declarations": [{"constant": false, "id": 1138, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3458:11:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3451:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1137, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3451:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1144, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 1139, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "3472:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1140, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3474:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "3472:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1142, "indexExpression": {"id": 1141, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "3484:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3472:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1143, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3496:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "3472:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3451:48:9"}, {"assignments": [1146], "declarations": [{"constant": false, "id": 1146, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3516:9:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3509:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1145, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3509:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1150, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1147, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "3528:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3532:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "3528:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3528:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3509:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1151, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3555:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1152, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3570:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3555:24:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1158, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3648:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3661:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3648:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1161, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3666:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3681:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3666:16:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3648:34:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1169, "nodeType": "IfStatement", "src": "3644:95:9", "trueBody": {"id": 1168, "nodeType": "Block", "src": "3684:55:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1165, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "3705:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3705:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1167, "nodeType": "RevertStatement", "src": "3698:30:9"}]}}, "id": 1170, "nodeType": "IfStatement", "src": "3551:188:9", "trueBody": {"id": 1157, "nodeType": "Block", "src": "3581:57:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1154, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1722, "src": "3602:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3602:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1156, "nodeType": "RevertStatement", "src": "3595:32:9"}]}}, {"assignments": [1172], "declarations": [{"constant": false, "id": 1172, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3844:13:9", "nodeType": "VariableDeclaration", "scope": 1229, "src": "3837:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1171, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3837:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1183, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1173, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3861:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1174, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3876:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1175, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "3895:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1176, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3898:22:9", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1775, "src": "3895:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3876:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1178, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3875:46:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3861:60:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1180, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3860:62:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1181, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "3925:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3860:81:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3837:104:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1184, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "3956:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 1185, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1172, "src": "3968:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3956:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1190, "nodeType": "IfStatement", "src": "3952:63:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1187, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1684, "src": "3990:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3990:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1189, "nodeType": "RevertStatement", "src": "3983:32:9"}}, {"expression": {"id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1191, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "4026:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4028:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4026:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1195, "indexExpression": {"id": 1193, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4054:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4026:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 1197, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1146, "src": "4106:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1200, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4136:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4142:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4136:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4129:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1198, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4129:6:9", "typeDescriptions": {}}}, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4129:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1203, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4155:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4158:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4155:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4129:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1208, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4203:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4209:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4203:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4196:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1206, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4196:6:9", "typeDescriptions": {}}}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4196:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1211, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4222:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1212, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4225:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "4222:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1214, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "4252:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4255:24:9", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1772, "src": "4252:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4196:83:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1196, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1660, "src": "4068:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:221:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "4026:263:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1219, "nodeType": "ExpressionStatement", "src": "4026:263:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1221, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4324:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4328:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "4324:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1223, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "4336:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1224, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4348:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4354:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "4348:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1226, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1092, "src": "4362:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1220, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1973, "src": "4304:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4304:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1228, "nodeType": "EmitStatement", "src": "4299:67:9"}]}, "functionSelector": "b317c35f", "id": 1230, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "3078:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1094, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3138:8:9"}, "parameters": {"id": 1093, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1090, "mutability": "mutable", "name": "operatorId", "nameLocation": "3104:10:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3097:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1089, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3097:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1092, "mutability": "mutable", "name": "fee", "nameLocation": "3124:3:9", "nodeType": "VariableDeclaration", "scope": 1230, "src": "3116:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3116:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3096:32:9"}, "returnParameters": {"id": 1095, "nodeType": "ParameterList", "parameters": [], "src": "3147:0:9"}, "scope": 1621, "src": "3069:1304:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1912], "body": {"id": 1339, "nodeType": "Block", "src": "4444:926:9", "statements": [{"assignments": [1238], "declarations": [{"constant": false, "id": 1238, "mutability": "mutable", "name": "s", "nameLocation": "4474:1:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4454:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1237, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1236, "name": "StorageData", "nameLocations": ["4454:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "4454:11:9"}, "referencedDeclaration": 2436, "src": "4454:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1242, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1239, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "4478:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4489:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "4478:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4478:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4454:41:9"}, {"assignments": [1245], "declarations": [{"constant": false, "id": 1245, "mutability": "mutable", "name": "operator", "nameLocation": "4521:8:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4505:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1244, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1243, "name": "Operator", "nameLocations": ["4505:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "4505:8:9"}, "referencedDeclaration": 1650, "src": "4505:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1250, "initialValue": {"baseExpression": {"expression": {"id": 1246, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4532:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1247, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4534:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "4532:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1249, "indexExpression": {"id": 1248, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4544:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4532:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4505:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1251, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "4565:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1253, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4574:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "4565:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4565:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1255, "nodeType": "ExpressionStatement", "src": "4565:21:9"}, {"assignments": [1258], "declarations": [{"constant": false, "id": 1258, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4629:16:9", "nodeType": "VariableDeclaration", "scope": 1339, "src": "4597:48:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 1257, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1256, "name": "OperatorFeeChangeRequest", "nameLocations": ["4597:24:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1660, "src": "4597:24:9"}, "referencedDeclaration": 1660, "src": "4597:24:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 1263, "initialValue": {"baseExpression": {"expression": {"id": 1259, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "4648:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4650:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "4648:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1262, "indexExpression": {"id": 1261, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "4676:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4648:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4597:90:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1264, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4702:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4719:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4702:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4740:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4702:39:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1271, "nodeType": "IfStatement", "src": "4698:67:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1268, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "4750:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4750:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1270, "nodeType": "RevertStatement", "src": "4743:22:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1272, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4793:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4799:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4793:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1274, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4811:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4828:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "4811:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4793:52:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1277, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4849:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4855:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4849:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1279, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4867:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4884:15:9", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 1659, "src": "4867:32:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4849:50:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4793:106:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1287, "nodeType": "IfStatement", "src": "4776:194:9", "trueBody": {"id": 1286, "nodeType": "Block", "src": "4910:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1283, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1688, "src": "4931:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4931:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1285, "nodeType": "RevertStatement", "src": "4924:35:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1288, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "4984:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1289, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5001:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "4984:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5005:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "4984:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1292, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1802, "src": "5016:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1802_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5035:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1801, "src": "5016:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1779_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5016:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1779_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5042:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1778, "src": "5016:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4984:72:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1300, "nodeType": "IfStatement", "src": "4980:97:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1297, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1736, "src": "5065:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5065:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1299, "nodeType": "RevertStatement", "src": "5058:19:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1301, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5088:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5097:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "5088:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5088:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1305, "nodeType": "ExpressionStatement", "src": "5088:25:9"}, {"expression": {"id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1306, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5123:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1308, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5132:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "5123:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1309, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5138:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5155:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5138:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5123:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "5123:35:9"}, {"expression": {"id": 1319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1313, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5168:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5170:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5168:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1317, "indexExpression": {"id": 1315, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5180:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5168:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1318, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "5194:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5168:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1320, "nodeType": "ExpressionStatement", "src": "5168:34:9"}, {"expression": {"id": 1325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5213:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1321, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5220:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5222:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5220:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1324, "indexExpression": {"id": 1323, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5248:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5220:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1326, "nodeType": "ExpressionStatement", "src": "5213:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1328, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5295:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5299:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5295:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1330, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "5307:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1331, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5319:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5325:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "5319:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1333, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "5333:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1334, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5350:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1653, "src": "5333:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5354:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "5333:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5333:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1327, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "5275:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5275:88:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1338, "nodeType": "EmitStatement", "src": "5270:93:9"}]}, "functionSelector": "8932cee0", "id": 1340, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4388:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1234, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4435:8:9"}, "parameters": {"id": 1233, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1232, "mutability": "mutable", "name": "operatorId", "nameLocation": "4414:10:9", "nodeType": "VariableDeclaration", "scope": 1340, "src": "4407:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1231, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4407:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4406:19:9"}, "returnParameters": {"id": 1235, "nodeType": "ParameterList", "parameters": [], "src": "4444:0:9"}, "scope": 1621, "src": "4379:991:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1918], "body": {"id": 1384, "nodeType": "Block", "src": "5448:333:9", "statements": [{"assignments": [1348], "declarations": [{"constant": false, "id": 1348, "mutability": "mutable", "name": "s", "nameLocation": "5478:1:9", "nodeType": "VariableDeclaration", "scope": 1384, "src": "5458:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1347, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1346, "name": "StorageData", "nameLocations": ["5458:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5458:11:9"}, "referencedDeclaration": 2436, "src": "5458:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1352, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1349, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5482:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5493:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5482:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5482:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5458:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1353, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5509:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1356, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5511:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5509:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1357, "indexExpression": {"id": 1355, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5521:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5509:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5533:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5509:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5509:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1360, "nodeType": "ExpressionStatement", "src": "5509:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1361, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5560:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1362, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5562:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5560:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1364, "indexExpression": {"id": 1363, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5588:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5560:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5600:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "5560:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5621:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5560:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1371, "nodeType": "IfStatement", "src": "5556:90:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1368, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1686, "src": "5631:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1369, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5631:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1370, "nodeType": "RevertStatement", "src": "5624:22:9"}}, {"expression": {"id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5657:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1372, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "5664:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5666:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "5664:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1375, "indexExpression": {"id": 1374, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5692:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5664:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1377, "nodeType": "ExpressionStatement", "src": "5657:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1379, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5751:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5755:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5751:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1381, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1342, "src": "5763:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1378, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1979, "src": "5719:31:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1382, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5719:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1383, "nodeType": "EmitStatement", "src": "5714:60:9"}]}, "functionSelector": "23d68a6d", "id": 1385, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5385:25:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1344, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5439:8:9"}, "parameters": {"id": 1343, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1342, "mutability": "mutable", "name": "operatorId", "nameLocation": "5418:10:9", "nodeType": "VariableDeclaration", "scope": 1385, "src": "5411:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1341, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5411:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5410:19:9"}, "returnParameters": {"id": 1345, "nodeType": "ParameterList", "parameters": [], "src": "5448:0:9"}, "scope": 1621, "src": "5376:405:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1926], "body": {"id": 1469, "nodeType": "Block", "src": "5864:599:9", "statements": [{"assignments": [1395], "declarations": [{"constant": false, "id": 1395, "mutability": "mutable", "name": "s", "nameLocation": "5894:1:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1394, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1393, "name": "StorageData", "nameLocations": ["5874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "5874:11:9"}, "referencedDeclaration": 2436, "src": "5874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1399, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1396, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "5898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "5898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5874:41:9"}, {"assignments": [1402], "declarations": [{"constant": false, "id": 1402, "mutability": "mutable", "name": "operator", "nameLocation": "5941:8:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "5925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1401, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1400, "name": "Operator", "nameLocations": ["5925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "5925:8:9"}, "referencedDeclaration": 1650, "src": "5925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1407, "initialValue": {"baseExpression": {"expression": {"id": 1403, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "5952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1404, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "5952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1406, "indexExpression": {"id": 1405, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "5964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1408, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "5985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "5985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "5985:21:9"}, {"assignments": [1414], "declarations": [{"constant": false, "id": 1414, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6024:12:9", "nodeType": "VariableDeclaration", "scope": 1469, "src": "6017:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1413, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6017:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1418, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1415, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6039:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6043:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "6039:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6039:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6017:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1419, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6065:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1420, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6081:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1421, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6090:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6081:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6065:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1426, "nodeType": "IfStatement", "src": "6061:64:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1423, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1724, "src": "6102:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6102:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1425, "nodeType": "RevertStatement", "src": "6095:30:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1427, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6136:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1429, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6145:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "6136:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6136:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1431, "nodeType": "ExpressionStatement", "src": "6136:25:9"}, {"expression": {"id": 1436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1432, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6171:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1434, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6180:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1639, "src": "6171:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1435, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1414, "src": "6186:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6171:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1437, "nodeType": "ExpressionStatement", "src": "6171:27:9"}, {"expression": {"id": 1444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1438, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6208:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1441, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6210:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6208:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1442, "indexExpression": {"id": 1440, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6220:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6208:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1443, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1402, "src": "6234:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6208:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1445, "nodeType": "ExpressionStatement", "src": "6208:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1446, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6257:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6259:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6257:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1449, "indexExpression": {"id": 1448, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6285:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6257:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6297:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1656, "src": "6257:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6318:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6257:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1459, "nodeType": "IfStatement", "src": "6253:126:9", "trueBody": {"expression": {"id": 1457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6333:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1453, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1395, "src": "6340:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6342:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2421, "src": "6340:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1660_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1456, "indexExpression": {"id": 1455, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6368:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6340:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1660_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1458, "nodeType": "ExpressionStatement", "src": "6333:46:9"}}, {"eventCall": {"arguments": [{"expression": {"id": 1461, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6414:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6418:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "6414:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1463, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "6426:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1464, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6438:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6444:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "6438:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1466, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "6452:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1460, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1990, "src": "6394:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6394:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1468, "nodeType": "EmitStatement", "src": "6389:67:9"}]}, "functionSelector": "190d82e4", "id": 1470, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5796:17:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1391, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5855:8:9"}, "parameters": {"id": 1390, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1387, "mutability": "mutable", "name": "operatorId", "nameLocation": "5821:10:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5814:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1386, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5814:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1389, "mutability": "mutable", "name": "fee", "nameLocation": "5841:3:9", "nodeType": "VariableDeclaration", "scope": 1470, "src": "5833:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1388, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5833:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5813:32:9"}, "returnParameters": {"id": 1392, "nodeType": "ParameterList", "parameters": [], "src": "5864:0:9"}, "scope": 1621, "src": "5787:676:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1934], "body": {"id": 1483, "nodeType": "Block", "src": "6556:62:9", "statements": [{"expression": {"arguments": [{"id": 1479, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1472, "src": "6592:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1480, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1474, "src": "6604:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1478, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6566:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6566:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1482, "nodeType": "ExpressionStatement", "src": "6566:45:9"}]}, "functionSelector": "35f63767", "id": 1484, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6478:24:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1476, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6547:8:9"}, "parameters": {"id": 1475, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1472, "mutability": "mutable", "name": "operatorId", "nameLocation": "6510:10:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6503:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6503:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1474, "mutability": "mutable", "name": "amount", "nameLocation": "6530:6:9", "nodeType": "VariableDeclaration", "scope": 1484, "src": "6522:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1473, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6522:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6502:35:9"}, "returnParameters": {"id": 1477, "nodeType": "ParameterList", "parameters": [], "src": "6556:0:9"}, "scope": 1621, "src": "6469:149:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1940], "body": {"id": 1495, "nodeType": "Block", "src": "6698:57:9", "statements": [{"expression": {"arguments": [{"id": 1491, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1486, "src": "6734:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6746:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1490, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1597, "src": "6708:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6708:40:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1494, "nodeType": "ExpressionStatement", "src": "6708:40:9"}]}, "functionSelector": "4bc93b64", "id": 1496, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6633:27:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1488, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6689:8:9"}, "parameters": {"id": 1487, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1486, "mutability": "mutable", "name": "operatorId", "nameLocation": "6668:10:9", "nodeType": "VariableDeclaration", "scope": 1496, "src": "6661:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1485, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6661:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6660:19:9"}, "returnParameters": {"id": 1489, "nodeType": "ParameterList", "parameters": [], "src": "6698:0:9"}, "scope": 1621, "src": "6624:131:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1596, "nodeType": "Block", "src": "6864:753:9", "statements": [{"assignments": [1505], "declarations": [{"constant": false, "id": 1505, "mutability": "mutable", "name": "s", "nameLocation": "6894:1:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6874:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1504, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1503, "name": "StorageData", "nameLocations": ["6874:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2436, "src": "6874:11:9"}, "referencedDeclaration": 2436, "src": "6874:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1509, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1506, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2459, "src": "6898:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2459_$", "typeString": "type(library SSVStorage)"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6909:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "6898:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2436_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6898:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6874:41:9"}, {"assignments": [1512], "declarations": [{"constant": false, "id": 1512, "mutability": "mutable", "name": "operator", "nameLocation": "6941:8:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "6925:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1511, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1510, "name": "Operator", "nameLocations": ["6925:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1650, "src": "6925:8:9"}, "referencedDeclaration": 1650, "src": "6925:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1517, "initialValue": {"baseExpression": {"expression": {"id": 1513, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "6952:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6954:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "6952:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1516, "indexExpression": {"id": 1515, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "6964:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6952:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6925:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1518, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "6985:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6994:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2282, "src": "6985:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6985:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1522, "nodeType": "ExpressionStatement", "src": "6985:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1523, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7017:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7026:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2199, "src": "7017:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1650_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1650_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7017:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1527, "nodeType": "ExpressionStatement", "src": "7017:25:9"}, {"assignments": [1529], "declarations": [{"constant": false, "id": 1529, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "7060:15:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7053:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1528, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7053:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1530, "nodeType": "VariableDeclarationStatement", "src": "7053:22:9"}, {"assignments": [1532], "declarations": [{"constant": false, "id": 1532, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "7092:12:9", "nodeType": "VariableDeclaration", "scope": 1596, "src": "7085:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7085:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1536, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1533, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7107:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7114:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1849, "src": "7107:13:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7107:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "7085:37:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1537, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7137:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7147:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7137:11:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1540, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7152:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7161:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7152:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7170:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7152:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7180:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7152:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7137:44:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1553, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1500, "src": "7261:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7270:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7261:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1556, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7275:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1557, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7284:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7275:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1558, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7293:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7275:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1559, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7304:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7275:41:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7261:55:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1570, "nodeType": "Block", "src": "7379:53:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1567, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1692, "src": "7400:19:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7400:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1569, "nodeType": "RevertStatement", "src": "7393:28:9"}]}, "id": 1571, "nodeType": "IfStatement", "src": "7257:175:9", "trueBody": {"id": 1566, "nodeType": "Block", "src": "7318:55:9", "statements": [{"expression": {"id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1562, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7332:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1563, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "7350:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7332:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1565, "nodeType": "ExpressionStatement", "src": "7332:30:9"}]}}, "id": 1572, "nodeType": "IfStatement", "src": "7133:299:9", "trueBody": {"id": 1552, "nodeType": "Block", "src": "7183:68:9", "statements": [{"expression": {"id": 1550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1546, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7197:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1547, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7215:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1548, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7224:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7215:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7233:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7215:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7197:43:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1551, "nodeType": "ExpressionStatement", "src": "7197:43:9"}]}}, {"expression": {"id": 1579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1573, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7442:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1576, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7451:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1649, "src": "7442:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1633_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7460:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1632, "src": "7442:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1578, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7471:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7442:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1580, "nodeType": "ExpressionStatement", "src": "7442:44:9"}, {"expression": {"id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1581, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1505, "src": "7497:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2436_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1584, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7499:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2427, "src": "7497:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1650_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1585, "indexExpression": {"id": 1583, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7509:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7497:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1586, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1512, "src": "7523:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7497:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1650_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1588, "nodeType": "ExpressionStatement", "src": "7497:34:9"}, {"expression": {"arguments": [{"id": 1590, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1498, "src": "7573:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1591, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "7585:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7601:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1819, "src": "7585:22:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7585:24:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1589, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1620, "src": "7542:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7542:68:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1595, "nodeType": "ExpressionStatement", "src": "7542:68:9"}]}, "id": 1597, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6795:25:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1501, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1498, "mutability": "mutable", "name": "operatorId", "nameLocation": "6828:10:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6821:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1497, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6821:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1500, "mutability": "mutable", "name": "amount", "nameLocation": "6848:6:9", "nodeType": "VariableDeclaration", "scope": 1597, "src": "6840:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6840:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6820:35:9"}, "returnParameters": {"id": 1502, "nodeType": "ParameterList", "parameters": [], "src": "6864:0:9"}, "scope": 1621, "src": "6786:831:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1619, "nodeType": "Block", "src": "7706:124:9", "statements": [{"expression": {"arguments": [{"expression": {"id": 1607, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7740:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7744:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7740:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1609, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7752:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1604, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2136, "src": "7716:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2136_$", "typeString": "type(library CoreLib)"}}, "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7724:15:9", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2047, "src": "7716:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7716:43:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1611, "nodeType": "ExpressionStatement", "src": "7716:43:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7792:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7796:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7792:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1615, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "7804:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1616, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1601, "src": "7816:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1612, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1998, "src": "7774:17:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7774:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "EmitStatement", "src": "7769:54:9"}]}, "id": 1620, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7632:30:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1602, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1599, "mutability": "mutable", "name": "operatorId", "nameLocation": "7670:10:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7663:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1598, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7663:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1601, "mutability": "mutable", "name": "amount", "nameLocation": "7690:6:9", "nodeType": "VariableDeclaration", "scope": 1620, "src": "7682:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7662:35:9"}, "returnParameters": {"id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "7706:0:9"}, "scope": 1621, "src": "7623:207:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1622, "src": "358:7474:9", "usedErrors": [1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736]}], "src": "45:7788:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2611]}, "id": 2612, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2535, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2536, "nodeType": "StructuredDocumentation", "src": "131:70:10", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2611, "linearizedBaseContracts": [2611], "name": "IERC20", "nameLocation": "212:6:10", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2537, "nodeType": "StructuredDocumentation", "src": "225:158:10", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2545, "name": "Transfer", "nameLocation": "394:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2544, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2539, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "403:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2538, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2541, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "425:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2540, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2543, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:10", "nodeType": "VariableDeclaration", "scope": 2545, "src": "445:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2542, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:10"}, "src": "388:72:10"}, {"anonymous": false, "documentation": {"id": 2546, "nodeType": "StructuredDocumentation", "src": "466:148:10", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2554, "name": "Approval", "nameLocation": "625:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2553, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2548, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "634:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2547, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2550, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "657:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2549, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2552, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:10", "nodeType": "VariableDeclaration", "scope": 2554, "src": "682:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2551, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:10"}, "src": "619:78:10"}, {"documentation": {"id": 2555, "nodeType": "StructuredDocumentation", "src": "703:66:10", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2560, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2556, "nodeType": "ParameterList", "parameters": [], "src": "794:2:10"}, "returnParameters": {"id": 2559, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2558, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2560, "src": "820:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2557, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:10"}, "scope": 2611, "src": "774:55:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2561, "nodeType": "StructuredDocumentation", "src": "835:72:10", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2568, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2564, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2563, "mutability": "mutable", "name": "account", "nameLocation": "939:7:10", "nodeType": "VariableDeclaration", "scope": 2568, "src": "931:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2562, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:10"}, "returnParameters": {"id": 2567, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2566, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2568, "src": "971:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2565, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:10"}, "scope": 2611, "src": "912:68:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2569, "nodeType": "StructuredDocumentation", "src": "986:202:10", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2578, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2574, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1211:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2570, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2573, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:10", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1223:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2572, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:10"}, "returnParameters": {"id": 2577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2576, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2578, "src": "1257:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2575, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:10"}, "scope": 2611, "src": "1193:70:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2579, "nodeType": "StructuredDocumentation", "src": "1269:264:10", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2588, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2584, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2581, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1557:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2580, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2583, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:10", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1572:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2582, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:10"}, "returnParameters": {"id": 2587, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2586, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2588, "src": "1612:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2585, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:10"}, "scope": 2611, "src": "1538:83:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2589, "nodeType": "StructuredDocumentation", "src": "1627:642:10", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2598, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2594, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2591, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2291:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2590, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2593, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:10", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2308:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2592, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:10"}, "returnParameters": {"id": 2597, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2596, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2598, "src": "2342:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2595, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:10"}, "scope": 2611, "src": "2274:74:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2599, "nodeType": "StructuredDocumentation", "src": "2354:287:10", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2610, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2601, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2668:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2600, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2603, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2682:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2602, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2605, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:10", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2694:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2604, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:10"}, "returnParameters": {"id": 2609, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2608, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2610, "src": "2728:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2607, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:10"}, "scope": 2611, "src": "2646:88:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2612, "src": "202:2534:10", "usedErrors": []}], "src": "106:2631:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2533]}, "id": 2534, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2461, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2462, "nodeType": "StructuredDocumentation", "src": "112:311:11", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2533, "linearizedBaseContracts": [2533], "name": "Counters", "nameLocation": "432:8:11", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2465, "members": [{"constant": false, "id": 2464, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:11", "nodeType": "VariableDeclaration", "scope": 2465, "src": "786:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:11", "nodeType": "StructDefinition", "scope": 2533, "src": "447:374:11", "visibility": "public"}, {"body": {"id": 2476, "nodeType": "Block", "src": "901:38:11", "statements": [{"expression": {"expression": {"id": 2473, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2468, "src": "918:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2474, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "918:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2472, "id": 2475, "nodeType": "Return", "src": "911:21:11"}]}, "id": 2477, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2469, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2468, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:11", "nodeType": "VariableDeclaration", "scope": 2477, "src": "844:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2466, "name": "Counter", "nameLocations": ["844:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "844:7:11"}, "referencedDeclaration": 2465, "src": "844:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:11"}, "returnParameters": {"id": 2472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2471, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2477, "src": "892:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2470, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:11"}, "scope": 2533, "src": "827:112:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2490, "nodeType": "Block", "src": "998:70:11", "statements": [{"id": 2489, "nodeType": "UncheckedBlock", "src": "1008:54:11", "statements": [{"expression": {"id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2483, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1032:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1032:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2488, "nodeType": "ExpressionStatement", "src": "1032:19:11"}]}]}, "id": 2491, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2480, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:11", "nodeType": "VariableDeclaration", "scope": 2491, "src": "964:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2479, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2478, "name": "Counter", "nameLocations": ["964:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "964:7:11"}, "referencedDeclaration": 2465, "src": "964:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:11"}, "returnParameters": {"id": 2482, "nodeType": "ParameterList", "parameters": [], "src": "998:0:11"}, "scope": 2533, "src": "945:123:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2518, "nodeType": "Block", "src": "1127:176:11", "statements": [{"assignments": [2498], "declarations": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:11", "nodeType": "VariableDeclaration", "scope": 2518, "src": "1137:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2501, "initialValue": {"expression": {"id": 2499, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1153:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1153:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:11"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2503, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1185:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2508, "nodeType": "ExpressionStatement", "src": "1177:49:11"}, {"id": 2517, "nodeType": "UncheckedBlock", "src": "1236:61:11", "statements": [{"expression": {"id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2509, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2494, "src": "1260:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1260:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2512, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "1277:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2516, "nodeType": "ExpressionStatement", "src": "1260:26:11"}]}]}, "id": 2519, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2495, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2494, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:11", "nodeType": "VariableDeclaration", "scope": 2519, "src": "1093:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2493, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2492, "name": "Counter", "nameLocations": ["1093:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1093:7:11"}, "referencedDeclaration": 2465, "src": "1093:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:11"}, "returnParameters": {"id": 2496, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:11"}, "scope": 2533, "src": "1074:229:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2531, "nodeType": "Block", "src": "1358:35:11", "statements": [{"expression": {"id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2525, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2522, "src": "1368:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1368:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2528, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2530, "nodeType": "ExpressionStatement", "src": "1368:18:11"}]}, "id": 2532, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2522, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:11", "nodeType": "VariableDeclaration", "scope": 2532, "src": "1324:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2520, "name": "Counter", "nameLocations": ["1324:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2465, "src": "1324:7:11"}, "referencedDeclaration": 2465, "src": "1324:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2465_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:11"}, "returnParameters": {"id": 2524, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:11"}, "scope": 2533, "src": "1309:84:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2534, "src": "424:971:11", "usedErrors": []}], "src": "87:1309:11"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol:Operators": {"srcmap": "148:4855:0:-:0;;;635:523;;;;;;;;;;342:11;659:13;;:36;;;;;;;;;;;;;;;;;;705:26;734:25;:23;;;;;:25;;:::i;:::-;705:54;;805:6;769:2;:33;;;:42;;;;;;;;;;;;;;;;;;855:37;863:19;855:35;;;;;:37;;:::i;:::-;821:2;:31;;;:71;;;;;;;;;;;;;;;;;;934:3;902:2;:29;;;:35;;;;;;;;;;;;;;;;;;977:6;947:2;:27;;;:36;;;;;;;;;;;;;;;;;;1023:6;993:2;:27;;;:36;;;;;;;;;;;;;;;;;;1067:4;1039:2;:25;;;:32;;;;;;;;;;;;;;;;;;1117:1;1101:13;;;;;;;;;;;:17;;;;:::i;:::-;1081:2;:17;;;:37;;;;;;;;;;;;;;;;;;1129:22;1149:1;1129:2;:19;;;;;;:22;;;;:::i;:::-;649:509;148:4855;;1672:184:7;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;;;:21;;:::i;:::-;691:26;714:2;691:22;;;:26;;:::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;;;;;:12;;:::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;;;:24;;:::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;1111:215::-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:101:12:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:180::-;162:77;159:1;152:88;259:4;256:1;249:15;283:4;280:1;273:15;300:275;339:7;362:19;379:1;362:19;:::i;:::-;357:24;;395:19;412:1;395:19;:::i;:::-;390:24;;449:1;446;442:9;471:29;488:11;471:29;:::i;:::-;460:40;;532:11;523:7;520:24;510:58;;548:18;;:::i;:::-;510:58;347:228;300:275;;;;:::o;581:77::-;618:7;647:5;636:16;;581:77;;;:::o;664:194::-;704:4;724:20;742:1;724:20;:::i;:::-;719:25;;758:20;776:1;758:20;:::i;:::-;753:25;;802:1;799;795:9;787:17;;826:1;820:4;817:11;814:37;;;831:18;;:::i;:::-;814:37;664:194;;;;:::o;864:410::-;904:7;927:20;945:1;927:20;:::i;:::-;922:25;;961:20;979:1;961:20;:::i;:::-;956:25;;1016:1;1013;1009:9;1038:30;1056:11;1038:30;:::i;:::-;1027:41;;1217:1;1208:7;1204:15;1201:1;1198:22;1178:1;1171:9;1151:83;1128:139;;1247:18;;:::i;:::-;1128:139;912:362;864:410;;;;:::o;1280:169::-;1364:11;1398:6;1393:3;1386:19;1438:4;1433:3;1429:14;1414:29;;1280:169;;;;:::o;1455:168::-;1595:20;1591:1;1583:6;1579:14;1572:44;1455:168;:::o;1629:366::-;1771:3;1792:67;1856:2;1851:3;1792:67;:::i;:::-;1785:74;;1868:93;1957:3;1868:93;:::i;:::-;1986:2;1981:3;1977:12;1970:19;;1629:366;;;:::o;2001:419::-;2167:4;2205:2;2194:9;2190:18;2182:26;;2254:9;2248:4;2244:20;2240:1;2229:9;2225:17;2218:47;2282:131;2408:4;2282:131;:::i;:::-;2274:139;;2001:419;;;:::o;2426:180::-;2474:77;2471:1;2464:88;2571:4;2568:1;2561:15;2595:4;2592:1;2585:15;2612:185;2652:1;2669:20;2687:1;2669:20;:::i;:::-;2664:25;;2703:20;2721:1;2703:20;:::i;:::-;2698:25;;2742:1;2732:35;;2747:18;;:::i;:::-;2732:35;2789:1;2786;2782:9;2777:14;;2612:185;;;;:::o;2803:176::-;2835:1;2852:20;2870:1;2852:20;:::i;:::-;2847:25;;2886:20;2904:1;2886:20;:::i;:::-;2881:25;;2925:1;2915:35;;2930:18;;:::i;:::-;2915:35;2971:1;2968;2964:9;2959:14;;2803:176;;;;:::o;2985:172::-;3125:24;3121:1;3113:6;3109:14;3102:48;2985:172;:::o;3163:366::-;3305:3;3326:67;3390:2;3385:3;3326:67;:::i;:::-;3319:74;;3402:93;3491:3;3402:93;:::i;:::-;3520:2;3515:3;3511:12;3504:19;;3163:366;;;:::o;3535:419::-;3701:4;3739:2;3728:9;3724:18;3716:26;;3788:9;3782:4;3778:20;3774:1;3763:9;3759:17;3752:47;3816:131;3942:4;3816:131;:::i;:::-;3808:139;;3535:419;;;:::o;3960:205::-;3999:3;4018:19;4035:1;4018:19;:::i;:::-;4013:24;;4051:19;4068:1;4051:19;:::i;:::-;4046:24;;4093:1;4090;4086:9;4079:16;;4116:18;4111:3;4108:27;4105:53;;;4138:18;;:::i;:::-;4105:53;3960:205;;;;:::o;4171:208::-;4210:4;4230:19;4247:1;4230:19;:::i;:::-;4225:24;;4263:19;4280:1;4263:19;:::i;:::-;4258:24;;4306:1;4303;4299:9;4291:17;;4330:18;4324:4;4321:28;4318:54;;;4352:18;;:::i;:::-;4318:54;4171:208;;;;:::o;148:4855:0:-;;;;;;;", "srcmap-runtime": "148:4855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3463:349:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1892:423:0;;;:::i;:::-;;1772:799:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4623:378:0;;;:::i;:::-;;6469:149:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3242:162:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1538:348;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3066:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2321:208:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3818:518:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4342:275:0;;;:::i;:::-;;2535:525;2639:5;:12;;;;2619:10;:33;;;;:::i;:::-;2606:46;;2663:25;2691:17;:15;:17::i;:::-;:27;;:39;2719:10;2691:39;;;;;;;;;;;;;;;2663:67;;2775:1;2748:8;:17;;:23;;;;;;;;;;;;:28;;;2740:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2816:10;2829:8;:12;;;;;;;;;;;;2816:25;;2852:20;402:6;2902:25;:23;:25::i;:::-;:48;;;;;;;;;;;;402:6;2883:67;;;;:::i;:::-;2876:3;:75;;;;:::i;:::-;2875:108;;;;:::i;:::-;2852:131;;2994:4;:23;;;3018:10;3030:22;:13;:20;;;:22::i;:::-;2994:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2596:464;;;2535:525;:::o;778:988:9:-;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;3463:349:0:-;3577:5;:12;;;;3557:10;:33;;;;:::i;:::-;3544:46;;3601:25;3629:17;:15;:17::i;:::-;:27;;:39;3657:10;3629:39;;;;;;;;;;;;;;;3601:67;;3711:1;3684:8;:17;;:23;;;;;;;;;;;;:28;;;3683:54;;;;;3717:8;:20;;;;;;;;;;;;3683:54;3679:126;;;3756:49;3772:10;3784:8;:20;;;;;;;;;;;;3756:49;;;;;;;:::i;:::-;;;;;;;;3679:126;3534:278;3463:349;:::o;5376:405:9:-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1892:423:0:-;1942:11;1956:13;;;;;;;;;;;1942:27;;1979:11;1993:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1979:54;;2044:22;2069:20;:18;:20::i;:::-;2044:45;;2099:10;2112:24;2125:4;2131;2112:12;:24::i;:::-;2099:37;;2151:4;:21;;;2173:9;2184:3;2151:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2147:162;;2292:5;2285:13;;;;:::i;:::-;;2147:162;;;2231:5;2242:10;2231:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:75;2147:162;1932:383;;;;1892:423::o;1772:799:9:-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;4623:378:0:-;4685:25;4713;:23;:25::i;:::-;4685:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4748:15;4778:9;4773:179;4793:5;:12;;;;4789:1;:16;4773:179;;;4826:24;4853:17;:15;:17::i;:::-;:27;;:37;4881:5;4887:1;4881:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4853:37;;;;;;;;;;;;;;;4826:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4916:8;:17;;;:25;;;4904:37;;;;;:::i;:::-;;;4812:140;4807:3;;;;;:::i;:::-;;;;4773:179;;;;4985:8;4968:25;;:2;:13;;;:25;;;4961:33;;;;:::i;:::-;;4675:326;;4623:378::o;6469:149:9:-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;3242:162:0:-;3342:5;:12;;;;3322:10;:33;;;;:::i;:::-;3309:46;;3366:4;:19;;;3386:10;3366:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:162;:::o;1538:348::-;1600:6;1632:3;1626:9;;:3;:9;;;1618:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:18;1734:5;;1741:15;1717:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1707:51;;;;;;1699:60;;1678:81;;1769:5;;:7;;;;;;;;;:::i;:::-;;;;;;1786:18;1814:10;1786:39;;1876:3;1870:1;1864:3;1858;:9;;;;:::i;:::-;:13;;;;:::i;:::-;1843:11;:29;;;;:::i;:::-;1842:37;;;;:::i;:::-;1835:44;;;;1538:348;;;;:::o;3066:170::-;3170:5;:12;;;;3150:10;:33;;;;:::i;:::-;3137:46;;3194:4;:23;;;3218:10;3194:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:170;:::o;6624:131:9:-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;2321:208:0:-;2448:5;:12;;;;2428:10;:33;;;;:::i;:::-;2415:46;;2472:4;:25;;;2498:10;2510:11;2472:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:208;;:::o;4379:991:9:-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3818:518:0:-;3953:1;3937:5;:12;;;;3930:24;;;;:::i;:::-;3916:10;:39;;;;:::i;:::-;3911:1;:45;;;;:::i;:::-;3898:58;;3966:25;3994:17;:15;:17::i;:::-;:27;;:39;4022:10;3994:39;;;;;;;;;;;;;;;3966:67;;4089:1;4062:8;:17;;:23;;;;;;;;;;;;:28;;;4061:126;;;;;4185:1;4108:17;:15;:17::i;:::-;:43;;:55;4152:10;4108:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;4061:126;4044:286;;;4217:102;4233:10;4245:17;:15;:17::i;:::-;:43;;:55;4289:10;4245:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;4217:102;;;;;;;:::i;:::-;;;;;;;;4044:286;3888:448;3818:518;:::o;3069:1304:9:-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;4342:275:0:-;4405:9;4400:211;4420:5;:12;;;;4416:1;:16;4400:211;;;4453:24;4480:17;:15;:17::i;:::-;:27;;:37;4508:5;4514:1;4508:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:37;;;;;;;;;;;;;;;4453:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4564:1;4538:8;:23;;;:27;;;:61;;;;4598:1;4569:8;:17;;;:25;;;:30;;;4538:61;4531:69;;;;:::i;:::-;;4439:172;4434:3;;;;;:::i;:::-;;;;4400:211;;;;4342:275::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;552:272:5:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;1164:368:0:-;1212:12;1236:24;1273:2;1263:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1236:40;;1291:6;1286:195;1307:2;1303:1;:6;1286:195;;;1452:3;1409:5;;1416:15;1433:10;1445:1;1392:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1382:66;;;;;;1377:72;;:78;;;;:::i;:::-;1347:123;;1330:11;1342:1;1330:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;1311:3;;;;;:::i;:::-;;;;1286:195;;;;1490:5;;:7;;;;;;;;;:::i;:::-;;;;;;1514:11;1507:18;;;1164:368;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:327::-;768:6;817:2;805:9;796:7;792:23;788:32;785:119;;;823:79;;:::i;:::-;785:119;943:1;968:52;1012:7;1003:6;992:9;988:22;968:52;:::i;:::-;958:62;;914:116;710:327;;;;:::o;1043:117::-;1152:1;1149;1142:12;1166:117;1275:1;1272;1265:12;1289:117;1398:1;1395;1388:12;1425:552;1482:8;1492:6;1542:3;1535:4;1527:6;1523:17;1519:27;1509:122;;1550:79;;:::i;:::-;1509:122;1663:6;1650:20;1640:30;;1693:18;1685:6;1682:30;1679:117;;;1715:79;;:::i;:::-;1679:117;1829:4;1821:6;1817:17;1805:29;;1883:3;1875:4;1867:6;1863:17;1853:8;1849:32;1846:41;1843:128;;;1890:79;;:::i;:::-;1843:128;1425:552;;;;;:::o;1983:670::-;2061:6;2069;2077;2126:2;2114:9;2105:7;2101:23;2097:32;2094:119;;;2132:79;;:::i;:::-;2094:119;2280:1;2269:9;2265:17;2252:31;2310:18;2302:6;2299:30;2296:117;;;2332:79;;:::i;:::-;2296:117;2445:64;2501:7;2492:6;2481:9;2477:22;2445:64;:::i;:::-;2427:82;;;;2223:296;2558:2;2584:52;2628:7;2619:6;2608:9;2604:22;2584:52;:::i;:::-;2574:62;;2529:117;1983:670;;;;;:::o;2659:115::-;2744:23;2761:5;2744:23;:::i;:::-;2739:3;2732:36;2659:115;;:::o;2780:218::-;2871:4;2909:2;2898:9;2894:18;2886:26;;2922:69;2988:1;2977:9;2973:17;2964:6;2922:69;:::i;:::-;2780:218;;;;:::o;3004:77::-;3041:7;3070:5;3059:16;;3004:77;;;:::o;3087:122::-;3160:24;3178:5;3160:24;:::i;:::-;3153:5;3150:35;3140:63;;3199:1;3196;3189:12;3140:63;3087:122;:::o;3215:139::-;3261:5;3299:6;3286:20;3277:29;;3315:33;3342:5;3315:33;:::i;:::-;3215:139;;;;:::o;3360:472::-;3427:6;3435;3484:2;3472:9;3463:7;3459:23;3455:32;3452:119;;;3490:79;;:::i;:::-;3452:119;3610:1;3635:52;3679:7;3670:6;3659:9;3655:22;3635:52;:::i;:::-;3625:62;;3581:116;3736:2;3762:53;3807:7;3798:6;3787:9;3783:22;3762:53;:::i;:::-;3752:63;;3707:118;3360:472;;;;;:::o;3838:470::-;3904:6;3912;3961:2;3949:9;3940:7;3936:23;3932:32;3929:119;;;3967:79;;:::i;:::-;3929:119;4087:1;4112:52;4156:7;4147:6;4136:9;4132:22;4112:52;:::i;:::-;4102:62;;4058:116;4213:2;4239:52;4283:7;4274:6;4263:9;4259:22;4239:52;:::i;:::-;4229:62;;4184:117;3838:470;;;;;:::o;4314:126::-;4351:7;4391:42;4384:5;4380:54;4369:65;;4314:126;;;:::o;4446:96::-;4483:7;4512:24;4530:5;4512:24;:::i;:::-;4501:35;;4446:96;;;:::o;4548:122::-;4621:24;4639:5;4621:24;:::i;:::-;4614:5;4611:35;4601:63;;4660:1;4657;4650:12;4601:63;4548:122;:::o;4676:139::-;4722:5;4760:6;4747:20;4738:29;;4776:33;4803:5;4776:33;:::i;:::-;4676:139;;;;:::o;4821:472::-;4888:6;4896;4945:2;4933:9;4924:7;4920:23;4916:32;4913:119;;;4951:79;;:::i;:::-;4913:119;5071:1;5096:52;5140:7;5131:6;5120:9;5116:22;5096:52;:::i;:::-;5086:62;;5042:116;5197:2;5223:53;5268:7;5259:6;5248:9;5244:22;5223:53;:::i;:::-;5213:63;;5168:118;4821:472;;;;;:::o;5299:180::-;5347:77;5344:1;5337:88;5444:4;5441:1;5434:15;5468:4;5465:1;5458:15;5485:173;5516:1;5533:19;5550:1;5533:19;:::i;:::-;5528:24;;5566:19;5583:1;5566:19;:::i;:::-;5561:24;;5604:1;5594:35;;5609:18;;:::i;:::-;5594:35;5650:1;5647;5643:9;5638:14;;5485:173;;;;:::o;5664:169::-;5748:11;5782:6;5777:3;5770:19;5822:4;5817:3;5813:14;5798:29;;5664:169;;;;:::o;5839:174::-;5979:26;5975:1;5967:6;5963:14;5956:50;5839:174;:::o;6019:366::-;6161:3;6182:67;6246:2;6241:3;6182:67;:::i;:::-;6175:74;;6258:93;6347:3;6258:93;:::i;:::-;6376:2;6371:3;6367:12;6360:19;;6019:366;;;:::o;6391:419::-;6557:4;6595:2;6584:9;6580:18;6572:26;;6644:9;6638:4;6634:20;6630:1;6619:9;6615:17;6608:47;6672:131;6798:4;6672:131;:::i;:::-;6664:139;;6391:419;;;:::o;6816:180::-;6864:77;6861:1;6854:88;6961:4;6958:1;6951:15;6985:4;6982:1;6975:15;7002:205;7041:3;7060:19;7077:1;7060:19;:::i;:::-;7055:24;;7093:19;7110:1;7093:19;:::i;:::-;7088:24;;7135:1;7132;7128:9;7121:16;;7158:18;7153:3;7150:27;7147:53;;;7180:18;;:::i;:::-;7147:53;7002:205;;;;:::o;7213:275::-;7252:7;7275:19;7292:1;7275:19;:::i;:::-;7270:24;;7308:19;7325:1;7308:19;:::i;:::-;7303:24;;7362:1;7359;7355:9;7384:29;7401:11;7384:29;:::i;:::-;7373:40;;7445:11;7436:7;7433:24;7423:58;;7461:18;;:::i;:::-;7423:58;7260:228;7213:275;;;;:::o;7494:182::-;7533:1;7550:19;7567:1;7550:19;:::i;:::-;7545:24;;7583:19;7600:1;7583:19;:::i;:::-;7578:24;;7621:1;7611:35;;7626:18;;:::i;:::-;7611:35;7668:1;7665;7661:9;7656:14;;7494:182;;;;:::o;7682:118::-;7769:24;7787:5;7769:24;:::i;:::-;7764:3;7757:37;7682:118;;:::o;7806:328::-;7925:4;7963:2;7952:9;7948:18;7940:26;;7976:69;8042:1;8031:9;8027:17;8018:6;7976:69;:::i;:::-;8055:72;8123:2;8112:9;8108:18;8099:6;8055:72;:::i;:::-;7806:328;;;;;:::o;8140:147::-;8241:11;8278:3;8263:18;;8140:147;;;;:::o;8293:146::-;8390:6;8385:3;8380;8367:30;8431:1;8422:6;8417:3;8413:16;8406:27;8293:146;;;:::o;8467:327::-;8581:3;8602:88;8683:6;8678:3;8602:88;:::i;:::-;8595:95;;8700:56;8749:6;8744:3;8737:5;8700:56;:::i;:::-;8781:6;8776:3;8772:16;8765:23;;8467:327;;;;;:::o;8800:291::-;8940:3;8962:103;9061:3;9052:6;9044;8962:103;:::i;:::-;8955:110;;9082:3;9075:10;;8800:291;;;;;:::o;9097:168::-;9180:11;9214:6;9209:3;9202:19;9254:4;9249:3;9245:14;9230:29;;9097:168;;;;:::o;9271:102::-;9312:6;9363:2;9359:7;9354:2;9347:5;9343:14;9339:28;9329:38;;9271:102;;;:::o;9401:314::-;9497:3;9518:70;9581:6;9576:3;9518:70;:::i;:::-;9511:77;;9598:56;9647:6;9642:3;9635:5;9598:56;:::i;:::-;9679:29;9701:6;9679:29;:::i;:::-;9674:3;9670:39;9663:46;;9401:314;;;;;:::o;9721:60::-;9749:3;9770:5;9763:12;;9721:60;;;:::o;9787:140::-;9836:9;9869:52;9887:33;9896:23;9913:5;9896:23;:::i;:::-;9887:33;:::i;:::-;9869:52;:::i;:::-;9856:65;;9787:140;;;:::o;9933:129::-;10019:36;10049:5;10019:36;:::i;:::-;10014:3;10007:49;9933:129;;:::o;10068:437::-;10216:4;10254:2;10243:9;10239:18;10231:26;;10303:9;10297:4;10293:20;10289:1;10278:9;10274:17;10267:47;10331:86;10412:4;10403:6;10395;10331:86;:::i;:::-;10323:94;;10427:71;10494:2;10483:9;10479:18;10470:6;10427:71;:::i;:::-;10068:437;;;;;;:::o;10511:332::-;10632:4;10670:2;10659:9;10655:18;10647:26;;10683:71;10751:1;10740:9;10736:17;10727:6;10683:71;:::i;:::-;10764:72;10832:2;10821:9;10817:18;10808:6;10764:72;:::i;:::-;10511:332;;;;;:::o;10849:90::-;10883:7;10926:5;10919:13;10912:21;10901:32;;10849:90;;;:::o;10945:109::-;11026:21;11041:5;11026:21;:::i;:::-;11021:3;11014:34;10945:109;;:::o;11060:316::-;11173:4;11211:2;11200:9;11196:18;11188:26;;11224:69;11290:1;11279:9;11275:17;11266:6;11224:69;:::i;:::-;11303:66;11365:2;11354:9;11350:18;11341:6;11303:66;:::i;:::-;11060:316;;;;;:::o;11382:98::-;11433:6;11467:5;11461:12;11451:22;;11382:98;;;:::o;11486:246::-;11567:1;11577:113;11591:6;11588:1;11585:13;11577:113;;;11676:1;11671:3;11667:11;11661:18;11657:1;11652:3;11648:11;11641:39;11613:2;11610:1;11606:10;11601:15;;11577:113;;;11724:1;11715:6;11710:3;11706:16;11699:27;11548:184;11486:246;;;:::o;11738:373::-;11824:3;11852:38;11884:5;11852:38;:::i;:::-;11906:70;11969:6;11964:3;11906:70;:::i;:::-;11899:77;;11985:65;12043:6;12038:3;12031:4;12024:5;12020:16;11985:65;:::i;:::-;12075:29;12097:6;12075:29;:::i;:::-;12070:3;12066:39;12059:46;;11828:283;11738:373;;;;:::o;12117:415::-;12254:4;12292:2;12281:9;12277:18;12269:26;;12341:9;12335:4;12331:20;12327:1;12316:9;12312:17;12305:47;12369:76;12440:4;12431:6;12369:76;:::i;:::-;12361:84;;12455:70;12521:2;12510:9;12506:18;12497:6;12455:70;:::i;:::-;12117:415;;;;;:::o;12538:141::-;12594:5;12625:6;12619:13;12610:22;;12641:32;12667:5;12641:32;:::i;:::-;12538:141;;;;:::o;12685:349::-;12754:6;12803:2;12791:9;12782:7;12778:23;12774:32;12771:119;;;12809:79;;:::i;:::-;12771:119;12929:1;12954:63;13009:7;13000:6;12989:9;12985:22;12954:63;:::i;:::-;12944:73;;12900:127;12685:349;;;;:::o;13040:180::-;13088:77;13085:1;13078:88;13185:4;13182:1;13175:15;13209:4;13206:1;13199:15;13226:180;13274:77;13271:1;13264:88;13371:4;13368:1;13361:15;13395:4;13392:1;13385:15;13412:233;13451:3;13474:24;13492:5;13474:24;:::i;:::-;13465:33;;13520:66;13513:5;13510:77;13507:103;;13590:18;;:::i;:::-;13507:103;13637:1;13630:5;13626:13;13619:20;;13412:233;;;:::o;13651:178::-;13791:30;13787:1;13779:6;13775:14;13768:54;13651:178;:::o;13835:366::-;13977:3;13998:67;14062:2;14057:3;13998:67;:::i;:::-;13991:74;;14074:93;14163:3;14074:93;:::i;:::-;14192:2;14187:3;14183:12;14176:19;;13835:366;;;:::o;14207:419::-;14373:4;14411:2;14400:9;14396:18;14388:26;;14460:9;14454:4;14450:20;14446:1;14435:9;14431:17;14424:47;14488:131;14614:4;14488:131;:::i;:::-;14480:139;;14207:419;;;:::o;14632:79::-;14671:7;14700:5;14689:16;;14632:79;;;:::o;14717:157::-;14822:45;14842:24;14860:5;14842:24;:::i;:::-;14822:45;:::i;:::-;14817:3;14810:58;14717:157;;:::o;14880:397::-;15020:3;15035:75;15106:3;15097:6;15035:75;:::i;:::-;15135:2;15130:3;15126:12;15119:19;;15148:75;15219:3;15210:6;15148:75;:::i;:::-;15248:2;15243:3;15239:12;15232:19;;15268:3;15261:10;;14880:397;;;;;:::o;15283:208::-;15322:4;15342:19;15359:1;15342:19;:::i;:::-;15337:24;;15375:19;15392:1;15375:19;:::i;:::-;15370:24;;15418:1;15415;15411:9;15403:17;;15442:18;15436:4;15433:28;15430:54;;;15464:18;;:::i;:::-;15430:54;15283:208;;;;:::o;15497:118::-;15584:24;15602:5;15584:24;:::i;:::-;15579:3;15572:37;15497:118;;:::o;15621:328::-;15740:4;15778:2;15767:9;15763:18;15755:26;;15791:69;15857:1;15846:9;15842:17;15833:6;15791:69;:::i;:::-;15870:72;15938:2;15927:9;15923:18;15914:6;15870:72;:::i;:::-;15621:328;;;;;:::o;15955:324::-;16072:4;16110:2;16099:9;16095:18;16087:26;;16123:69;16189:1;16178:9;16174:17;16165:6;16123:69;:::i;:::-;16202:70;16268:2;16257:9;16253:18;16244:6;16202:70;:::i;:::-;15955:324;;;;;:::o;16285:222::-;16378:4;16416:2;16405:9;16401:18;16393:26;;16429:71;16497:1;16486:9;16482:17;16473:6;16429:71;:::i;:::-;16285:222;;;;:::o;16513:194::-;16553:4;16573:20;16591:1;16573:20;:::i;:::-;16568:25;;16607:20;16625:1;16607:20;:::i;:::-;16602:25;;16651:1;16648;16644:9;16636:17;;16675:1;16669:4;16666:11;16663:37;;;16680:18;;:::i;:::-;16663:37;16513:194;;;;:::o;16713:410::-;16753:7;16776:20;16794:1;16776:20;:::i;:::-;16771:25;;16810:20;16828:1;16810:20;:::i;:::-;16805:25;;16865:1;16862;16858:9;16887:30;16905:11;16887:30;:::i;:::-;16876:41;;17066:1;17057:7;17053:15;17050:1;17047:22;17027:1;17020:9;17000:83;16977:139;;17096:18;;:::i;:::-;16977:139;16761:362;16713:410;;;;:::o;17129:168::-;17269:20;17265:1;17257:6;17253:14;17246:44;17129:168;:::o;17303:366::-;17445:3;17466:67;17530:2;17525:3;17466:67;:::i;:::-;17459:74;;17542:93;17631:3;17542:93;:::i;:::-;17660:2;17655:3;17651:12;17644:19;;17303:366;;;:::o;17675:419::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17928:9;17922:4;17918:20;17914:1;17903:9;17899:17;17892:47;17956:131;18082:4;17956:131;:::i;:::-;17948:139;;17675:419;;;:::o;18100:185::-;18140:1;18157:20;18175:1;18157:20;:::i;:::-;18152:25;;18191:20;18209:1;18191:20;:::i;:::-;18186:25;;18230:1;18220:35;;18235:18;;:::i;:::-;18220:35;18277:1;18274;18270:9;18265:14;;18100:185;;;;:::o;18291:93::-;18327:7;18367:10;18360:5;18356:22;18345:33;;18291:93;;;:::o;18390:200::-;18429:4;18449:19;18466:1;18449:19;:::i;:::-;18444:24;;18482:19;18499:1;18482:19;:::i;:::-;18477:24;;18525:1;18522;18518:9;18510:17;;18549:10;18543:4;18540:20;18537:46;;;18563:18;;:::i;:::-;18537:46;18390:200;;;;:::o;18596:180::-;18644:77;18641:1;18634:88;18741:4;18738:1;18731:15;18765:4;18762:1;18755:15;18782:94;18815:8;18863:5;18859:2;18855:14;18834:35;;18782:94;;;:::o;18882:::-;18921:7;18950:20;18964:5;18950:20;:::i;:::-;18939:31;;18882:94;;;:::o;18982:100::-;19021:7;19050:26;19070:5;19050:26;:::i;:::-;19039:37;;18982:100;;;:::o;19088:157::-;19193:45;19213:24;19231:5;19213:24;:::i;:::-;19193:45;:::i;:::-;19188:3;19181:58;19088:157;;:::o;19251:679::-;19447:3;19462:75;19533:3;19524:6;19462:75;:::i;:::-;19562:2;19557:3;19553:12;19546:19;;19575:75;19646:3;19637:6;19575:75;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19688:75;19759:3;19750:6;19688:75;:::i;:::-;19788:2;19783:3;19779:12;19772:19;;19801:75;19872:3;19863:6;19801:75;:::i;:::-;19901:2;19896:3;19892:12;19885:19;;19921:3;19914:10;;19251:679;;;;;;;:::o;19936:176::-;19968:1;19985:20;20003:1;19985:20;:::i;:::-;19980:25;;20019:20;20037:1;20019:20;:::i;:::-;20014:25;;20058:1;20048:35;;20063:18;;:::i;:::-;20048:35;20104:1;20101;20097:9;20092:14;;19936:176;;;;:::o;20118:222::-;20211:4;20249:2;20238:9;20234:18;20226:26;;20262:71;20330:1;20319:9;20315:17;20306:6;20262:71;:::i;:::-;20118:222;;;;:::o;20346:172::-;20486:24;20482:1;20474:6;20470:14;20463:48;20346:172;:::o;20524:366::-;20666:3;20687:67;20751:2;20746:3;20687:67;:::i;:::-;20680:74;;20763:93;20852:3;20763:93;:::i;:::-;20881:2;20876:3;20872:12;20865:19;;20524:366;;;:::o;20896:419::-;21062:4;21100:2;21089:9;21085:18;21077:26;;21149:9;21143:4;21139:20;21135:1;21124:9;21120:17;21113:47;21177:131;21303:4;21177:131;:::i;:::-;21169:139;;20896:419;;;:::o;21321:332::-;21442:4;21480:2;21469:9;21465:18;21457:26;;21493:71;21561:1;21550:9;21546:17;21537:6;21493:71;:::i;:::-;21574:72;21642:2;21631:9;21627:18;21618:6;21574:72;:::i;:::-;21321:332;;;;;:::o;21659:116::-;21729:21;21744:5;21729:21;:::i;:::-;21722:5;21719:32;21709:60;;21765:1;21762;21755:12;21709:60;21659:116;:::o;21781:137::-;21835:5;21866:6;21860:13;21851:22;;21882:30;21906:5;21882:30;:::i;:::-;21781:137;;;;:::o;21924:345::-;21991:6;22040:2;22028:9;22019:7;22015:23;22011:32;22008:119;;;22046:79;;:::i;:::-;22008:119;22166:1;22191:61;22244:7;22235:6;22224:9;22220:22;22191:61;:::i;:::-;22181:71;;22137:125;21924:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"_generateFee\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_operatorEarningsWithBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helper_createOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506305f5e100600260006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600062000056620001ec60201b6200317c1760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620000a4670de0b6b3a76400006200022a60201b620031b81760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060028060009054906101000a900467ffffffffffffffff16620001a0919062000586565b8160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620001e5600082620002b360201b620032321790919060201c565b5062000876565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c620002219190620005d6565b90508091505090565b6000629896806801000000000000000062000246919062000611565b8211156200028b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028290620006bd565b60405180910390fd5b62989680620002a0836200036660201b60201c565b620002ac91906200070e565b9050919050565b620002c482620003c560201b60201c565b620002d5826200042660201b60201c565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555062000338816200022a60201b620031b81760201c565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008062989680836200037a919062000746565b14620003bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b490620007ce565b60405180910390fd5b819050919050565b620003d681620004a160201b60201c565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643620004699190620005d6565b62000475919062000586565b8260000160189054906101000a900467ffffffffffffffff166200049a9190620007f0565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643620004ff919062000833565b6200050b919062000586565b62000517919062000586565b8260010160009054906101000a900467ffffffffffffffff166200053c9190620007f0565b9050919050565b600067ffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005938262000543565b9150620005a08362000543565b9250828202620005b08162000543565b9150808214620005c557620005c462000557565b5b5092915050565b6000819050919050565b6000620005e382620005cc565b9150620005f083620005cc565b92508282039050818111156200060b576200060a62000557565b5b92915050565b60006200061e82620005cc565b91506200062b83620005cc565b92508282026200063b81620005cc565b9150828204841483151762000655576200065462000557565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000620006a56012836200065c565b9150620006b2826200066d565b602082019050919050565b60006020820190508181036000830152620006d88162000696565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071b82620005cc565b91506200072883620005cc565b9250826200073b576200073a620006df565b5b828204905092915050565b60006200075382620005cc565b91506200076083620005cc565b925082620007735762000772620006df565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000620007b66016836200065c565b9150620007c3826200077e565b602082019050919050565b60006020820190508181036000830152620007e981620007a7565b9050919050565b6000620007fd8262000543565b91506200080a8362000543565b9250828201905067ffffffffffffffff8111156200082d576200082c62000557565b5b92915050565b6000620008408262000543565b91506200084d8362000543565b9250828203905067ffffffffffffffff81111562000870576200086f62000557565b5b92915050565b6149d880620008866000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101215760003560e01c806336058dc4116100ad5780638932cee0116100715780638932cee0146102b25780639d5ceb91146102ce578063b317c35f146102ea578063c90a7eab14610306578063e7780e001461032257610121565b806336058dc41461021257806341bfe2ba1461022e57806345a5605a1461025e5780634bc93b641461027a57806360e7474e1461029657610121565b806323d68a6d116100f457806323d68a6d146101aa578063249eaafa146101c65780632e168e0e146101d057806330eab391146101ec57806335f63767146101f657610121565b80630f5baea81461012657806310e7f40614610142578063190d82e41461017257806322ca0bed1461018e575b600080fd5b610140600480360381019061013b9190613d72565b61032c565b005b61015c60048036038101906101579190613e04565b6104be565b6040516101699190613e73565b60405180910390f35b61018c60048036038101906101879190613ec4565b6108e6565b005b6101a860048036038101906101a39190613d72565b610dcd565b005b6101c460048036038101906101bf9190613d72565b610ea3565b005b6101ce6111a5565b005b6101ea60048036038101906101e59190613d72565b6112eb565b005b6101f4611780565b005b610210600480360381019061020b9190613ec4565b611c3c565b005b61022c60048036038101906102279190613d72565b611c4a565b005b61024860048036038101906102439190613f04565b611ccb565b6040516102559190613e73565b60405180910390f35b61027860048036038101906102739190613d72565b611daa565b005b610294600480360381019061028f9190613d72565b611e2b565b005b6102b060048036038101906102ab9190613fa2565b611e39565b005b6102cc60048036038101906102c79190613d72565b611ebd565b005b6102e860048036038101906102e39190613d72565b6124fb565b005b61030460048036038101906102ff9190613ec4565b612663565b005b610320600480360381019061031b9190613fa2565b612c19565b005b61032a612f3b565b005b6000805490508161033d9190614011565b905060006103496132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16036103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca9061409f565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff16905060006127106103fd61317c565b60020160089054906101000a900467ffffffffffffffff1661271061042291906140ee565b8361042d919061412a565b6104379190614167565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104698467ffffffffffffffff16613304565b6040518363ffffffff1660e01b81526004016104869291906141a7565b600060405180830381600087803b1580156104a057600080fd5b505af11580156104b4573d6000803e3d6000fd5b5050505050505050565b6000808267ffffffffffffffff16141580156104f157506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610528576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053061317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff161115610595576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061059f6132c8565b9050600085856040516105b392919061420f565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161461062a576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063682600801613326565b6106428260080161333c565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516108d5939291906142b2565b60405180910390a350509392505050565b60006108f06132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610a9a8161334a565b6000610aa5846131b8565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610af8576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01826133fe565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d6b578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610dbe9291906142e4565b60405180910390a35050505050565b60008054905081610dde9190614011565b90506000610dea6132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff16148015610e4f57508060010160009054906101000a900460ff165b15610e9f577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260010160009054906101000a900460ff16604051610e96929190614328565b60405180910390a15b5050565b6000610ead6132c8565b90506110528160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16036110d6576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000600260009054906101000a900467ffffffffffffffff16905060006111ca61317c565b60020160109054906101000a900467ffffffffffffffff16905060006111ee6134c6565b905060006111fc8484611ccb565b90503073ffffffffffffffffffffffffffffffffffffffff166310e7f40683836040518363ffffffff1660e01b81526004016112399291906143bf565b6020604051808303816000875af192505050801561127557506040513d601f19601f820116820180604052508101906112729190614404565b60015b61128d57600061128857611287614431565b5b6112e5565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b50505050565b60006112f56132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061149f8161334a565b6114a8816133fe565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156115995760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611743576117428461173d8367ffffffffffffffff16613304565b6135dd565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b600061178a61317c565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b600080549050811015611c0f576000611a0d6132c8565b6006016000808481548110611a2557611a24614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905080608001516040015183611bf991906140ee565b9250508080611c079061448f565b9150506119f6565b508067ffffffffffffffff168260c0015167ffffffffffffffff1614611c3857611c37614431565b5b5050565b611c468282613644565b5050565b60008054905081611c5b9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b8152600401611c969190613e73565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b5050505050565b60008267ffffffffffffffff168267ffffffffffffffff1611611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1a90614523565b60405180910390fd5b600060015442604051602001611d3a929190614564565b6040516020818303038152906040528051906020012060001c905060016000815480929190611d689061448f565b919050555060008190508460018686611d819190614590565b611d8b91906140ee565b82611d969190614011565b611da091906140ee565b9250505092915050565b60008054905081611dbb9190614011565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611df69190613e73565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b5050505050565b611e36816000613644565b50565b60008054905082611e4a9190614011565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611e879291906145db565b600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050505050565b6000611ec76132c8565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506120718161334a565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603612187576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806121b05750806040015167ffffffffffffffff1642115b156121e7576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef61317c565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612228826000015167ffffffffffffffff16613304565b1115612260576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612269826133fe565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436124df856000015167ffffffffffffffff16613304565b6040516124ed9291906142e4565b60405180910390a350505050565b600160008054905061250d9190614590565b816125189190614011565b600161252491906140ee565b905060006125306132c8565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff161480156125d95750600061258c6132c8565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b1561265f577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826126086132c8565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff16604051612656929190614604565b60405180910390a15b5050565b600061266d6132c8565b90506128128160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600061281c61317c565b90506000831415801561283c57506305f5e10067ffffffffffffffff1683105b15612873576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156128cf576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff169050600061291f856131b8565b90508067ffffffffffffffff168267ffffffffffffffff160361296e576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015612993575060008267ffffffffffffffff16145b156129ca576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106129f591906140ee565b84612a00919061412a565b612a0a9190614167565b90508067ffffffffffffffff168267ffffffffffffffff161115612a5a576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642612a9991906140ee565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642612ae591906140ee565b612aef91906140ee565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051612c089291906142e4565b60405180910390a350505050505050565b6000612c236132c8565b9050612dc88160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061334a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e465760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612e8c565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612f2e919061462d565b60405180910390a2505050565b60005b600080549050811015613179576000612f556132c8565b6006016000808481548110612f6d57612f6c614460565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff1611806131585750600081608001516040015167ffffffffffffffff16145b61316557613164614431565b5b5080806131719061448f565b915050612f3e565b50565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6131af9190614648565b90508091505090565b600062989680680100000000000000006131d2919061467c565b821115613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b9061470a565b60405180910390fd5b6298968061322183613a83565b61322b919061472a565b9050919050565b61323b82613add565b61324482613b36565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061329a816131b8565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6132fb9190614648565b90508091505090565b6000629896808267ffffffffffffffff1661331f919061467c565b9050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603613392576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000816020015182608001516000015143613419919061476b565b63ffffffff16613429919061412a565b905080826080015160200181815161344191906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff1681613474919061412a565b826080015160400181815161348991906140ee565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156134e5576134e46147a3565b5b6040519080825280601f01601f1916602001820160405280156135175781602001600182028036833780820191505090505b50905060005b60308110156135bd57610100600154423384604051602001613542949392919061481a565b6040516020818303038152906040528051906020012060001c6135659190614868565b60f81b82828151811061357b5761357a614460565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806135b59061448f565b91505061351d565b50600160008154809291906135d19061448f565b91905055508091505090565b6135e73382613bab565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516136389190614899565b60405180910390a35050565b600061364e6132c8565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506137f88161334a565b613801816133fe565b60008061380d856131b8565b90506000851480156138315750600083608001516040015167ffffffffffffffff16115b156138465782608001516040015191506138b2565b60008511801561387257508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b1561387f578091506138b1565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516138c89190614590565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613a7b86613a768467ffffffffffffffff16613304565b6135dd565b505050505050565b6000806298968083613a959190614868565b14613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614900565b60405180910390fd5b819050919050565b613ae681613c8e565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613b779190614648565b613b81919061412a565b8260000160189054906101000a900467ffffffffffffffff16613ba491906140ee565b9050919050565b613bb36132c8565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401613c11929190614920565b6020604051808303816000875af1158015613c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c549190614975565b613c8a576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643613cea9190614590565b613cf4919061412a565b613cfe919061412a565b8260010160009054906101000a900467ffffffffffffffff16613d2191906140ee565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b613d4f81613d32565b8114613d5a57600080fd5b50565b600081359050613d6c81613d46565b92915050565b600060208284031215613d8857613d87613d28565b5b6000613d9684828501613d5d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613dc457613dc3613d9f565b5b8235905067ffffffffffffffff811115613de157613de0613da4565b5b602083019150836001820283011115613dfd57613dfc613da9565b5b9250929050565b600080600060408486031215613e1d57613e1c613d28565b5b600084013567ffffffffffffffff811115613e3b57613e3a613d2d565b5b613e4786828701613dae565b93509350506020613e5a86828701613d5d565b9150509250925092565b613e6d81613d32565b82525050565b6000602082019050613e886000830184613e64565b92915050565b6000819050919050565b613ea181613e8e565b8114613eac57600080fd5b50565b600081359050613ebe81613e98565b92915050565b60008060408385031215613edb57613eda613d28565b5b6000613ee985828601613d5d565b9250506020613efa85828601613eaf565b9150509250929050565b60008060408385031215613f1b57613f1a613d28565b5b6000613f2985828601613d5d565b9250506020613f3a85828601613d5d565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6f82613f44565b9050919050565b613f7f81613f64565b8114613f8a57600080fd5b50565b600081359050613f9c81613f76565b92915050565b60008060408385031215613fb957613fb8613d28565b5b6000613fc785828601613d5d565b9250506020613fd885828601613f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061401c82613d32565b915061402783613d32565b92508261403757614036613fe2565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b6000614089601883614042565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140f982613d32565b915061410483613d32565b9250828201905067ffffffffffffffff811115614124576141236140bf565b5b92915050565b600061413582613d32565b915061414083613d32565b925082820261414e81613d32565b91508082146141605761415f6140bf565b5b5092915050565b600061417282613d32565b915061417d83613d32565b92508261418d5761418c613fe2565b5b828204905092915050565b6141a181613e8e565b82525050565b60006040820190506141bc6000830185613e64565b6141c96020830184614198565b9392505050565b600081905092915050565b82818337600083830152505050565b60006141f683856141d0565b93506142038385846141db565b82840190509392505050565b600061421c8284866141ea565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b60006142568385614228565b93506142638385846141db565b61426c83614239565b840190509392505050565b6000819050919050565b600061429c61429761429284613d32565b614277565b613e8e565b9050919050565b6142ac81614281565b82525050565b600060408201905081810360008301526142cd81858761424a565b90506142dc60208301846142a3565b949350505050565b60006040820190506142f96000830185614198565b6143066020830184614198565b9392505050565b60008115159050919050565b6143228161430d565b82525050565b600060408201905061433d6000830185613e64565b61434a6020830184614319565b9392505050565b600081519050919050565b60005b8381101561437a57808201518184015260208101905061435f565b60008484015250505050565b600061439182614351565b61439b8185614228565b93506143ab81856020860161435c565b6143b481614239565b840191505092915050565b600060408201905081810360008301526143d98185614386565b90506143e86020830184613e64565b9392505050565b6000815190506143fe81613d46565b92915050565b60006020828403121561441a57614419613d28565b5b6000614428848285016143ef565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061449a82613e8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144cc576144cb6140bf565b5b600182019050919050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b600061450d601c83614042565b9150614518826144d7565b602082019050919050565b6000602082019050818103600083015261453c81614500565b9050919050565b6000819050919050565b61455e61455982613e8e565b614543565b82525050565b6000614570828561454d565b602082019150614580828461454d565b6020820191508190509392505050565b600061459b82613d32565b91506145a683613d32565b9250828203905067ffffffffffffffff8111156145c6576145c56140bf565b5b92915050565b6145d581613f64565b82525050565b60006040820190506145f06000830185613e64565b6145fd60208301846145cc565b9392505050565b60006040820190506146196000830185613e64565b6146266020830184613e64565b9392505050565b600060208201905061464260008301846145cc565b92915050565b600061465382613e8e565b915061465e83613e8e565b9250828203905081811115614676576146756140bf565b5b92915050565b600061468782613e8e565b915061469283613e8e565b92508282026146a081613e8e565b915082820484148315176146b7576146b66140bf565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006146f4601283614042565b91506146ff826146be565b602082019050919050565b60006020820190508181036000830152614723816146e7565b9050919050565b600061473582613e8e565b915061474083613e8e565b9250826147505761474f613fe2565b5b828204905092915050565b600063ffffffff82169050919050565b60006147768261475b565b91506147818361475b565b9250828203905063ffffffff81111561479d5761479c6140bf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160601b9050919050565b60006147ea826147d2565b9050919050565b60006147fc826147df565b9050919050565b61481461480f82613f64565b6147f1565b82525050565b6000614826828761454d565b602082019150614836828661454d565b6020820191506148468285614803565b601482019150614856828461454d565b60208201915081905095945050505050565b600061487382613e8e565b915061487e83613e8e565b92508261488e5761488d613fe2565b5b828206905092915050565b60006020820190506148ae6000830184614198565b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006148ea601683614042565b91506148f5826148b4565b602082019050919050565b60006020820190508181036000830152614919816148dd565b9050919050565b600060408201905061493560008301856145cc565b6149426020830184614198565b9392505050565b6149528161430d565b811461495d57600080fd5b50565b60008151905061496f81614949565b92915050565b60006020828403121561498b5761498a613d28565b5b600061499984828501614960565b9150509291505056fea2646970667358221220f99e8f4fa729e779d463679b9bed25a4a66fd70773bc3ab749b2f798b61147d264736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2119:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2119:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad36871bcb27234877428f1a718e8710818a6e6c49269b39ee983905b9c381c064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7474:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:988;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5376:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1772:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6469:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4379:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3069:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:988;869:9;901:1;894:3;:8;;;;:38;;;;;450:11;906:26;;:3;:26;;;894:38;890:103;;;955:27;;;;;;;;;;;;;;890:103;1012:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1006:46;;:3;:46;;;1002:112;;;1075:28;;;;;;;;;;;;;;1002:112;1124:21;1148:17;:15;:17::i;:::-;1124:41;;1176:16;1205:9;;1195:20;;;;;;;:::i;:::-;;;;;;;;1176:39;;1257:1;1229;:14;;:24;1244:8;1229:24;;;;;;;;;;;;;;;;;;;;;:29;;;1225:81;;1267:39;;;;;;;;;;;;;;1225:81;1317:28;:1;:16;;:26;:28::i;:::-;1367:26;:1;:16;;:24;:26::i;:::-;1355:39;;1422:237;;;;;;;;1593:1;1422:237;;;;;;1613:3;1422:237;;;;;;1452:10;1422:237;;;;;;1643:5;1422:237;;;;;;1486:77;;;;;;;;1526:12;1486:77;;;;;;1548:1;1486:77;;;;;;1560:1;1486:77;;;;;1422:237;;;1404:1;:11;;:15;1416:2;1404:15;;;;;;;;;;;;;;;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:2;1669:1;:14;;:24;1684:8;1669:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1732:10;1714:45;;1728:2;1714:45;;;1744:9;;1755:3;1714:45;;;;;;;;:::i;:::-;;;;;;;;880:886;;778:988;;;;;:::o;5787:676::-;5874:21;5898:17;:15;:17::i;:::-;5874:41;;5925:24;5952:1;:11;;:23;5964:10;5952:23;;;;;;;;;;;;;;;5925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5985:21;:8;:19;:21::i;:::-;6017:19;6039:12;:3;:10;:12::i;:::-;6017:34;;6081:8;:12;;;6065:28;;:12;:28;;;6061:64;;6102:23;;;;;;;;;;;;;;6061:64;6136:25;:8;:23;:25::i;:::-;6186:12;6171:8;:12;;:27;;;;;;;;;;;6234:8;6208:1;:11;;:23;6220:10;6208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6318:1;6257;:27;;:39;6285:10;6257:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;6253:126;;6340:1;:27;;:39;6368:10;6340:39;;;;;;;;;;;;;;;;6333:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:126;6426:10;6394:62;;6414:10;6394:62;;;6438:12;6452:3;6394:62;;;;;;;:::i;:::-;;;;;;;;5864:599;;;5787:676;;:::o;5376:405::-;5458:21;5482:17;:15;:17::i;:::-;5458:41;;5509:36;:1;:11;;:23;5521:10;5509:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5621:1;5560;:27;;:39;5588:10;5560:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5556:90;;5631:15;;;;;;;;;;;;;;5556:90;5664:1;:27;;:39;5692:10;5664:39;;;;;;;;;;;;;;;;5657:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:10;5719:55;;5751:10;5719:55;;;;;;;;;;;;5448:333;5376:405;:::o;1772:799::-;1843:21;1867:17;:15;:17::i;:::-;1843:41;;1894:24;1921:1;:11;;:23;1933:10;1921:23;;;;;;;;;;;;;;;1894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:21;:8;:19;:21::i;:::-;1986:25;:8;:23;:25::i;:::-;2021:21;2045:8;:17;;;:25;;;2021:49;;2107:1;2081:8;:17;;;:23;;:27;;;;;;;;;;;2146:1;2118:8;:17;;;:25;;:29;;;;;;;;;;;2183:1;2157:8;:23;;:27;;;;;;;;;;;2209:1;2194:8;:12;;:16;;;;;;;;;;;2225:8;:20;;;2221:132;;;2284:5;2261:8;:20;;:28;;;;;;;;;;;2310:1;:20;;:32;2331:10;2310:32;;;;;;;;;;;;;;;;2303:39;;;;;;;;;;;2221:132;2388:8;2362:1;:11;;:23;2374:10;2362:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:1;2411:14;:18;;;2407:116;;;2445:67;2476:10;2488:23;:14;:21;;;:23::i;:::-;2445:30;:67::i;:::-;2407:116;2553:10;2537:27;;;;;;;;;;;;1833:738;;;1772:799;:::o;6469:149::-;6566:45;6592:10;6604:6;6566:25;:45::i;:::-;6469:149;;:::o;6624:131::-;6708:40;6734:10;6746:1;6708:25;:40::i;:::-;6624:131;:::o;4379:991::-;4454:21;4478:17;:15;:17::i;:::-;4454:41;;4505:24;4532:1;:11;;:23;4544:10;4532:23;;;;;;;;;;;;;;;4505:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4565:21;:8;:19;:21::i;:::-;4597:48;4648:1;:27;;:39;4676:10;4648:39;;;;;;;;;;;;;;;4597:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:1;4702:16;:34;;;:39;;;4698:67;;4750:15;;;;;;;;;;;;;;4698:67;4811:16;:34;;;4793:52;;:15;:52;:106;;;;4867:16;:32;;;4849:50;;:15;:50;4793:106;4776:194;;;4931:28;;;;;;;;;;;;;;4776:194;5016:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4984:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4980:97;;;5065:12;;;;;;;;;;;;;;4980:97;5088:25;:8;:23;:25::i;:::-;5138:16;:20;;;5123:8;:12;;:35;;;;;;;;;;;5194:8;5168:1;:11;;:23;5180:10;5168:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:1;:27;;:39;5248:10;5220:39;;;;;;;;;;;;;;;;5213:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:10;5275:88;;5295:10;5275:88;;;5319:12;5333:29;:16;:20;;;:27;;;:29::i;:::-;5275:88;;;;;;;:::i;:::-;;;;;;;;4444:926;;;4379:991;:::o;3069:1304::-;3157:21;3181:17;:15;:17::i;:::-;3157:41;;3208:36;:1;:11;;:23;3220:10;3208:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3255:26;3284:25;:23;:25::i;:::-;3255:54;;3331:1;3324:3;:8;;:38;;;;;450:11;3336:26;;:3;:26;3324:38;3320:62;;;3371:11;;;;;;;;;;;;;;3320:62;3402:2;:17;;;;;;;;;;;;3396:23;;:3;:23;3392:48;;;3428:12;;;;;;;;;;;;;;3392:48;3451:18;3472:1;:11;;:23;3484:10;3472:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3451:48;;3509:16;3528:12;:3;:10;:12::i;:::-;3509:31;;3570:9;3555:24;;:11;:24;;;3551:188;;3602:25;;;;;;;;;;;;;;3551:188;3661:1;3648:9;:14;;;;:34;;;;;3681:1;3666:11;:16;;;3648:34;3644:95;;;3705:23;;;;;;;;;;;;;;3644:95;3837:20;510:6;3895:2;:25;;;;;;;;;;;;510:6;3876:44;;;;:::i;:::-;3861:11;:60;;;;:::i;:::-;3860:81;;;;:::i;:::-;3837:104;;3968:13;3956:25;;:9;:25;;;3952:63;;;3990:25;;;;;;;;;;;;;;3952:63;4068:221;;;;;;;;4106:9;4068:221;;;;;;4155:2;:27;;;;;;;;;;;;4136:15;4129:53;;;;:::i;:::-;4068:221;;;;;;4252:2;:27;;;;;;;;;;;;4222:2;:27;;;;;;;;;;;;4203:15;4196:53;;;;:::i;:::-;:83;;;;:::i;:::-;4068:221;;;;;4026:1;:27;;:39;4054:10;4026:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4336:10;4304:62;;4324:10;4304:62;;;4348:12;4362:3;4304:62;;;;;;;:::i;:::-;;;;;;;;3147:1226;;;;;3069:1304;;:::o;2577:486::-;2666:21;2690:17;:15;:17::i;:::-;2666:41;;2717:36;:1;:11;;:23;2729:10;2717:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2791:1;2768:25;;:11;:25;;;2764:172;;2847:5;2809:1;:11;;:23;2821:10;2809:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2764:172;;;2921:4;2883:1;:11;;:23;2895:10;2883:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2764:172;2981:11;2946:1;:20;;:32;2967:10;2946:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3032:10;3007:49;;;3044:11;3007:49;;;;;;:::i;:::-;;;;;;;;2656:407;2577:486;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:206:8:-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7623:207:9:-;7716:43;7740:10;7752:6;7716:23;:43::i;:::-;7804:10;7774:49;;7792:10;7774:49;;;7816:6;7774:49;;;;;;:::i;:::-;;;;;;;;7623:207;;:::o;6786:831::-;6874:21;6898:17;:15;:17::i;:::-;6874:41;;6925:24;6952:1;:11;;:23;6964:10;6952:23;;;;;;;;;;;;;;;6925:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:21;:8;:19;:21::i;:::-;7017:25;:8;:23;:25::i;:::-;7053:22;7085:19;7107:15;:6;:13;:15::i;:::-;7085:37;;7147:1;7137:6;:11;:44;;;;;7180:1;7152:8;:17;;;:25;;;:29;;;7137:44;7133:299;;;7215:8;:17;;;:25;;;7197:43;;7133:299;;;7270:1;7261:6;:10;:55;;;;;7304:12;7275:41;;:8;:17;;;:25;;;:41;;;;7261:55;7257:175;;;7350:12;7332:30;;7257:175;;;7400:21;;;;;;;;;;;;;;7257:175;7133:299;7471:15;7442:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7523:8;7497:1;:11;;:23;7509:10;7497:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:68;7573:10;7585:24;:15;:22;;;:24::i;:::-;7542:30;:68::i;:::-;6864:753;;;;6786:831;;:::o;488:169:8:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;301:198:3:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:101::-;1310:7;1350:18;1343:5;1339:30;1328:41;;1274:101;;;:::o;1381:120::-;1453:23;1470:5;1453:23;:::i;:::-;1446:5;1443:34;1433:62;;1491:1;1488;1481:12;1433:62;1381:120;:::o;1507:137::-;1552:5;1590:6;1577:20;1568:29;;1606:32;1632:5;1606:32;:::i;:::-;1507:137;;;;:::o;1650:670::-;1728:6;1736;1744;1793:2;1781:9;1772:7;1768:23;1764:32;1761:119;;;1799:79;;:::i;:::-;1761:119;1947:1;1936:9;1932:17;1919:31;1977:18;1969:6;1966:30;1963:117;;;1999:79;;:::i;:::-;1963:117;2112:64;2168:7;2159:6;2148:9;2144:22;2112:64;:::i;:::-;2094:82;;;;1890:296;2225:2;2251:52;2295:7;2286:6;2275:9;2271:22;2251:52;:::i;:::-;2241:62;;2196:117;1650:670;;;;;:::o;2326:115::-;2411:23;2428:5;2411:23;:::i;:::-;2406:3;2399:36;2326:115;;:::o;2447:218::-;2538:4;2576:2;2565:9;2561:18;2553:26;;2589:69;2655:1;2644:9;2640:17;2631:6;2589:69;:::i;:::-;2447:218;;;;:::o;2671:77::-;2708:7;2737:5;2726:16;;2671:77;;;:::o;2754:122::-;2827:24;2845:5;2827:24;:::i;:::-;2820:5;2817:35;2807:63;;2866:1;2863;2856:12;2807:63;2754:122;:::o;2882:139::-;2928:5;2966:6;2953:20;2944:29;;2982:33;3009:5;2982:33;:::i;:::-;2882:139;;;;:::o;3027:472::-;3094:6;3102;3151:2;3139:9;3130:7;3126:23;3122:32;3119:119;;;3157:79;;:::i;:::-;3119:119;3277:1;3302:52;3346:7;3337:6;3326:9;3322:22;3302:52;:::i;:::-;3292:62;;3248:116;3403:2;3429:53;3474:7;3465:6;3454:9;3450:22;3429:53;:::i;:::-;3419:63;;3374:118;3027:472;;;;;:::o;3505:327::-;3563:6;3612:2;3600:9;3591:7;3587:23;3583:32;3580:119;;;3618:79;;:::i;:::-;3580:119;3738:1;3763:52;3807:7;3798:6;3787:9;3783:22;3763:52;:::i;:::-;3753:62;;3709:116;3505:327;;;;:::o;3838:126::-;3875:7;3915:42;3908:5;3904:54;3893:65;;3838:126;;;:::o;3970:96::-;4007:7;4036:24;4054:5;4036:24;:::i;:::-;4025:35;;3970:96;;;:::o;4072:122::-;4145:24;4163:5;4145:24;:::i;:::-;4138:5;4135:35;4125:63;;4184:1;4181;4174:12;4125:63;4072:122;:::o;4200:139::-;4246:5;4284:6;4271:20;4262:29;;4300:33;4327:5;4300:33;:::i;:::-;4200:139;;;;:::o;4345:472::-;4412:6;4420;4469:2;4457:9;4448:7;4444:23;4440:32;4437:119;;;4475:79;;:::i;:::-;4437:119;4595:1;4620:52;4664:7;4655:6;4644:9;4640:22;4620:52;:::i;:::-;4610:62;;4566:116;4721:2;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4692:118;4345:472;;;;;:::o;4823:147::-;4924:11;4961:3;4946:18;;4823:147;;;;:::o;4976:146::-;5073:6;5068:3;5063;5050:30;5114:1;5105:6;5100:3;5096:16;5089:27;4976:146;;;:::o;5150:327::-;5264:3;5285:88;5366:6;5361:3;5285:88;:::i;:::-;5278:95;;5383:56;5432:6;5427:3;5420:5;5383:56;:::i;:::-;5464:6;5459:3;5455:16;5448:23;;5150:327;;;;;:::o;5483:291::-;5623:3;5645:103;5744:3;5735:6;5727;5645:103;:::i;:::-;5638:110;;5765:3;5758:10;;5483:291;;;;;:::o;5780:168::-;5863:11;5897:6;5892:3;5885:19;5937:4;5932:3;5928:14;5913:29;;5780:168;;;;:::o;5954:102::-;5995:6;6046:2;6042:7;6037:2;6030:5;6026:14;6022:28;6012:38;;5954:102;;;:::o;6084:314::-;6180:3;6201:70;6264:6;6259:3;6201:70;:::i;:::-;6194:77;;6281:56;6330:6;6325:3;6318:5;6281:56;:::i;:::-;6362:29;6384:6;6362:29;:::i;:::-;6357:3;6353:39;6346:46;;6084:314;;;;;:::o;6404:60::-;6432:3;6453:5;6446:12;;6404:60;;;:::o;6470:140::-;6519:9;6552:52;6570:33;6579:23;6596:5;6579:23;:::i;:::-;6570:33;:::i;:::-;6552:52;:::i;:::-;6539:65;;6470:140;;;:::o;6616:129::-;6702:36;6732:5;6702:36;:::i;:::-;6697:3;6690:49;6616:129;;:::o;6751:437::-;6899:4;6937:2;6926:9;6922:18;6914:26;;6986:9;6980:4;6976:20;6972:1;6961:9;6957:17;6950:47;7014:86;7095:4;7086:6;7078;7014:86;:::i;:::-;7006:94;;7110:71;7177:2;7166:9;7162:18;7153:6;7110:71;:::i;:::-;6751:437;;;;;;:::o;7194:118::-;7281:24;7299:5;7281:24;:::i;:::-;7276:3;7269:37;7194:118;;:::o;7318:332::-;7439:4;7477:2;7466:9;7462:18;7454:26;;7490:71;7558:1;7547:9;7543:17;7534:6;7490:71;:::i;:::-;7571:72;7639:2;7628:9;7624:18;7615:6;7571:72;:::i;:::-;7318:332;;;;;:::o;7656:180::-;7704:77;7701:1;7694:88;7801:4;7798:1;7791:15;7825:4;7822:1;7815:15;7842:205;7881:3;7900:19;7917:1;7900:19;:::i;:::-;7895:24;;7933:19;7950:1;7933:19;:::i;:::-;7928:24;;7975:1;7972;7968:9;7961:16;;7998:18;7993:3;7990:27;7987:53;;;8020:18;;:::i;:::-;7987:53;7842:205;;;;:::o;8053:275::-;8092:7;8115:19;8132:1;8115:19;:::i;:::-;8110:24;;8148:19;8165:1;8148:19;:::i;:::-;8143:24;;8202:1;8199;8195:9;8224:29;8241:11;8224:29;:::i;:::-;8213:40;;8285:11;8276:7;8273:24;8263:58;;8301:18;;:::i;:::-;8263:58;8100:228;8053:275;;;;:::o;8334:180::-;8382:77;8379:1;8372:88;8479:4;8476:1;8469:15;8503:4;8500:1;8493:15;8520:182;8559:1;8576:19;8593:1;8576:19;:::i;:::-;8571:24;;8609:19;8626:1;8609:19;:::i;:::-;8604:24;;8647:1;8637:35;;8652:18;;:::i;:::-;8637:35;8694:1;8691;8687:9;8682:14;;8520:182;;;;:::o;8708:118::-;8795:24;8813:5;8795:24;:::i;:::-;8790:3;8783:37;8708:118;;:::o;8832:222::-;8925:4;8963:2;8952:9;8948:18;8940:26;;8976:71;9044:1;9033:9;9029:17;9020:6;8976:71;:::i;:::-;8832:222;;;;:::o;9060:194::-;9100:4;9120:20;9138:1;9120:20;:::i;:::-;9115:25;;9154:20;9172:1;9154:20;:::i;:::-;9149:25;;9198:1;9195;9191:9;9183:17;;9222:1;9216:4;9213:11;9210:37;;;9227:18;;:::i;:::-;9210:37;9060:194;;;;:::o;9260:410::-;9300:7;9323:20;9341:1;9323:20;:::i;:::-;9318:25;;9357:20;9375:1;9357:20;:::i;:::-;9352:25;;9412:1;9409;9405:9;9434:30;9452:11;9434:30;:::i;:::-;9423:41;;9613:1;9604:7;9600:15;9597:1;9594:22;9574:1;9567:9;9547:83;9524:139;;9643:18;;:::i;:::-;9524:139;9308:362;9260:410;;;;:::o;9676:169::-;9760:11;9794:6;9789:3;9782:19;9834:4;9829:3;9825:14;9810:29;;9676:169;;;;:::o;9851:168::-;9991:20;9987:1;9979:6;9975:14;9968:44;9851:168;:::o;10025:366::-;10167:3;10188:67;10252:2;10247:3;10188:67;:::i;:::-;10181:74;;10264:93;10353:3;10264:93;:::i;:::-;10382:2;10377:3;10373:12;10366:19;;10025:366;;;:::o;10397:419::-;10563:4;10601:2;10590:9;10586:18;10578:26;;10650:9;10644:4;10640:20;10636:1;10625:9;10621:17;10614:47;10678:131;10804:4;10678:131;:::i;:::-;10670:139;;10397:419;;;:::o;10822:185::-;10862:1;10879:20;10897:1;10879:20;:::i;:::-;10874:25;;10913:20;10931:1;10913:20;:::i;:::-;10908:25;;10952:1;10942:35;;10957:18;;:::i;:::-;10942:35;10999:1;10996;10992:9;10987:14;;10822:185;;;;:::o;11013:93::-;11049:7;11089:10;11082:5;11078:22;11067:33;;11013:93;;;:::o;11112:200::-;11151:4;11171:19;11188:1;11171:19;:::i;:::-;11166:24;;11204:19;11221:1;11204:19;:::i;:::-;11199:24;;11247:1;11244;11240:9;11232:17;;11271:10;11265:4;11262:20;11259:46;;;11285:18;;:::i;:::-;11259:46;11112:200;;;;:::o;11318:222::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11462:71;11530:1;11519:9;11515:17;11506:6;11462:71;:::i;:::-;11318:222;;;;:::o;11546:208::-;11585:4;11605:19;11622:1;11605:19;:::i;:::-;11600:24;;11638:19;11655:1;11638:19;:::i;:::-;11633:24;;11681:1;11678;11674:9;11666:17;;11705:18;11699:4;11696:28;11693:54;;;11727:18;;:::i;:::-;11693:54;11546:208;;;;:::o;11760:176::-;11792:1;11809:20;11827:1;11809:20;:::i;:::-;11804:25;;11843:20;11861:1;11843:20;:::i;:::-;11838:25;;11882:1;11872:35;;11887:18;;:::i;:::-;11872:35;11928:1;11925;11921:9;11916:14;;11760:176;;;;:::o;11942:172::-;12082:24;12078:1;12070:6;12066:14;12059:48;11942:172;:::o;12120:366::-;12262:3;12283:67;12347:2;12342:3;12283:67;:::i;:::-;12276:74;;12359:93;12448:3;12359:93;:::i;:::-;12477:2;12472:3;12468:12;12461:19;;12120:366;;;:::o;12492:419::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12492:419;;;:::o;12917:332::-;13038:4;13076:2;13065:9;13061:18;13053:26;;13089:71;13157:1;13146:9;13142:17;13133:6;13089:71;:::i;:::-;13170:72;13238:2;13227:9;13223:18;13214:6;13170:72;:::i;:::-;12917:332;;;;;:::o;13255:90::-;13289:7;13332:5;13325:13;13318:21;13307:32;;13255:90;;;:::o;13351:116::-;13421:21;13436:5;13421:21;:::i;:::-;13414:5;13411:32;13401:60;;13457:1;13454;13447:12;13401:60;13351:116;:::o;13473:137::-;13527:5;13558:6;13552:13;13543:22;;13574:30;13598:5;13574:30;:::i;:::-;13473:137;;;;:::o;13616:345::-;13683:6;13732:2;13720:9;13711:7;13707:23;13703:32;13700:119;;;13738:79;;:::i;:::-;13700:119;13858:1;13883:61;13936:7;13927:6;13916:9;13912:22;13883:61;:::i;:::-;13873:71;;13829:125;13616:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"fee\",\"type\":\"uint64\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613233806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806335f637671161006657806335f637671461011c5780634bc93b64146101385780638932cee014610154578063b317c35f14610170578063c90a7eab1461018c57610093565b806310e7f40614610098578063190d82e4146100c857806323d68a6d146100e45780632e168e0e14610100575b600080fd5b6100b260048036038101906100ad9190612ac6565b6101a8565b6040516100bf9190612b35565b60405180910390f35b6100e260048036038101906100dd9190612b86565b6105d0565b005b6100fe60048036038101906100f99190612bc6565b610ab7565b005b61011a60048036038101906101159190612bc6565b610db9565b005b61013660048036038101906101319190612b86565b61124e565b005b610152600480360381019061014d9190612bc6565b61125c565b005b61016e60048036038101906101699190612bc6565b61126a565b005b61018a60048036038101906101859190612b86565b6118a8565b005b6101a660048036038101906101a19190612c51565b611e5e565b005b6000808267ffffffffffffffff16141580156101db57506305f5e10067ffffffffffffffff168267ffffffffffffffff16105b15610212576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16111561027f576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006102896121bc565b90506000858560405161029d929190612cd0565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610314576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610320826008016121f8565b61032c8260080161220e565b92506040518060a00160405280600063ffffffff1681526020018567ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516105bf93929190612d73565b60405180910390a350509392505050565b60006105da6121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506107848161221c565b600061078f846122d0565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106107e2576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107eb8261234a565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008360050160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610a55578260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550505b8467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4387604051610aa8929190612db4565b60405180910390a35050505050565b6000610ac16121bc565b9050610c668160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610cea576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b6000610dc36121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f6d8161221c565b610f768161234a565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff16815250508160600151156110675760008260600190151590811515815250508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505090505060008167ffffffffffffffff161115611211576112108461120b8367ffffffffffffffff16612412565b612434565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b611258828261249b565b5050565b61126781600061249b565b50565b60006112746121bc565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061141e8161221c565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611534576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff1642108061155d5750806040015167ffffffffffffffff1642115b15611594576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159c612180565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166115d5826000015167ffffffffffffffff16612412565b111561160d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116168261234a565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361188c856000015167ffffffffffffffff16612412565b60405161189a929190612db4565b60405180910390a350505050565b60006118b26121bc565b9050611a578160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b6000611a61612180565b905060008314158015611a8157506305f5e10067ffffffffffffffff1683105b15611ab8576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115611b14576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff1690506000611b64856122d0565b90508067ffffffffffffffff168267ffffffffffffffff1603611bb3576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611bd8575060008267ffffffffffffffff16145b15611c0f576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff16612710611c3a9190612e0c565b84611c459190612e48565b611c4f9190612eb4565b90508067ffffffffffffffff168267ffffffffffffffff161115611c9f576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff1642611cde9190612e0c565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff1642611d2a9190612e0c565b611d349190612e0c565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e3273584389604051611e4d929190612db4565b60405180910390a350505050505050565b6000611e686121bc565b905061200d8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061221c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361208b5760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506120d1565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe836040516121739190612ef4565b60405180910390a2505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6121b39190612f0f565b90508091505090565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6121ef9190612f0f565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b600081608001516000015163ffffffff1603612264576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146122cd576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122ea9190612f43565b82111561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390612fe2565b60405180910390fd5b62989680612339836128da565b6123439190613002565b9050919050565b60008160200151826080015160000151436123659190613043565b63ffffffff166123759190612e48565b905080826080015160200181815161238d9190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816123c09190612e48565b82608001516040018181516123d59190612e0c565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff1661242d9190612f43565b9050919050565b61243e3382612934565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d608360405161248f919061307b565b60405180910390a35050565b60006124a56121bc565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061264f8161221c565b6126588161234a565b600080612664856122d0565b90506000851480156126885750600083608001516040015167ffffffffffffffff16115b1561269d578260800151604001519150612709565b6000851180156126c957508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156126d657809150612708565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81836080015160400181815161271f9190613096565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506128d2866128cd8467ffffffffffffffff16612412565b612434565b505050505050565b60008062989680836128ec91906130d2565b1461292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129239061314f565b60405180910390fd5b819050919050565b61293c6121bc565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161299a92919061316f565b6020604051808303816000875af11580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd91906131d0565b612a13576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612a4657612a45612a21565b5b8235905067ffffffffffffffff811115612a6357612a62612a26565b5b602083019150836001820283011115612a7f57612a7e612a2b565b5b9250929050565b600067ffffffffffffffff82169050919050565b612aa381612a86565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b600080600060408486031215612adf57612ade612a17565b5b600084013567ffffffffffffffff811115612afd57612afc612a1c565b5b612b0986828701612a30565b93509350506020612b1c86828701612ab1565b9150509250925092565b612b2f81612a86565b82525050565b6000602082019050612b4a6000830184612b26565b92915050565b6000819050919050565b612b6381612b50565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c612a17565b5b6000612bab85828601612ab1565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb612a17565b5b6000612bea84828501612ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1e82612bf3565b9050919050565b612c2e81612c13565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b60008060408385031215612c6857612c67612a17565b5b6000612c7685828601612ab1565b9250506020612c8785828601612c3c565b9150509250929050565b600081905092915050565b82818337600083830152505050565b6000612cb78385612c91565b9350612cc4838584612c9c565b82840190509392505050565b6000612cdd828486612cab565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612d178385612ce9565b9350612d24838584612c9c565b612d2d83612cfa565b840190509392505050565b6000819050919050565b6000612d5d612d58612d5384612a86565b612d38565b612b50565b9050919050565b612d6d81612d42565b82525050565b60006040820190508181036000830152612d8e818587612d0b565b9050612d9d6020830184612d64565b949350505050565b612dae81612b50565b82525050565b6000604082019050612dc96000830185612da5565b612dd66020830184612da5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1782612a86565b9150612e2283612a86565b9250828201905067ffffffffffffffff811115612e4257612e41612ddd565b5b92915050565b6000612e5382612a86565b9150612e5e83612a86565b9250828202612e6c81612a86565b9150808214612e7e57612e7d612ddd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ebf82612a86565b9150612eca83612a86565b925082612eda57612ed9612e85565b5b828204905092915050565b612eee81612c13565b82525050565b6000602082019050612f096000830184612ee5565b92915050565b6000612f1a82612b50565b9150612f2583612b50565b9250828203905081811115612f3d57612f3c612ddd565b5b92915050565b6000612f4e82612b50565b9150612f5983612b50565b9250828202612f6781612b50565b91508282048414831517612f7e57612f7d612ddd565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612fcc601283612f85565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b600061300d82612b50565b915061301883612b50565b92508261302857613027612e85565b5b828204905092915050565b600063ffffffff82169050919050565b600061304e82613033565b915061305983613033565b9250828203905063ffffffff81111561307557613074612ddd565b5b92915050565b60006020820190506130906000830184612da5565b92915050565b60006130a182612a86565b91506130ac83612a86565b9250828203905067ffffffffffffffff8111156130cc576130cb612ddd565b5b92915050565b60006130dd82612b50565b91506130e883612b50565b9250826130f8576130f7612e85565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613139601683612f85565b915061314482613103565b602082019050919050565b600060208201905081810360008301526131688161312c565b9050919050565b60006040820190506131846000830185612ee5565b6131916020830184612da5565b9392505050565b60008115159050919050565b6131ad81613198565b81146131b857600080fd5b50565b6000815190506131ca816131a4565b92915050565b6000602082840312156131e6576131e5612a17565b5b60006131f4848285016131bb565b9150509291505056fea264697066735822122066d8bc92064d89f28ce67216679f3246745bd94456f910a35ebbbc7892a256d964736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint64)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint64)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol": {"AST": {"absolutePath": "contracts/echidna/DAO.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "DAO": [36], "DEDUCTED_DIGITS": [676], "IERC20": [1077], "ISSVDAO": [372], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVDAO": [280], "SSVModules": [864], "SSVStorage": [934], "SSVStorageProtocol": [999], "StorageData": [911], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 37, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "../modules/SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 37, "sourceUnit": 281, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["119:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 280, "src": "119:6:0"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "119:6:0"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 36, "linearizedBaseContracts": [36, 280, 372, 854], "name": "DAO", "nameLocation": "112:3:0", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "146:111:0", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "180:2:0", "nodeType": "VariableDeclaration", "scope": 22, "src": "156:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["156:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "156:15:0"}, "referencedDeclaration": 976, "src": "156:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "185:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "204:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "185:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "185:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "156:54:0"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "220:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "223:10:0", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "220:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "236:9:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "248:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "236:14:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "220:30:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "220:30:0"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "143:2:0"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "146:0:0"}, "scope": 36, "src": "132:125:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "315:43:0", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "347:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "325:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$36", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "330:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 89, "src": "325:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "325:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "325:26:0"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "272:22:0", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "303:3:0", "nodeType": "VariableDeclaration", "scope": 35, "src": "295:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "295:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "294:13:0"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "315:0:0"}, "scope": 36, "src": "263:95:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 37, "src": "103:257:0", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:316:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [372], "ISSVNetworkCore": [854]}, "id": 373, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 282, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 283, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 373, "sourceUnit": 855, "src": "70:31:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 284, "name": "ISSVNetworkCore", "nameLocations": ["124:15:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 854, "src": "124:15:1"}, "id": 285, "nodeType": "InheritanceSpecifier", "src": "124:15:1"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 372, "linearizedBaseContracts": [372, 854], "name": "ISSVDAO", "nameLocation": "113:7:1", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 286, "nodeType": "StructuredDocumentation", "src": "146:90:1", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 291, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:1", "nodeType": "FunctionDefinition", "parameters": {"id": 289, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 288, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:1", "nodeType": "VariableDeclaration", "scope": 291, "src": "267:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 287, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:1"}, "returnParameters": {"id": 290, "nodeType": "ParameterList", "parameters": [], "src": "288:0:1"}, "scope": 372, "src": "241:48:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 292, "nodeType": "StructuredDocumentation", "src": "295:93:1", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 297, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:1", "nodeType": "FunctionDefinition", "parameters": {"id": 295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 294, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:1", "nodeType": "VariableDeclaration", "scope": 297, "src": "426:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:1"}, "returnParameters": {"id": 296, "nodeType": "ParameterList", "parameters": [], "src": "450:0:1"}, "scope": 372, "src": "393:58:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 298, "nodeType": "StructuredDocumentation", "src": "457:124:1", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 303, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 301, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 300, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:1", "nodeType": "VariableDeclaration", "scope": 303, "src": "626:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 299, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:1"}, "returnParameters": {"id": 302, "nodeType": "ParameterList", "parameters": [], "src": "653:0:1"}, "scope": 372, "src": "586:68:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 304, "nodeType": "StructuredDocumentation", "src": "660:113:1", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 309, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 306, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:1", "nodeType": "VariableDeclaration", "scope": 309, "src": "818:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 305, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:1"}, "returnParameters": {"id": 308, "nodeType": "ParameterList", "parameters": [], "src": "848:0:1"}, "scope": 372, "src": "778:71:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 310, "nodeType": "StructuredDocumentation", "src": "855:113:1", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 315, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 313, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 312, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:1", "nodeType": "VariableDeclaration", "scope": 315, "src": "1013:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 311, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:1"}, "returnParameters": {"id": 314, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:1"}, "scope": 372, "src": "973:71:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 316, "nodeType": "StructuredDocumentation", "src": "1050:114:1", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 321, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:1", "nodeType": "FunctionDefinition", "parameters": {"id": 319, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 318, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:1", "nodeType": "VariableDeclaration", "scope": 321, "src": "1211:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 317, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:1"}, "returnParameters": {"id": 320, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:1"}, "scope": 372, "src": "1169:66:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 322, "nodeType": "StructuredDocumentation", "src": "1241:136:1", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 327, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:1", "nodeType": "FunctionDefinition", "parameters": {"id": 325, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 324, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:1", "nodeType": "VariableDeclaration", "scope": 327, "src": "1426:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 323, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:1"}, "returnParameters": {"id": 326, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:1"}, "scope": 372, "src": "1382:69:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 328, "nodeType": "StructuredDocumentation", "src": "1457:123:1", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 333, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:1", "nodeType": "FunctionDefinition", "parameters": {"id": 331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 330, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:1", "nodeType": "VariableDeclaration", "scope": 333, "src": "1619:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:1"}, "returnParameters": {"id": 332, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:1"}, "scope": 372, "src": "1585:58:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 337, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:1", "nodeType": "EventDefinition", "parameters": {"id": 336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 335, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:1", "nodeType": "VariableDeclaration", "scope": 337, "src": "1687:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:1"}, "src": "1649:52:1"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 341, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:1", "nodeType": "EventDefinition", "parameters": {"id": 340, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 339, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:1", "nodeType": "VariableDeclaration", "scope": 341, "src": "1745:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 338, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:1"}, "src": "1707:52:1"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 345, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:1", "nodeType": "EventDefinition", "parameters": {"id": 344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 343, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:1", "nodeType": "VariableDeclaration", "scope": 345, "src": "1803:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:1"}, "src": "1765:52:1"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 349, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:1", "nodeType": "EventDefinition", "parameters": {"id": 348, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:1", "nodeType": "VariableDeclaration", "scope": 349, "src": "1863:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:1"}, "src": "1823:54:1"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 353, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:1", "nodeType": "EventDefinition", "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:1", "nodeType": "VariableDeclaration", "scope": 353, "src": "1925:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:1"}, "src": "1883:57:1"}, {"anonymous": false, "documentation": {"id": 354, "nodeType": "StructuredDocumentation", "src": "1946:130:1", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 360, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:1", "nodeType": "EventDefinition", "parameters": {"id": 359, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:1", "nodeType": "VariableDeclaration", "scope": 360, "src": "2105:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 358, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:1", "nodeType": "VariableDeclaration", "scope": 360, "src": "2121:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:1"}, "src": "2081:56:1"}, {"anonymous": false, "documentation": {"id": 361, "nodeType": "StructuredDocumentation", "src": "2143:164:1", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 367, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:1", "nodeType": "EventDefinition", "parameters": {"id": 366, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 363, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:1", "nodeType": "VariableDeclaration", "scope": 367, "src": "2343:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 362, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 365, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:1", "nodeType": "VariableDeclaration", "scope": 367, "src": "2358:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 364, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:1"}, "src": "2312:65:1"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 371, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:1", "nodeType": "EventDefinition", "parameters": {"id": 370, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 369, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:1", "nodeType": "VariableDeclaration", "scope": 371, "src": "2415:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 368, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:1"}, "src": "2383:47:1"}], "scope": 373, "src": "103:2329:1", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:2388:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [854]}, "id": 855, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 740, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 854, "linearizedBaseContracts": [854], "name": "ISSVNetworkCore", "nameLocation": "80:15:2", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 750, "members": [{"constant": false, "id": 743, "mutability": "mutable", "name": "block", "nameLocation": "343:5:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "336:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 742, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 746, "mutability": "mutable", "name": "index", "nameLocation": "461:5:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "454:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 749, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "587:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 748, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:2", "nodeType": "StructDefinition", "scope": 854, "src": "248:360:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 767, "members": [{"constant": false, "id": 753, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "755:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "903:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 755, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "976:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 758, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 762, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "1051:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 761, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "1129:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$750_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 765, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 764, "name": "Snapshot", "nameLocations": ["1129:8:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 750, "src": "1129:8:2"}, "referencedDeclaration": 750, "src": "1129:8:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$750_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:2", "nodeType": "StructDefinition", "scope": 854, "src": "657:496:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 777, "members": [{"constant": false, "id": 770, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1320:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 769, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1417:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1526:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 775, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:2", "nodeType": "StructDefinition", "scope": 854, "src": "1224:331:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 793, "members": [{"constant": false, "id": 780, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1694:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 779, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1792:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1883:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 785, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 789, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1968:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 788, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 792, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "2033:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 791, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:2", "nodeType": "StructDefinition", "scope": 854, "src": "1612:443:2", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 795, "name": "CallerNotOwner", "nameLocation": "2119:14:2", "nodeType": "ErrorDefinition", "parameters": {"id": 794, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:2"}, "src": "2113:23:2"}, {"errorSelector": "8c6e5d71", "id": 797, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 796, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:2"}, "src": "2155:29:2"}, {"errorSelector": "732f9413", "id": 799, "name": "FeeTooLow", "nameLocation": "2209:9:2", "nodeType": "ErrorDefinition", "parameters": {"id": 798, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:2"}, "src": "2203:18:2"}, {"errorSelector": "958065d9", "id": 801, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 800, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:2"}, "src": "2240:32:2"}, {"errorSelector": "1d226c30", "id": 803, "name": "NoFeeDeclared", "nameLocation": "2297:13:2", "nodeType": "ErrorDefinition", "parameters": {"id": 802, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:2"}, "src": "2291:22:2"}, {"errorSelector": "97e4b518", "id": 805, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:2", "nodeType": "ErrorDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:2"}, "src": "2332:35:2"}, {"errorSelector": "961e3e8c", "id": 807, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:2"}, "src": "2386:29:2"}, {"errorSelector": "f4d678b8", "id": 809, "name": "InsufficientBalance", "nameLocation": "2440:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 808, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:2"}, "src": "2434:28:2"}, {"errorSelector": "8d09a73e", "id": 811, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 810, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:2"}, "src": "2481:31:2"}, {"errorSelector": "e51315d2", "id": 813, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 812, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:2"}, "src": "2531:30:2"}, {"errorSelector": "2feda3c1", "id": 815, "name": "IncorrectValidatorState", "nameLocation": "2586:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 814, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:2"}, "src": "2580:32:2"}, {"errorSelector": "60300a8d", "id": 817, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 816, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:2"}, "src": "2631:31:2"}, {"errorSelector": "637297a4", "id": 819, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 818, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:2"}, "src": "2681:31:2"}, {"errorSelector": "38186224", "id": 821, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:2", "nodeType": "ErrorDefinition", "parameters": {"id": 820, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:2"}, "src": "2731:33:2"}, {"errorSelector": "3babafd2", "id": 823, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 822, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:2"}, "src": "2783:30:2"}, {"errorSelector": "95a0cf33", "id": 825, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:2"}, "src": "2832:28:2"}, {"errorSelector": "185e2b16", "id": 827, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 826, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:2"}, "src": "2879:29:2"}, {"errorSelector": "12e04c87", "id": 829, "name": "IncorrectClusterState", "nameLocation": "2933:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 828, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:2"}, "src": "2927:30:2"}, {"errorSelector": "dd020e25", "id": 831, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 830, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:2"}, "src": "2976:30:2"}, {"errorSelector": "6e6c9cac", "id": 833, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:2", "nodeType": "ErrorDefinition", "parameters": {"id": 832, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:2"}, "src": "3025:37:2"}, {"errorSelector": "6df5ab76", "id": 835, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:2"}, "src": "3081:29:2"}, {"errorSelector": "045c4b02", "id": 837, "name": "TokenTransferFailed", "nameLocation": "3135:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 836, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:2"}, "src": "3129:28:2"}, {"errorSelector": "c81272f8", "id": 839, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 838, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:2"}, "src": "3176:32:2"}, {"errorSelector": "410a2b6c", "id": 841, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 840, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:2"}, "src": "3227:30:2"}, {"errorSelector": "ea8e4eb5", "id": 843, "name": "NotAuthorized", "nameLocation": "3282:13:2", "nodeType": "ErrorDefinition", "parameters": {"id": 842, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:2"}, "src": "3276:22:2"}, {"errorSelector": "a5a1ff5d", "id": 845, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 844, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:2"}, "src": "3317:31:2"}, {"errorSelector": "289c9494", "id": 847, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 846, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:2"}, "src": "3367:30:2"}, {"errorSelector": "8f9195fb", "id": 849, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:2", "nodeType": "ErrorDefinition", "parameters": {"id": 848, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:2"}, "src": "3416:33:2"}, {"errorSelector": "91aa3017", "id": 851, "name": "MaxValueExceeded", "nameLocation": "3474:16:2", "nodeType": "ErrorDefinition", "parameters": {"id": 850, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:2"}, "src": "3468:25:2"}, {"errorSelector": "cd4e6167", "id": 853, "name": "FeeTooHigh", "nameLocation": "3518:10:2", "nodeType": "ErrorDefinition", "parameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:2"}, "src": "3512:19:2"}], "scope": 855, "src": "70:3477:2", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:3503:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "IERC20": [1077], "ISSVNetworkCore": [854], "SSVModules": [864], "SSVStorage": [934], "StorageData": [911]}, "id": 504, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 374, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 375, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 504, "sourceUnit": 935, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 503, "linearizedBaseContracts": [503], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 382, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 381, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 378, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 382, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, "typeName": {"id": 377, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 376, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "141:10:3"}, "referencedDeclaration": 864, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 380, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 382, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 379, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 389, "nodeType": "Block", "src": "259:32:3", "statements": [{"expression": {"hexValue": "76312e302e32", "id": 387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:8:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a93491ab14f0da9be9ef6814ab0c16bbbdf1cf68412eb6d7d1f6ea944c85b62a", "typeString": "literal_string \"v1.0.2\""}, "value": "v1.0.2"}, "functionReturnParameters": 386, "id": 388, "nodeType": "Return", "src": "269:15:3"}]}, "id": 390, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 383, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 386, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 385, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 390, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 384, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 503, "src": "199:92:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 413, "nodeType": "Block", "src": "359:136:3", "statements": [{"condition": {"id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "373:45:3", "subExpression": {"arguments": [{"id": 402, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, "src": "407:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 403, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 394, "src": "411:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 397, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "374:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "385:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 400, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "392:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 906, "src": "374:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "398:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1044, "src": "374:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 412, "nodeType": "IfStatement", "src": "369:120:3", "trueBody": {"id": 411, "nodeType": "Block", "src": "420:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 406, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "441:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "457:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 837, "src": "441:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "441:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 410, "nodeType": "RevertStatement", "src": "434:44:3"}]}}]}, "id": 414, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "306:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 395, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 392, "mutability": "mutable", "name": "to", "nameLocation": "330:2:3", "nodeType": "VariableDeclaration", "scope": 414, "src": "322:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 391, "name": "address", "nodeType": "ElementaryTypeName", "src": "322:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 394, "mutability": "mutable", "name": "amount", "nameLocation": "342:6:3", "nodeType": "VariableDeclaration", "scope": 414, "src": "334:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 393, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "334:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "321:28:3"}, "returnParameters": {"id": 396, "nodeType": "ParameterList", "parameters": [], "src": "359:0:3"}, "scope": 503, "src": "297:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 440, "nodeType": "Block", "src": "543:163:3", "statements": [{"condition": {"id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:72:3", "subExpression": {"arguments": [{"expression": {"id": 424, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "595:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "599:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "595:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 428, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "615:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$503", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$503", "typeString": "library CoreLib"}], "id": 427, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "607:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "607:7:3", "typeDescriptions": {}}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "607:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 430, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "622:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 419, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "558:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "569:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "558:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "576:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 906, "src": "558:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1076, "src": "558:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 439, "nodeType": "IfStatement", "src": "553:147:3", "trueBody": {"id": 438, "nodeType": "Block", "src": "631:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 433, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "652:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "668:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 837, "src": "652:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "652:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 437, "nodeType": "RevertStatement", "src": "645:44:3"}]}}]}, "id": 441, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "510:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 417, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 416, "mutability": "mutable", "name": "amount", "nameLocation": "526:6:3", "nodeType": "VariableDeclaration", "scope": 441, "src": "518:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 415, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "518:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "517:16:3"}, "returnParameters": {"id": 418, "nodeType": "ParameterList", "parameters": [], "src": "543:0:3"}, "scope": 503, "src": "501:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 467, "nodeType": "Block", "src": "1348:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 449, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 444, "src": "1362:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1381:1:3", "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": 451, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1373:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 450, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:3", "typeDescriptions": {}}}, "id": 453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1373:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1362:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 458, "nodeType": "IfStatement", "src": "1358:64:3", "trueBody": {"id": 457, "nodeType": "Block", "src": "1385:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1406:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 448, "id": 456, "nodeType": "Return", "src": "1399:12:3"}]}}, {"assignments": [460], "declarations": [{"constant": false, "id": 460, "mutability": "mutable", "name": "size", "nameLocation": "1626:4:3", "nodeType": "VariableDeclaration", "scope": 467, "src": "1618:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 461, "nodeType": "VariableDeclarationStatement", "src": "1618:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1705:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1719:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1739:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1727:11:3"}, "nodeType": "YulFunctionCall", "src": "1727:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1719:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 444, "isOffset": false, "isSlot": false, "src": "1739:7:3", "valueSize": 1}, {"declaration": 460, "isOffset": false, "isSlot": false, "src": "1719:4:3", "valueSize": 1}], "id": 462, "nodeType": "InlineAssembly", "src": "1696:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 463, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 460, "src": "1773:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1780:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1773:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 448, "id": 466, "nodeType": "Return", "src": "1766:15:3"}]}, "documentation": {"id": 442, "nodeType": "StructuredDocumentation", "src": "712:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 468, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1291:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 444, "mutability": "mutable", "name": "account", "nameLocation": "1310:7:3", "nodeType": "VariableDeclaration", "scope": 468, "src": "1302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 443, "name": "address", "nodeType": "ElementaryTypeName", "src": "1302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1301:17:3"}, "returnParameters": {"id": 448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 447, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 468, "src": "1342:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1342:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1341:6:3"}, "scope": 503, "src": "1282:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 501, "nodeType": "Block", "src": "1875:219:3", "statements": [{"condition": {"id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1889:26:3", "subExpression": {"arguments": [{"id": 477, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "1901:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 476, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "1890:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1890:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 485, "nodeType": "IfStatement", "src": "1885:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 480, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "1924:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 849, "src": "1924:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1924:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 484, "nodeType": "RevertStatement", "src": "1917:49:3"}}, {"expression": {"id": 494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 486, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1977:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1988:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "1977:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1977:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 490, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 885, "src": "1977:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 492, "indexExpression": {"id": 491, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "2008:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1977:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 493, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "2020:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1977:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 495, "nodeType": "ExpressionStatement", "src": "1977:56:3"}, {"eventCall": {"arguments": [{"id": 497, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "2063:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, {"id": 498, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "2073:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 496, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "2048:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$864_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2048:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 500, "nodeType": "EmitStatement", "src": "2043:44:3"}]}, "id": 502, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1804:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 471, "mutability": "mutable", "name": "moduleId", "nameLocation": "1833:8:3", "nodeType": "VariableDeclaration", "scope": 502, "src": "1822:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, "typeName": {"id": 470, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 469, "name": "SSVModules", "nameLocations": ["1822:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "1822:10:3"}, "referencedDeclaration": 864, "src": "1822:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 473, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1851:13:3", "nodeType": "VariableDeclaration", "scope": 502, "src": "1843:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 472, "name": "address", "nodeType": "ElementaryTypeName", "src": "1843:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1821:44:3"}, "returnParameters": {"id": 475, "nodeType": "ParameterList", "parameters": [], "src": "1875:0:3"}, "scope": 503, "src": "1795:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 504, "src": "98:1998:3", "usedErrors": []}], "src": "45:2052:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [676], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVStorageProtocol": [999], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 672, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 505, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 506, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 855, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 507, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 739, "src": "114:21:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 508, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 1000, "src": "136:34:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 671, "linearizedBaseContracts": [671], "name": "ProtocolLib", "nameLocation": "180:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 511, "libraryName": {"id": 509, "name": "Types256", "nameLocations": ["204:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 738, "src": "204:8:4"}, "nodeType": "UsingForDirective", "src": "198:27:4", "typeName": {"id": 510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 534, "nodeType": "Block", "src": "433:113:4", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 519, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "450:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:4", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "450:18:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 523, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 525, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "493:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:4", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "493:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 522, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 521, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:4", "typeDescriptions": {}}}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 529, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "526:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "526:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 518, "id": 533, "nodeType": "Return", "src": "443:96:4"}]}, "id": 535, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:4", "nodeType": "FunctionDefinition", "parameters": {"id": 515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 514, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:4", "nodeType": "VariableDeclaration", "scope": 535, "src": "374:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 513, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 512, "name": "StorageProtocol", "nameLocations": ["374:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "374:15:4"}, "referencedDeclaration": 976, "src": "374:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:4"}, "returnParameters": {"id": 518, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 517, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 535, "src": "425:6:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 516, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:4"}, "scope": 671, "src": "342:204:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 573, "nodeType": "Block", "src": "628:196:4", "statements": [{"expression": {"arguments": [{"id": 544, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "656:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 543, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "638:17:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 546, "nodeType": "ExpressionStatement", "src": "638:21:4"}, {"expression": {"id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 547, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "670:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:4", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "670:18:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 551, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "714:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 550, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "691:22:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 554, "nodeType": "ExpressionStatement", "src": "670:47:4"}, {"expression": {"id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 555, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "727:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 557, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:4", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "727:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 560, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 559, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 558, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:4", "typeDescriptions": {}}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 564, "nodeType": "ExpressionStatement", "src": "727:52:4"}, {"expression": {"id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 565, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "789:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "789:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 568, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 540, "src": "805:3:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:4", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "805:10:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 572, "nodeType": "ExpressionStatement", "src": "789:28:4"}]}, "id": 574, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 538, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:4", "nodeType": "VariableDeclaration", "scope": 574, "src": "578:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 537, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 536, "name": "StorageProtocol", "nameLocations": ["578:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "578:15:4"}, "referencedDeclaration": 976, "src": "578:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 540, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:4", "nodeType": "VariableDeclaration", "scope": 574, "src": "606:11:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:4"}, "returnParameters": {"id": 542, "nodeType": "ParameterList", "parameters": [], "src": "628:0:4"}, "scope": 671, "src": "552:272:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 598, "nodeType": "Block", "src": "993:112:4", "statements": [{"expression": {"id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 580, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1003:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 582, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:4", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1003:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 584, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1040:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 583, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1019:20:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 587, "nodeType": "ExpressionStatement", "src": "1003:40:4"}, {"expression": {"id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 588, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1053:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 590, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:4", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1053:22:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 593, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 591, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:4", "typeDescriptions": {}}}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "1053:45:4"}]}, "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:4", "nodeType": "FunctionDefinition", "parameters": {"id": 578, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 577, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:4", "nodeType": "VariableDeclaration", "scope": 599, "src": "956:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 576, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 575, "name": "StorageProtocol", "nameLocations": ["956:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "956:15:4"}, "referencedDeclaration": 976, "src": "956:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:4"}, "returnParameters": {"id": 579, "nodeType": "ParameterList", "parameters": [], "src": "993:0:4"}, "scope": 671, "src": "929:176:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 626, "nodeType": "Block", "src": "1200:126:4", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 607, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1217:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 608, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:4", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1217:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 611, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 609, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:4", "typeDescriptions": {}}}, "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 614, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1257:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:4", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1257:22:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 617, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 618, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1283:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "1283:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 621, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1299:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 622, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1299:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 606, "id": 625, "nodeType": "Return", "src": "1210:109:4"}]}, "id": 627, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:4", "nodeType": "FunctionDefinition", "parameters": {"id": 603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 602, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:4", "nodeType": "VariableDeclaration", "scope": 627, "src": "1141:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 601, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 600, "name": "StorageProtocol", "nameLocations": ["1141:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1141:15:4"}, "referencedDeclaration": 976, "src": "1141:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:4"}, "returnParameters": {"id": 606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 605, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 627, "src": "1192:6:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:4"}, "scope": 671, "src": "1111:215:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 669, "nodeType": "Block", "src": "1445:286:4", "statements": [{"expression": {"arguments": [{"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1473:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 637, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1455:17:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 640, "nodeType": "ExpressionStatement", "src": "1455:21:4"}, {"condition": {"id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:4", "subExpression": {"id": 641, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "1491:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 650, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1594:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 651, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1594:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 652, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, "src": "1618:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 654, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 657, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 656, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:4", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 655, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:4", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:4", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 667, "nodeType": "IfStatement", "src": "1589:136:4", "trueBody": {"id": 666, "nodeType": "Block", "src": "1659:66:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 661, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "1680:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:4", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 851, "src": "1680:32:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 665, "nodeType": "RevertStatement", "src": "1673:41:4"}]}}, "id": 668, "nodeType": "IfStatement", "src": "1486:239:4", "trueBody": {"id": 649, "nodeType": "Block", "src": "1515:68:4", "statements": [{"expression": {"id": 647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 643, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1529:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 645, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1529:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 646, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, "src": "1553:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 648, "nodeType": "ExpressionStatement", "src": "1529:43:4"}]}}]}, "id": 670, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:4", "nodeType": "FunctionDefinition", "parameters": {"id": 635, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 630, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1351:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 629, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 628, "name": "StorageProtocol", "nameLocations": ["1351:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1351:15:4"}, "referencedDeclaration": 976, "src": "1351:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 632, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1379:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 631, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 634, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1408:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 633, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:4"}, "returnParameters": {"id": 636, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:4"}, "scope": 671, "src": "1332:399:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 672, "src": "172:1561:4", "usedErrors": []}], "src": "45:1689:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1151], "IERC20": [1077], "ISSVNetworkCore": [854], "SSVModules": [864], "SSVStorage": [934], "StorageData": [911]}, "id": 935, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 856, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 857, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 855, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 858, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 1152, "src": "114:52:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 859, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 1078, "src": "167:56:5", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 864, "members": [{"id": 860, "name": "SSV_OPERATORS", "nameLocation": "247:13:5", "nodeType": "EnumValue", "src": "247:13:5"}, {"id": 861, "name": "SSV_CLUSTERS", "nameLocation": "266:12:5", "nodeType": "EnumValue", "src": "266:12:5"}, {"id": 862, "name": "SSV_DAO", "nameLocation": "284:7:5", "nodeType": "EnumValue", "src": "284:7:5"}, {"id": 863, "name": "SSV_VIEWS", "nameLocation": "297:9:5", "nodeType": "EnumValue", "src": "297:9:5"}], "name": "SSVModules", "nameLocation": "230:10:5", "nodeType": "EnumDefinition", "src": "225:83:5"}, {"canonicalName": "StorageData", "id": 911, "members": [{"constant": false, "id": 869, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "599:40:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 868, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 866, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "756:36:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 872, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 879, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "870:39:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 878, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 877, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 885, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "998:43:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 884, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 882, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 881, "name": "SSVModules", "nameLocations": ["1006:10:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "1006:10:5"}, "referencedDeclaration": 864, "src": "1006:10:5", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 890, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1159:45:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 889, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 888, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 896, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1304:85:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 895, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 892, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 894, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 893, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:5", "1338:24:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 777, "src": "1322:40:5"}, "referencedDeclaration": 777, "src": "1322:40:5", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$777_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 902, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1470:53:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$767_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 901, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 898, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$767_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 900, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 899, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:5", "1504:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 767, "src": "1488:24:5"}, "referencedDeclaration": 767, "src": "1488:24:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 906, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1599:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}, "typeName": {"id": 905, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 904, "name": "IERC20", "nameLocations": ["1599:6:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1077, "src": "1599:6:5"}, "referencedDeclaration": 1077, "src": "1599:6:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 910, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1686:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 909, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 908, "name": "Counters.Counter", "nameLocations": ["1686:8:5", "1695:7:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1686:16:5"}, "referencedDeclaration": 1083, "src": "1686:16:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:5", "nodeType": "StructDefinition", "scope": 935, "src": "419:1301:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 934, "linearizedBaseContracts": [934], "name": "SSVStorage", "nameLocation": "1730:10:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 921, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:5", "nodeType": "VariableDeclaration", "scope": 934, "src": "1747:98:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 912, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 920, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 915, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 917, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:5", "typeDescriptions": {}}}, "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 919, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 932, "nodeType": "Block", "src": "1915:117:5", "statements": [{"assignments": [928], "declarations": [{"constant": false, "id": 928, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:5", "nodeType": "VariableDeclaration", "scope": 932, "src": "1925:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 930, "initialValue": {"id": 929, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "1944:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 928, "isOffset": false, "isSlot": false, "src": "2008:8:5", "valueSize": 1}, {"declaration": 925, "isOffset": false, "isSlot": true, "src": "1997:7:5", "suffix": "slot", "valueSize": 1}], "id": 931, "nodeType": "InlineAssembly", "src": "1974:52:5"}]}, "id": 933, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 922, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:5"}, "returnParameters": {"id": 926, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 925, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:5", "nodeType": "VariableDeclaration", "scope": 933, "src": "1891:22:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 924, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 923, "name": "StorageData", "nameLocations": ["1891:11:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 911, "src": "1891:11:5"}, "referencedDeclaration": 911, "src": "1891:11:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:5"}, "scope": 934, "src": "1852:180:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 935, "src": "1722:312:5", "usedErrors": []}], "src": "45:1990:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [999], "StorageProtocol": [976]}, "id": 1000, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 936, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"canonicalName": "StorageProtocol", "id": 976, "members": [{"constant": false, "id": 939, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "307:33:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 938, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 942, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "406:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 941, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 945, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "505:26:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 944, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 948, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "598:33:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 947, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 951, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "683:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 954, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "758:22:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 957, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "833:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 956, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 960, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "945:37:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 959, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 963, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1052:35:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 962, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 966, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1166:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 965, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 969, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1278:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 968, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 972, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1397:29:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 971, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 975, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1504:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 974, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:6", "nodeType": "StructDefinition", "scope": 1000, "src": "201:1327:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 999, "linearizedBaseContracts": [999], "name": "SSVStorageProtocol", "nameLocation": "1538:18:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 986, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:6", "nodeType": "VariableDeclaration", "scope": 999, "src": "1563:102:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 985, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 980, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:6", "typeDescriptions": {}}}, "id": 983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 997, "nodeType": "Block", "src": "1739:117:6", "statements": [{"assignments": [993], "declarations": [{"constant": false, "id": 993, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:6", "nodeType": "VariableDeclaration", "scope": 997, "src": "1749:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 995, "initialValue": {"id": 994, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "1768:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 993, "isOffset": false, "isSlot": false, "src": "1832:8:6", "valueSize": 1}, {"declaration": 990, "isOffset": false, "isSlot": true, "src": "1821:7:6", "suffix": "slot", "valueSize": 1}], "id": 996, "nodeType": "InlineAssembly", "src": "1798:52:6"}]}, "id": 998, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 987, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:6"}, "returnParameters": {"id": 991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 990, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:6", "nodeType": "VariableDeclaration", "scope": 998, "src": "1711:26:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 989, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 988, "name": "StorageProtocol", "nameLocations": ["1711:15:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1711:15:6"}, "referencedDeclaration": 976, "src": "1711:15:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:6"}, "scope": 999, "src": "1672:184:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1000, "src": "1530:328:6", "usedErrors": []}], "src": "45:1814:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [676], "Types256": [738], "Types64": [689]}, "id": 739, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 673, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"constant": true, "id": 676, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:7", "nodeType": "VariableDeclaration", "scope": 739, "src": "70:45:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 689, "linearizedBaseContracts": [689], "name": "Types64", "nameLocation": "126:7:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 687, "nodeType": "Block", "src": "202:47:7", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 683, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 678, "src": "219:5:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 684, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "227:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 682, "id": 686, "nodeType": "Return", "src": "212:30:7"}]}, "id": 688, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:7", "nodeType": "FunctionDefinition", "parameters": {"id": 679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 678, "mutability": "mutable", "name": "value", "nameLocation": "163:5:7", "nodeType": "VariableDeclaration", "scope": 688, "src": "156:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 677, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:7"}, "returnParameters": {"id": 682, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 681, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 688, "src": "193:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:7"}, "scope": 689, "src": "140:109:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 739, "src": "118:133:7", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 738, "linearizedBaseContracts": [738], "name": "Types256", "nameLocation": "261:8:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 717, "nodeType": "Block", "src": "338:143:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 697, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 691, "src": "356:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "365:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 699, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "370:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "365:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 701, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "375:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "365:25:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 703, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "364:27:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:35:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 705, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "393:20:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 696, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 706, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:66:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 707, "nodeType": "ExpressionStatement", "src": "348:66:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 711, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 691, "src": "449:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 710, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "438:10:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "438:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 713, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "458:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "438:35:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "431:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 708, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "431:6:7", "typeDescriptions": {}}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "431:43:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 695, "id": 716, "nodeType": "Return", "src": "424:50:7"}]}, "id": 718, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:7", "nodeType": "FunctionDefinition", "parameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "value", "nameLocation": "300:5:7", "nodeType": "VariableDeclaration", "scope": 718, "src": "292:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:7"}, "returnParameters": {"id": 695, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 694, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 718, "src": "330:6:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 693, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:7"}, "scope": 738, "src": "276:205:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 736, "nodeType": "Block", "src": "554:102:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 726, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "572:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 727, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "580:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "572:23:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "599:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "572:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "602:24:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 725, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "564:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "564:63:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 733, "nodeType": "ExpressionStatement", "src": "564:63:7"}, {"expression": {"id": 734, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "644:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 724, "id": 735, "nodeType": "Return", "src": "637:12:7"}]}, "id": 737, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "496:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 720, "mutability": "mutable", "name": "value", "nameLocation": "515:5:7", "nodeType": "VariableDeclaration", "scope": 737, "src": "507:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "507:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "506:15:7"}, "returnParameters": {"id": 724, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 723, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 737, "src": "545:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "545:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "544:9:7"}, "scope": 738, "src": "487:169:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 739, "src": "253:405:7", "usedErrors": []}], "src": "45:614:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "DEDUCTED_DIGITS": [676], "IERC20": [1077], "ISSVDAO": [372], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVDAO": [280], "SSVModules": [864], "SSVStorage": [934], "SSVStorageProtocol": [999], "StorageData": [911], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 281, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 38, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 39, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 373, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 40, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 739, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 41, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 672, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 42, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 504, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 43, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 372, "src": "233:7:8"}, "id": 44, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 280, "linearizedBaseContracts": [280, 372, 854], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 47, "libraryName": {"id": 45, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 689, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 46, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 50, "libraryName": {"id": 48, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 738, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 49, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 54, "libraryName": {"id": 51, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 671, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 53, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 52, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "332:15:8"}, "referencedDeclaration": 976, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 57, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 280, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 55, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 56, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [291], "body": {"id": 88, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [65], "declarations": [{"constant": false, "id": 65, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 88, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 64, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 63, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "491:15:8"}, "referencedDeclaration": 976, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 69, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 66, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 67, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [71], "declarations": [{"constant": false, "id": 71, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 88, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 70, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 74, "initialValue": {"expression": {"id": 72, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 73, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 78, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 75, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 77, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 574, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 80, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 82, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 688, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 84, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 85, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 81, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 360, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 86, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 87, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 89, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 61, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 60, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 59, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 89, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 58, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 62, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 280, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [297], "body": {"id": 154, "nodeType": "Block", "src": "763:502:8", "statements": [{"assignments": [97], "declarations": [{"constant": false, "id": 97, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 96, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 95, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "773:15:8"}, "referencedDeclaration": 976, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 101, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 98, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 99, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [103], "declarations": [{"constant": false, "id": 103, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 102, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 107, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 104, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [109], "declarations": [{"constant": false, "id": 109, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 108, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 113, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 110, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 111, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 627, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 114, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 115, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 121, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 120, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 117, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 809, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 119, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 122, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 125, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 126, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 129, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"id": 138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "1099:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 132, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1102:19:8", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1099:22:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 135, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1131:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1137:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "1131:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 134, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1124:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 133, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1124:6:8", "typeDescriptions": {}}}, "id": 137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1124:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1099:45:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 139, "nodeType": "ExpressionStatement", "src": "1099:45:8"}, {"expression": {"arguments": [{"expression": {"id": 143, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1179:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1183:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1179:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 145, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1191:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 140, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "1155:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$503_$", "typeString": "type(library CoreLib)"}}, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1163:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 414, "src": "1155:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1155:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 147, "nodeType": "ExpressionStatement", "src": "1155:43:8"}, {"eventCall": {"arguments": [{"id": 149, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1239:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 150, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1247:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1251:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1247:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 148, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "1214:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1214:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 153, "nodeType": "EmitStatement", "src": "1209:49:8"}]}, "functionSelector": "d2231741", "id": 155, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 93, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 92, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 91, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 155, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 90, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 94, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 280, "src": "696:569:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [303], "body": {"id": 173, "nodeType": "Block", "src": "1348:136:8", "statements": [{"expression": {"id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 161, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1358:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1377:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1358:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1358:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 165, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1384:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 972, "src": "1358:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 166, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 157, "src": "1409:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1358:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 168, "nodeType": "ExpressionStatement", "src": "1358:61:8"}, {"eventCall": {"arguments": [{"id": 170, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 157, "src": "1466:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 169, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 337, "src": "1434:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1434:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 172, "nodeType": "EmitStatement", "src": "1429:48:8"}]}, "functionSelector": "3631983f", "id": 174, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1280:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 159, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1339:8:8"}, "parameters": {"id": 158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 157, "mutability": "mutable", "name": "percentage", "nameLocation": "1318:10:8", "nodeType": "VariableDeclaration", "scope": 174, "src": "1311:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 156, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1311:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1310:19:8"}, "returnParameters": {"id": 160, "nodeType": "ParameterList", "parameters": [], "src": "1348:0:8"}, "scope": 280, "src": "1271:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [309], "body": {"id": 192, "nodeType": "Block", "src": "1570:144:8", "statements": [{"expression": {"id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 180, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1580:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1599:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1580:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1580:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 184, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1606:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 966, "src": "1580:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 185, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "1633:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1580:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 187, "nodeType": "ExpressionStatement", "src": "1580:66:8"}, {"eventCall": {"arguments": [{"id": 189, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "1693:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 188, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "1661:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1661:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 191, "nodeType": "EmitStatement", "src": "1656:51:8"}]}, "functionSelector": "79e3e4e4", "id": 193, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1499:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 178, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1561:8:8"}, "parameters": {"id": 177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 176, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1537:13:8", "nodeType": "VariableDeclaration", "scope": 193, "src": "1530:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 175, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1530:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1529:22:8"}, "returnParameters": {"id": 179, "nodeType": "ParameterList", "parameters": [], "src": "1570:0:8"}, "scope": 280, "src": "1490:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [315], "body": {"id": 211, "nodeType": "Block", "src": "1800:144:8", "statements": [{"expression": {"id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 199, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1810:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1829:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1810:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1810:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 203, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 969, "src": "1810:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 204, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1863:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1810:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 206, "nodeType": "ExpressionStatement", "src": "1810:66:8"}, {"eventCall": {"arguments": [{"id": 208, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1923:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 207, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 345, "src": "1891:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1891:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 210, "nodeType": "EmitStatement", "src": "1886:51:8"}]}, "functionSelector": "eb608022", "id": 212, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1729:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 197, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1791:8:8"}, "parameters": {"id": 196, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 195, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1767:13:8", "nodeType": "VariableDeclaration", "scope": 212, "src": "1760:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 194, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1760:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1759:22:8"}, "returnParameters": {"id": 198, "nodeType": "ParameterList", "parameters": [], "src": "1800:0:8"}, "scope": 280, "src": "1720:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [321], "body": {"id": 238, "nodeType": "Block", "src": "2025:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 218, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2039:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 219, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "2048:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2039:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 225, "nodeType": "IfStatement", "src": "2035:106:8", "trueBody": {"id": 224, "nodeType": "Block", "src": "2079:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 221, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "2100:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2100:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 223, "nodeType": "RevertStatement", "src": "2093:37:8"}]}}, {"expression": {"id": 232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 226, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2151:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2170:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2151:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2151:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 230, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2177:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 960, "src": "2151:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 231, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2151:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 233, "nodeType": "ExpressionStatement", "src": "2151:65:8"}, {"eventCall": {"arguments": [{"id": 235, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 234, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 349, "src": "2231:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2231:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 237, "nodeType": "EmitStatement", "src": "2226:46:8"}]}, "functionSelector": "6512447d", "id": 239, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1959:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 216, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2016:8:8"}, "parameters": {"id": 215, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 214, "mutability": "mutable", "name": "blocks", "nameLocation": "1999:6:8", "nodeType": "VariableDeclaration", "scope": 239, "src": "1992:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 213, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1992:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1991:15:8"}, "returnParameters": {"id": 217, "nodeType": "ParameterList", "parameters": [], "src": "2025:0:8"}, "scope": 280, "src": "1950:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [327], "body": {"id": 259, "nodeType": "Block", "src": "2363:147:8", "statements": [{"expression": {"id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 245, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2373:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2392:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2373:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2373:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2399:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 963, "src": "2373:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 250, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "2430:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2437:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "2430:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2430:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2373:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 254, "nodeType": "ExpressionStatement", "src": "2373:72:8"}, {"eventCall": {"arguments": [{"id": 256, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "2496:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 255, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 353, "src": "2460:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2460:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 258, "nodeType": "EmitStatement", "src": "2455:48:8"}]}, "functionSelector": "b4c9c408", "id": 260, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2294:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 243, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2354:8:8"}, "parameters": {"id": 242, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 241, "mutability": "mutable", "name": "amount", "nameLocation": "2337:6:8", "nodeType": "VariableDeclaration", "scope": 260, "src": "2329:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 240, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2329:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2328:16:8"}, "returnParameters": {"id": 244, "nodeType": "ParameterList", "parameters": [], "src": "2363:0:8"}, "scope": 280, "src": "2285:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [333], "body": {"id": 278, "nodeType": "Block", "src": "2583:114:8", "statements": [{"expression": {"id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 266, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2593:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2612:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2593:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2593:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 270, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2619:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 975, "src": "2593:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 271, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 262, "src": "2636:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2593:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 273, "nodeType": "ExpressionStatement", "src": "2593:49:8"}, {"eventCall": {"arguments": [{"id": 275, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 262, "src": "2683:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 274, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 371, "src": "2657:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 277, "nodeType": "EmitStatement", "src": "2652:38:8"}]}, "functionSelector": "e39c6744", "id": 279, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2525:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 264, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2574:8:8"}, "parameters": {"id": 263, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 262, "mutability": "mutable", "name": "maxFee", "nameLocation": "2557:6:8", "nodeType": "VariableDeclaration", "scope": 279, "src": "2550:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 261, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2550:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2549:15:8"}, "returnParameters": {"id": 265, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:8"}, "scope": 280, "src": "2516:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 281, "src": "214:2485:8", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:2655:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1077]}, "id": 1078, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1001, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1002, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1077, "linearizedBaseContracts": [1077], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1003, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1011, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1005, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1007, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1009, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1012, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1020, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1014, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1013, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1016, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1015, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1018, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1021, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1026, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1025, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1026, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1023, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1077, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1027, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1034, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1029, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1034, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1033, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1034, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1031, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1077, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1035, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1044, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1037, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1036, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1039, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1041, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1077, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1045, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1054, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1046, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1049, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1051, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1077, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1055, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1064, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1059, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1058, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1061, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1077, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1065, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1076, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1069, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1068, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1071, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1070, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1075, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1074, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1073, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1077, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1078, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1151]}, "id": 1152, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1079, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1080, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1151, "linearizedBaseContracts": [1151], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1083, "members": [{"constant": false, "id": 1082, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1083, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1151, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1094, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1091, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1092, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1090, "id": 1093, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1095, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1095, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1085, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1084, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "844:7:10"}, "referencedDeclaration": 1083, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1090, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1089, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1095, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1151, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1108, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1107, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1101, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1103, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1106, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1109, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1098, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1109, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1097, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1096, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "964:7:10"}, "referencedDeclaration": 1083, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1100, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1151, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1136, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1116], "declarations": [{"constant": false, "id": 1116, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1119, "initialValue": {"expression": {"id": 1117, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1112, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1116, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1120, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1126, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1135, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1127, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1112, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1130, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1116, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1134, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1137, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1113, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1112, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1137, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1111, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1110, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1093:7:10"}, "referencedDeclaration": 1083, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1114, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1151, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1149, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1143, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1145, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1148, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1150, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1141, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1140, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1150, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1139, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1138, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1324:7:10"}, "referencedDeclaration": 1083, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1142, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1151, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1152, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol:DAO": {"srcmap": "103:257:0:-:0;;;132:125;;;;;;;;;;156:26;185:25;:23;;;;;:25;;:::i;:::-;156:54;;236:14;220:2;:13;;;:30;;;;;;;;;;;;;;;;;;146:111;103:257;;1672:184:6;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;103:257:0:-;;;;;;;", "srcmap-runtime": "103:257:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1271:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1950:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1490:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2285:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;263:95:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2516:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1720:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1271:213::-;1409:10;1358:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1434:43;1466:10;1434:43;;;;;;:::i;:::-;;;;;;;;1271:213;:::o;1950:329::-;410:7;2039:38;;:6;:38;;;2035:106;;;2100:30;;;;;;;;;;;;;;2035:106;2210:6;2151:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2231:41;2265:6;2231:41;;;;;;:::i;:::-;;;;;;;;1950:329;:::o;1490:224::-;1633:13;1580:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1661:46;1693:13;1661:46;;;;;;:::i;:::-;;;;;;;;1490:224;:::o;2285:225::-;2430:15;:6;:13;:15::i;:::-;2373:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2460:43;2496:6;2460:43;;;;;;:::i;:::-;;;;;;;;2285:225;:::o;696:569::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1131:12;1099:2;:22;;;:45;;;;;;;;;;;;;;;;;;1155:43;1179:10;1191:6;1155:23;:43::i;:::-;1214:44;1239:6;1247:10;1214:44;;;;;;;:::i;:::-;;;;;;;;763:502;;;696:569;:::o;263:95:0:-;325:4;:21;;;347:3;325:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:95;:::o;2516:181:8:-;2636:6;2593:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2657:33;2683:6;2657:33;;;;;;:::i;:::-;;;;;;;;2516:181;:::o;1720:224::-;1863:13;1810:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1891:46;1923:13;1891:46;;;;;;:::i;:::-;;;;;;;;1720:224;:::o;1672:184:6:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:4:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:7:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:205::-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;1111:215:4:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;929:176:4:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;487:169:7:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;1852:180:5:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6106851760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b611027806101136000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4c9c40811610066578063b4c9c40814610108578063d223174114610124578063d7ec4c5f14610140578063e39c67441461015c578063eb6080221461017857610093565b80631f1f9fd5146100985780633631983f146100b45780636512447d146100d057806379e3e4e4146100ec575b600080fd5b6100b260048036038101906100ad9190610b0e565b610194565b005b6100ce60048036038101906100c99190610b7b565b610220565b005b6100ea60048036038101906100e59190610b7b565b61028c565b005b61010660048036038101906101019190610b7b565b610349565b005b610122600480360381019061011d9190610b0e565b6103b5565b005b61013e60048036038101906101399190610b0e565b610429565b005b61015a60048036038101906101559190610b0e565b61053f565b005b61017660048036038101906101719190610b7b565b6105ad565b005b610192600480360381019061018d9190610b7b565b610619565b005b600061019e610685565b905060008160000160109054906101000a900467ffffffffffffffff1690506101d083836106c190919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102048267ffffffffffffffff16610757565b84604051610213929190610bb7565b60405180910390a1505050565b80610229610685565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102819190610bef565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102dd576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102e6610685565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f8160405161033e9190610bef565b60405180910390a150565b80610352610685565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103aa9190610bef565b60405180910390a150565b6103be81610779565b6103c6610685565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161041e9190610c0a565b60405180910390a150565b6000610433610685565b9050600061044083610779565b9050600061044d836107f2565b90508067ffffffffffffffff168267ffffffffffffffff16111561049d576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104a99190610c54565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff160217905550610500338561088c565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610531929190610cd1565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105789190610c0a565b600060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b5050505050565b806105b6610685565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d7838160405161060e9190610bef565b60405180910390a150565b80610622610685565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161067a9190610bef565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106b89190610cfa565b90508091505090565b6106ca8261096f565b6106d3826109c8565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061072981610779565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107729190610d2e565b9050919050565b600062989680680100000000000000006107939190610d2e565b82106107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610dcd565b60405180910390fd5b629896806107e183610a3d565b6107eb9190610e1c565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361084e9190610c54565b6108589190610e4d565b6108629190610e4d565b8260010160009054906101000a900467ffffffffffffffff166108859190610e8a565b9050919050565b610894610a97565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108f2929190610ec6565b6020604051808303816000875af1158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190610f27565b61096b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610978816107f2565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a099190610cfa565b610a139190610e4d565b8260000160189054906101000a900467ffffffffffffffff16610a369190610e8a565b9050919050565b6000806298968083610a4f9190610f54565b14610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690610fd1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610aca9190610cfa565b90508091505090565b600080fd5b6000819050919050565b610aeb81610ad8565b8114610af657600080fd5b50565b600081359050610b0881610ae2565b92915050565b600060208284031215610b2457610b23610ad3565b5b6000610b3284828501610af9565b91505092915050565b600067ffffffffffffffff82169050919050565b610b5881610b3b565b8114610b6357600080fd5b50565b600081359050610b7581610b4f565b92915050565b600060208284031215610b9157610b90610ad3565b5b6000610b9f84828501610b66565b91505092915050565b610bb181610ad8565b82525050565b6000604082019050610bcc6000830185610ba8565b610bd96020830184610ba8565b9392505050565b610be981610b3b565b82525050565b6000602082019050610c046000830184610be0565b92915050565b6000602082019050610c1f6000830184610ba8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c5f82610b3b565b9150610c6a83610b3b565b9250828203905067ffffffffffffffff811115610c8a57610c89610c25565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cbb82610c90565b9050919050565b610ccb81610cb0565b82525050565b6000604082019050610ce66000830185610ba8565b610cf36020830184610cc2565b9392505050565b6000610d0582610ad8565b9150610d1083610ad8565b9250828203905081811115610d2857610d27610c25565b5b92915050565b6000610d3982610ad8565b9150610d4483610ad8565b9250828202610d5281610ad8565b91508282048414831517610d6957610d68610c25565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610db7601283610d70565b9150610dc282610d81565b602082019050919050565b60006020820190508181036000830152610de681610daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e2782610ad8565b9150610e3283610ad8565b925082610e4257610e41610ded565b5b828204905092915050565b6000610e5882610b3b565b9150610e6383610b3b565b9250828202610e7181610b3b565b9150808214610e8357610e82610c25565b5b5092915050565b6000610e9582610b3b565b9150610ea083610b3b565b9250828201905067ffffffffffffffff811115610ec057610ebf610c25565b5b92915050565b6000604082019050610edb6000830185610cc2565b610ee86020830184610ba8565b9392505050565b60008115159050919050565b610f0481610eef565b8114610f0f57600080fd5b50565b600081519050610f2181610efb565b92915050565b600060208284031215610f3d57610f3c610ad3565b5b6000610f4b84828501610f12565b91505092915050565b6000610f5f82610ad8565b9150610f6a83610ad8565b925082610f7a57610f79610ded565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fbb601683610d70565b9150610fc682610f85565b602082019050919050565b60006020820190508181036000830152610fea81610fae565b905091905056fea2646970667358221220b9d1127430e9ee8bda169203f033037b165f47bdcd28cf207a659822b366cbb064736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4c9c40811610066578063b4c9c40814610108578063d223174114610124578063d7ec4c5f14610140578063e39c67441461015c578063eb6080221461017857610093565b80631f1f9fd5146100985780633631983f146100b45780636512447d146100d057806379e3e4e4146100ec575b600080fd5b6100b260048036038101906100ad9190610b0e565b610194565b005b6100ce60048036038101906100c99190610b7b565b610220565b005b6100ea60048036038101906100e59190610b7b565b61028c565b005b61010660048036038101906101019190610b7b565b610349565b005b610122600480360381019061011d9190610b0e565b6103b5565b005b61013e60048036038101906101399190610b0e565b610429565b005b61015a60048036038101906101559190610b0e565b61053f565b005b61017660048036038101906101719190610b7b565b6105ad565b005b610192600480360381019061018d9190610b7b565b610619565b005b600061019e610685565b905060008160000160109054906101000a900467ffffffffffffffff1690506101d083836106c190919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102048267ffffffffffffffff16610757565b84604051610213929190610bb7565b60405180910390a1505050565b80610229610685565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102819190610bef565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102dd576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102e6610685565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f8160405161033e9190610bef565b60405180910390a150565b80610352610685565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103aa9190610bef565b60405180910390a150565b6103be81610779565b6103c6610685565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161041e9190610c0a565b60405180910390a150565b6000610433610685565b9050600061044083610779565b9050600061044d836107f2565b90508067ffffffffffffffff168267ffffffffffffffff16111561049d576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104a99190610c54565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff160217905550610500338561088c565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610531929190610cd1565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105789190610c0a565b600060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b5050505050565b806105b6610685565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d7838160405161060e9190610bef565b60405180910390a150565b80610622610685565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161067a9190610bef565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106b89190610cfa565b90508091505090565b6106ca8261096f565b6106d3826109c8565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061072981610779565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107729190610d2e565b9050919050565b600062989680680100000000000000006107939190610d2e565b82106107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610dcd565b60405180910390fd5b629896806107e183610a3d565b6107eb9190610e1c565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361084e9190610c54565b6108589190610e4d565b6108629190610e4d565b8260010160009054906101000a900467ffffffffffffffff166108859190610e8a565b9050919050565b610894610a97565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108f2929190610ec6565b6020604051808303816000875af1158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190610f27565b61096b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610978816107f2565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a099190610cfa565b610a139190610e4d565b8260000160189054906101000a900467ffffffffffffffff16610a369190610e8a565b9050919050565b6000806298968083610a4f9190610f54565b14610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690610fd1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610aca9190610cfa565b90508091505090565b600080fd5b6000819050919050565b610aeb81610ad8565b8114610af657600080fd5b50565b600081359050610b0881610ae2565b92915050565b600060208284031215610b2457610b23610ad3565b5b6000610b3284828501610af9565b91505092915050565b600067ffffffffffffffff82169050919050565b610b5881610b3b565b8114610b6357600080fd5b50565b600081359050610b7581610b4f565b92915050565b600060208284031215610b9157610b90610ad3565b5b6000610b9f84828501610b66565b91505092915050565b610bb181610ad8565b82525050565b6000604082019050610bcc6000830185610ba8565b610bd96020830184610ba8565b9392505050565b610be981610b3b565b82525050565b6000602082019050610c046000830184610be0565b92915050565b6000602082019050610c1f6000830184610ba8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c5f82610b3b565b9150610c6a83610b3b565b9250828203905067ffffffffffffffff811115610c8a57610c89610c25565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cbb82610c90565b9050919050565b610ccb81610cb0565b82525050565b6000604082019050610ce66000830185610ba8565b610cf36020830184610cc2565b9392505050565b6000610d0582610ad8565b9150610d1083610ad8565b9250828203905081811115610d2857610d27610c25565b5b92915050565b6000610d3982610ad8565b9150610d4483610ad8565b9250828202610d5281610ad8565b91508282048414831517610d6957610d68610c25565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610db7601283610d70565b9150610dc282610d81565b602082019050919050565b60006020820190508181036000830152610de681610daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e2782610ad8565b9150610e3283610ad8565b925082610e4257610e41610ded565b5b828204905092915050565b6000610e5882610b3b565b9150610e6383610b3b565b9250828202610e7181610b3b565b9150808214610e8357610e82610c25565b5b5092915050565b6000610e9582610b3b565b9150610ea083610b3b565b9250828201905067ffffffffffffffff811115610ec057610ebf610c25565b5b92915050565b6000604082019050610edb6000830185610cc2565b610ee86020830184610ba8565b9392505050565b60008115159050919050565b610f0481610eef565b8114610f0f57600080fd5b50565b600081519050610f2181610efb565b92915050565b600060208284031215610f3d57610f3c610ad3565b5b6000610f4b84828501610f12565b91505092915050565b6000610f5f82610ad8565b9150610f6a83610ad8565b925082610f7a57610f79610ded565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fbb601683610d70565b9150610fc682610f85565b602082019050919050565b60006020820190508181036000830152610fea81610fae565b905091905056fea2646970667358221220b9d1127430e9ee8bda169203f033037b165f47bdcd28cf207a659822b366cbb064736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:1998:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:1998:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:405:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:405:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2485:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2485:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1271:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1950:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1490:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2285:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2516:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1720:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1271:213::-;1409:10;1358:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1434:43;1466:10;1434:43;;;;;;:::i;:::-;;;;;;;;1271:213;:::o;1950:329::-;410:7;2039:38;;:6;:38;;;2035:106;;;2100:30;;;;;;;;;;;;;;2035:106;2210:6;2151:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2231:41;2265:6;2231:41;;;;;;:::i;:::-;;;;;;;;1950:329;:::o;1490:224::-;1633:13;1580:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1661:46;1693:13;1661:46;;;;;;:::i;:::-;;;;;;;;1490:224;:::o;2285:225::-;2430:15;:6;:13;:15::i;:::-;2373:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2460:43;2496:6;2460:43;;;;;;:::i;:::-;;;;;;;;2285:225;:::o;696:569::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1131:12;1099:2;:22;;;:45;;;;;;;;;;;;;;;;;;1155:43;1179:10;1191:6;1155:23;:43::i;:::-;1214:44;1239:6;1247:10;1214:44;;;;;;;:::i;:::-;;;;;;;;763:502;;;696:569;:::o;2516:181::-;2636:6;2593:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2657:33;2683:6;2657:33;;;;;;:::i;:::-;;;;;;;;2516:181;:::o;1720:224::-;1863:13;1810:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1891:46;1923:13;1891:46;;;;;;:::i;:::-;;;;;;;;1720:224;:::o;1672:184:6:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:4:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:7:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:205::-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;1111:215:4:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;929:176:4:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;487:169:7:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;1852:180:5:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f92806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a79565b61016d565b005b6100c360048036038101906100be9190610ae6565b6101f9565b005b6100df60048036038101906100da9190610ae6565b610265565b005b6100fb60048036038101906100f69190610ae6565b610322565b005b61011760048036038101906101129190610a79565b61038e565b005b610133600480360381019061012e9190610a79565b610402565b005b61014f600480360381019061014a9190610ae6565b610518565b005b61016b60048036038101906101669190610ae6565b610584565b005b60006101776105f0565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361062c90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff166106c2565b846040516101ec929190610b22565b60405180910390a1505050565b806102026105f0565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b5a565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105f0565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b5a565b60405180910390a150565b8061032b6105f0565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b5a565b60405180910390a150565b610397816106e4565b61039f6105f0565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b75565b60405180910390a150565b600061040c6105f0565b90506000610419836106e4565b905060006104268361075d565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610bbf565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff1602179055506104d933856107f7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161050a929190610c3c565b60405180910390a150505050565b806105216105f0565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105799190610b5a565b60405180910390a150565b8061058d6105f0565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105e59190610b5a565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106239190610c65565b90508091505090565b610635826108da565b61063e82610933565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610694816106e4565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106dd9190610c99565b9050919050565b600062989680680100000000000000006106fe9190610c99565b821061073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690610d38565b60405180910390fd5b6298968061074c836109a8565b6107569190610d87565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107b99190610bbf565b6107c39190610db8565b6107cd9190610db8565b8260010160009054906101000a900467ffffffffffffffff166107f09190610df5565b9050919050565b6107ff610a02565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161085d929190610e31565b6020604051808303816000875af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610e92565b6108d6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108e38161075d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109749190610c65565b61097e9190610db8565b8260000160189054906101000a900467ffffffffffffffff166109a19190610df5565b9050919050565b60008062989680836109ba9190610ebf565b146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610f3c565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a359190610c65565b90508091505090565b600080fd5b6000819050919050565b610a5681610a43565b8114610a6157600080fd5b50565b600081359050610a7381610a4d565b92915050565b600060208284031215610a8f57610a8e610a3e565b5b6000610a9d84828501610a64565b91505092915050565b600067ffffffffffffffff82169050919050565b610ac381610aa6565b8114610ace57600080fd5b50565b600081359050610ae081610aba565b92915050565b600060208284031215610afc57610afb610a3e565b5b6000610b0a84828501610ad1565b91505092915050565b610b1c81610a43565b82525050565b6000604082019050610b376000830185610b13565b610b446020830184610b13565b9392505050565b610b5481610aa6565b82525050565b6000602082019050610b6f6000830184610b4b565b92915050565b6000602082019050610b8a6000830184610b13565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca82610aa6565b9150610bd583610aa6565b9250828203905067ffffffffffffffff811115610bf557610bf4610b90565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2682610bfb565b9050919050565b610c3681610c1b565b82525050565b6000604082019050610c516000830185610b13565b610c5e6020830184610c2d565b9392505050565b6000610c7082610a43565b9150610c7b83610a43565b9250828203905081811115610c9357610c92610b90565b5b92915050565b6000610ca482610a43565b9150610caf83610a43565b9250828202610cbd81610a43565b91508282048414831517610cd457610cd3610b90565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d22601283610cdb565b9150610d2d82610cec565b602082019050919050565b60006020820190508181036000830152610d5181610d15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d9282610a43565b9150610d9d83610a43565b925082610dad57610dac610d58565b5b828204905092915050565b6000610dc382610aa6565b9150610dce83610aa6565b9250828202610ddc81610aa6565b9150808214610dee57610ded610b90565b5b5092915050565b6000610e0082610aa6565b9150610e0b83610aa6565b9250828201905067ffffffffffffffff811115610e2b57610e2a610b90565b5b92915050565b6000604082019050610e466000830185610c2d565b610e536020830184610b13565b9392505050565b60008115159050919050565b610e6f81610e5a565b8114610e7a57600080fd5b50565b600081519050610e8c81610e66565b92915050565b600060208284031215610ea857610ea7610a3e565b5b6000610eb684828501610e7d565b91505092915050565b6000610eca82610a43565b9150610ed583610a43565b925082610ee557610ee4610d58565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f26601683610cdb565b9150610f3182610ef0565b602082019050919050565b60006020820190508181036000830152610f5581610f19565b905091905056fea26469706673582212208f338edcfb36245800ee4e5a4eed15d37a2aa333c307126f47e0f62a0b3efc3864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a79565b61016d565b005b6100c360048036038101906100be9190610ae6565b6101f9565b005b6100df60048036038101906100da9190610ae6565b610265565b005b6100fb60048036038101906100f69190610ae6565b610322565b005b61011760048036038101906101129190610a79565b61038e565b005b610133600480360381019061012e9190610a79565b610402565b005b61014f600480360381019061014a9190610ae6565b610518565b005b61016b60048036038101906101669190610ae6565b610584565b005b60006101776105f0565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361062c90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff166106c2565b846040516101ec929190610b22565b60405180910390a1505050565b806102026105f0565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b5a565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105f0565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b5a565b60405180910390a150565b8061032b6105f0565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b5a565b60405180910390a150565b610397816106e4565b61039f6105f0565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b75565b60405180910390a150565b600061040c6105f0565b90506000610419836106e4565b905060006104268361075d565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610bbf565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff1602179055506104d933856107f7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161050a929190610c3c565b60405180910390a150505050565b806105216105f0565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105799190610b5a565b60405180910390a150565b8061058d6105f0565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105e59190610b5a565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106239190610c65565b90508091505090565b610635826108da565b61063e82610933565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610694816106e4565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106dd9190610c99565b9050919050565b600062989680680100000000000000006106fe9190610c99565b821061073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690610d38565b60405180910390fd5b6298968061074c836109a8565b6107569190610d87565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107b99190610bbf565b6107c39190610db8565b6107cd9190610db8565b8260010160009054906101000a900467ffffffffffffffff166107f09190610df5565b9050919050565b6107ff610a02565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161085d929190610e31565b6020604051808303816000875af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610e92565b6108d6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108e38161075d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109749190610c65565b61097e9190610db8565b8260000160189054906101000a900467ffffffffffffffff166109a19190610df5565b9050919050565b60008062989680836109ba9190610ebf565b146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610f3c565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a359190610c65565b90508091505090565b600080fd5b6000819050919050565b610a5681610a43565b8114610a6157600080fd5b50565b600081359050610a7381610a4d565b92915050565b600060208284031215610a8f57610a8e610a3e565b5b6000610a9d84828501610a64565b91505092915050565b600067ffffffffffffffff82169050919050565b610ac381610aa6565b8114610ace57600080fd5b50565b600081359050610ae081610aba565b92915050565b600060208284031215610afc57610afb610a3e565b5b6000610b0a84828501610ad1565b91505092915050565b610b1c81610a43565b82525050565b6000604082019050610b376000830185610b13565b610b446020830184610b13565b9392505050565b610b5481610aa6565b82525050565b6000602082019050610b6f6000830184610b4b565b92915050565b6000602082019050610b8a6000830184610b13565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca82610aa6565b9150610bd583610aa6565b9250828203905067ffffffffffffffff811115610bf557610bf4610b90565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2682610bfb565b9050919050565b610c3681610c1b565b82525050565b6000604082019050610c516000830185610b13565b610c5e6020830184610c2d565b9392505050565b6000610c7082610a43565b9150610c7b83610a43565b9250828203905081811115610c9357610c92610b90565b5b92915050565b6000610ca482610a43565b9150610caf83610a43565b9250828202610cbd81610a43565b91508282048414831517610cd457610cd3610b90565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d22601283610cdb565b9150610d2d82610cec565b602082019050919050565b60006020820190508181036000830152610d5181610d15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d9282610a43565b9150610d9d83610a43565b925082610dad57610dac610d58565b5b828204905092915050565b6000610dc382610aa6565b9150610dce83610aa6565b9250828202610ddc81610aa6565b9150808214610dee57610ded610b90565b5b5092915050565b6000610e0082610aa6565b9150610e0b83610aa6565b9250828201905067ffffffffffffffff811115610e2b57610e2a610b90565b5b92915050565b6000604082019050610e466000830185610c2d565b610e536020830184610b13565b9392505050565b60008115159050919050565b610e6f81610e5a565b8114610e7a57600080fd5b50565b600081519050610e8c81610e66565b92915050565b600060208284031215610ea857610ea7610a3e565b5b6000610eb684828501610e7d565b91505092915050565b6000610eca82610a43565b9150610ed583610a43565b925082610ee557610ee4610d58565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f26601683610cdb565b9150610f3182610ef0565b602082019050919050565b60006020820190508181036000830152610f5581610f19565b905091905056fea26469706673582212208f338edcfb36245800ee4e5a4eed15d37a2aa333c307126f47e0f62a0b3efc3864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 48641f42..b1640db0 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -8,6 +8,7 @@ import 'hardhat-tracer'; import '@nomiclabs/hardhat-solhint'; import 'hardhat-contract-sizer'; import 'hardhat-storage-layout-changes'; +import 'hardhat-abi-exporter'; import './tasks/deploy'; import './tasks/update-module'; import './tasks/upgrade'; @@ -23,6 +24,9 @@ const config: HardhatUserConfig = { }, solidity: { compilers: [ + { + version: '0.8.4', + }, { version: '0.8.18', settings: { @@ -54,12 +58,31 @@ const config: HardhatUserConfig = { // Your API key for Etherscan // Obtain one at https://etherscan.io/ apiKey: process.env.ETHERSCAN_KEY, + customChains: [ + { + network: 'holesky', + chainId: 17000, + urls: { + apiURL: 'https://api-holesky.etherscan.io/api', + browserURL: 'https://holesky.etherscan.io', + }, + }, + ], }, gasReporter: { enabled: true, currency: 'USD', gasPrice: 0.3, }, + abiExporter: { + path: './abis', + runOnCompile: true, + clear: true, + flat: true, + spacing: 2, + pretty: false, + only: ['contracts/SSVNetwork.sol', 'contracts/SSVNetworkViews.sol'], + }, }; if (process.env.GOERLI_ETH_NODE_URL) { diff --git a/package-lock.json b/package-lock.json index 37ef6a10..50b5a065 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,14 @@ { "name": "ssv-network", + "version": "1.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ssv-network", + "version": "1.0.2", + "license": "MIT", "devDependencies": { - "@crytic/echidna": "^0.0.6", "@nomicfoundation/hardhat-toolbox": "^2.0.0", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-solhint": "^2.0.0", @@ -20,12 +22,12 @@ "@types/node": "^17.0.23", "@typescript-eslint/eslint-plugin": "^5.36.0", "chai-as-promised": "^7.1.1", - "chalk": "^4.1.2", "cli-table": "^0.3.11", "dotenv": "^16.0.0", "eslint": "^8.23.0", "gh-pages": "^3.2.3", "hardhat": "^2.14.0", + "hardhat-abi-exporter": "^2.10.1", "hardhat-contract-sizer": "^2.6.1", "hardhat-storage-layout-changes": "^0.1.2", "hardhat-tracer": "^1.2.1", @@ -232,16 +234,6 @@ "node": ">=0.1.90" } }, - "node_modules/@crytic/echidna": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@crytic/echidna/-/echidna-0.0.6.tgz", - "integrity": "sha512-gayy5iNbc6oyhFhjAXd3B/IYaXWaNGY6IjNthGpLMzRbma+peTTAlVvgRBKdQKYWvstXAfldPdeazABwgCB6Hg==", - "dev": true, - "bin": { - "echidna": "echidna", - "fuzz-token": "fuzz-token" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -4029,6 +4021,36 @@ "node": ">=0.4.0" } }, + "node_modules/delete-empty": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz", + "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.0", + "minimist": "^1.2.0", + "path-starts-with": "^2.0.0", + "rimraf": "^2.6.2" + }, + "bin": { + "delete-empty": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/delete-empty/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -6570,6 +6592,22 @@ } } }, + "node_modules/hardhat-abi-exporter": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz", + "integrity": "sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "delete-empty": "^3.0.0" + }, + "engines": { + "node": ">=14.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, "node_modules/hardhat-contract-sizer": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz", @@ -8683,6 +8721,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-starts-with": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz", + "integrity": "sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12501,12 +12548,6 @@ "dev": true, "optional": true }, - "@crytic/echidna": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@crytic/echidna/-/echidna-0.0.6.tgz", - "integrity": "sha512-gayy5iNbc6oyhFhjAXd3B/IYaXWaNGY6IjNthGpLMzRbma+peTTAlVvgRBKdQKYWvstXAfldPdeazABwgCB6Hg==", - "dev": true - }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -15267,6 +15308,29 @@ "dev": true, "peer": true }, + "delete-empty": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz", + "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.0", + "minimist": "^1.2.0", + "path-starts-with": "^2.0.0", + "rimraf": "^2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -17396,6 +17460,16 @@ } } }, + "hardhat-abi-exporter": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz", + "integrity": "sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.5.0", + "delete-empty": "^3.0.0" + } + }, "hardhat-contract-sizer": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz", @@ -18883,6 +18957,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-starts-with": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz", + "integrity": "sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==", + "dev": true + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", diff --git a/package.json b/package.json index a0063615..eb6c5891 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,32 @@ { "name": "ssv-network", + "version": "1.0.2", + "description": "Solidity smart contracts for the SSV Network", + "author": "SSV.Network", + "repository": { + "type": "git", + "url": "https://github.com/bloxapp/ssv-network.git" + }, + "license": "MIT", + "keywords": [ + "ssv", + "ssv.network", + "solidity", + "staking" + ], + "files": [ + "contracts/**/*.sol", + "!contracts/**/deprecated/**", + "!contracts/**/mocks/**", + "!contracts/**/test/**", + "!contracts/**/upgrades/**", + "abis/*.json", + "tasks/", + "docs/", + "README.md", + "LICENSE", + "CHANGELOG.md" + ], "scripts": { "build": "npx hardhat compile", "test": "npx hardhat test", @@ -12,7 +39,6 @@ "echidna": "node .echidna.test.js" }, "devDependencies": { - "@crytic/echidna": "^0.0.6", "@nomicfoundation/hardhat-toolbox": "^2.0.0", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-solhint": "^2.0.0", @@ -26,7 +52,6 @@ "@types/node": "^17.0.23", "@typescript-eslint/eslint-plugin": "^5.36.0", "chai-as-promised": "^7.1.1", - "chalk": "^4.1.2", "cli-table": "^0.3.11", "dotenv": "^16.0.0", "eslint": "^8.23.0", @@ -35,6 +60,7 @@ "hardhat-contract-sizer": "^2.6.1", "hardhat-storage-layout-changes": "^0.1.2", "hardhat-tracer": "^1.2.1", + "hardhat-abi-exporter": "^2.10.1", "prompts": "^2.4.2", "simple-git": "^3.16.1", "ts-node": "^10.7.0", diff --git a/test/account/deposit.ts b/test/account/deposit.ts index c724eb19..2ba6b7d3 100644 --- a/test/account/deposit.ts +++ b/test/account/deposit.ts @@ -15,7 +15,7 @@ describe('Deposit Tests', () => { ssvViews = metadata.ssvViews; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); // Define the operator fee minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; diff --git a/test/account/withdraw.ts b/test/account/withdraw.ts index 6b4d5419..10ad1a7f 100644 --- a/test/account/withdraw.ts +++ b/test/account/withdraw.ts @@ -5,24 +5,25 @@ import { expect } from 'chai'; import { trackGas, GasGroup } from '../helpers/gas-usage'; // Declare globals -let ssvNetworkContract: any, ssvToken: any, cluster1: any, minDepositAmount: any; +let ssvNetworkContract: any, ssvViews: any, ssvToken: any, cluster1: any, minDepositAmount: any; describe('Withdraw Tests', () => { beforeEach(async () => { // Initialize contract const metadata = (await helpers.initializeContract()); ssvNetworkContract = metadata.contract; + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; ssvToken = metadata.ssvToken; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; // Register validators // cold register await helpers.coldRegisterValidator(); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[4].address, false, true); await ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator( helpers.DataGenerator.publicKey(1), @@ -49,19 +50,19 @@ describe('Withdraw Tests', () => { }); it('Withdraw from operator balance emits "OperatorWithdrawn"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorEarnings(uint64,uint256)'](1, helpers.CONFIG.minimalOperatorFee)).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee)).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); }); it('Withdraw from operator balance gas limits', async () => { - await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorEarnings(uint64,uint256)'](1, helpers.CONFIG.minimalOperatorFee), [GasGroup.WITHDRAW_OPERATOR_BALANCE]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee), [GasGroup.WITHDRAW_OPERATOR_BALANCE]); }); it('Withdraw the total operator balance emits "OperatorWithdrawn"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawAllOperatorEarnings(uint64)'](1)).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawAllOperatorEarnings(1)).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); }); it('Withdraw the total operator balance gas limits', async () => { - await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawAllOperatorEarnings(uint64)'](1), [GasGroup.WITHDRAW_OPERATOR_BALANCE]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawAllOperatorEarnings(1), [GasGroup.WITHDRAW_OPERATOR_BALANCE]); }); it('Withdraw from a cluster that has a removed operator emits "ClusterWithdrawn"', async () => { @@ -73,6 +74,21 @@ describe('Withdraw Tests', () => { await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdraw(cluster1.operatorIds, minDepositAmount, cluster1.cluster)).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); }); + it('Sequentially withdraw more than the cluster balance reverts "InsufficientBalance"', async () => { + const burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4; + + cluster1 = await helpers.deposit(1, cluster1.owner, cluster1.operatorIds, (minDepositAmount * 2).toString(), cluster1.cluster); + expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster)).to.be.equals(minDepositAmount * 3 - (burnPerBlock * 2)); + + cluster1 = await helpers.withdraw(4, cluster1.operatorIds, minDepositAmount, cluster1.cluster); + expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster)).to.be.equals(minDepositAmount * 2 - (burnPerBlock * 3)); + + cluster1 = await helpers.withdraw(4, cluster1.operatorIds, minDepositAmount, cluster1.cluster); + expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster)).to.be.equals(minDepositAmount - (burnPerBlock * 4)); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdraw(cluster1.operatorIds, minDepositAmount, cluster1.cluster)).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + it('Withdraw from a liquidatable cluster reverts "InsufficientBalance" (liquidation threshold)', async () => { await utils.progressBlocks(20); await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdraw(cluster1.operatorIds, 4000000000, cluster1.cluster)).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); @@ -89,20 +105,31 @@ describe('Withdraw Tests', () => { }); it('Withdraw balance from an operator I do not own reverts "CallerNotOwner"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[2])['withdrawOperatorEarnings(uint64,uint256)'](1, minDepositAmount)).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).withdrawOperatorEarnings(1, minDepositAmount)).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); }); it('Withdraw more than the operator balance reverts "InsufficientBalance"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorEarnings(uint64,uint256)'](1, minDepositAmount + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, minDepositAmount + )).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Sequentially withdraw more than the operator balance reverts "InsufficientBalance"', async () => { + await ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.be.equals(helpers.CONFIG.minimalOperatorFee * 4 - helpers.CONFIG.minimalOperatorFee * 3); + + await ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.be.equals(helpers.CONFIG.minimalOperatorFee * 6 - helpers.CONFIG.minimalOperatorFee * 6); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3 )).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); }); it('Withdraw the total balance from an operator I do not own reverts "CallerNotOwner"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[2])['withdrawAllOperatorEarnings(uint64)'](12)).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).withdrawAllOperatorEarnings(12)).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); }); it('Withdraw more than the operator total balance reverts "InsufficientBalance"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawAllOperatorEarnings(uint64)'](12)).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawAllOperatorEarnings(14)).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); }); it('Withdraw from a cluster without validators', async () => { diff --git a/test/dao/network-fee-change.ts b/test/dao/network-fee-change.ts index ae67b6a0..88290138 100644 --- a/test/dao/network-fee-change.ts +++ b/test/dao/network-fee-change.ts @@ -22,6 +22,12 @@ describe('Network Fee Tests', () => { )).to.emit(ssvNetworkContract, 'NetworkFeeUpdated').withArgs(0, networkFee); }); + it('Change network fee providing UINT64 max value reverts "Max value exceeded"', async () => { + const amount = (ethers.BigNumber.from(2).pow(64)).mul(ethers.BigNumber.from(1e8)); + await expect(ssvNetworkContract.updateNetworkFee(amount + )).to.be.revertedWith('Max value exceeded'); + }); + it('Change network fee when it was set emits "NetworkFeeUpdated"', async () => { const initialNetworkFee = helpers.CONFIG.minimalOperatorFee; await ssvNetworkContract.updateNetworkFee(initialNetworkFee); diff --git a/test/dao/network-fee-withdraw.ts b/test/dao/network-fee-withdraw.ts index 7c40f9c6..8a56a351 100644 --- a/test/dao/network-fee-withdraw.ts +++ b/test/dao/network-fee-withdraw.ts @@ -18,7 +18,7 @@ describe('DAO Network Fee Withdraw Tests', () => { networkFee = helpers.CONFIG.minimalOperatorFee; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; @@ -26,7 +26,6 @@ describe('DAO Network Fee Withdraw Tests', () => { // Set network fee await ssvNetworkContract.updateNetworkFee(networkFee); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[0].address, false, true); // Register validators // cold register await helpers.coldRegisterValidator(); @@ -34,9 +33,6 @@ describe('DAO Network Fee Withdraw Tests', () => { await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); await utils.progressBlocks(10); - // Temporary till deposit logic not available - // Mint tokens - await helpers.DB.ssvToken.mint(ssvNetworkContract.address, minDepositAmount); }); it('Withdraw network earnings emits "NetworkEarningsWithdrawn"', async () => { @@ -69,4 +65,23 @@ describe('DAO Network Fee Withdraw Tests', () => { await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).withdrawNetworkEarnings(amount )).to.be.revertedWith('Ownable: caller is not the owner'); }); + + it('Withdraw network earnings providing UINT64 max value reverts "Max value exceeded"', async () => { + const amount = (ethers.BigNumber.from(2).pow(64)).mul(ethers.BigNumber.from(1e8)); + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount + )).to.be.revertedWith('Max value exceeded'); + }); + + it('Withdraw network earnings sequentially when not enough balance reverts "InsufficientBalance"', async () => { + const amount = await ssvViews.getNetworkEarnings() / 2; + + await ssvNetworkContract.withdrawNetworkEarnings(amount); + expect(await ssvViews.getNetworkEarnings()).to.be.equals(((networkFee * 13) + (networkFee * 11) - amount)); + + await ssvNetworkContract.withdrawNetworkEarnings(amount); + expect(await ssvViews.getNetworkEarnings()).to.be.equals(((networkFee * 14) + (networkFee * 12) - amount * 2)); + + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount + )).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); }); \ No newline at end of file diff --git a/test/dao/operational.ts b/test/dao/operational.ts index 88969e35..27ecdfc0 100644 --- a/test/dao/operational.ts +++ b/test/dao/operational.ts @@ -1,14 +1,19 @@ // Declare imports import * as helpers from '../helpers/contract-helpers'; +import { trackGas } from '../helpers/gas-usage'; +import { progressBlocks } from '../helpers/utils'; + import { expect } from 'chai'; -let ssvNetworkContract: any; +let ssvNetworkContract: any, ssvNetworkViews: any, firstCluster: any; // Declare globals describe('DAO operational Tests', () => { beforeEach(async () => { // Initialize contract - ssvNetworkContract = (await helpers.initializeContract()).contract; + const metadata = (await helpers.initializeContract()); + ssvNetworkContract = metadata.contract; + ssvNetworkViews = metadata.ssvViews; }); it('Starting the transfer process does not change owner', async () => { @@ -24,4 +29,56 @@ describe('DAO operational Tests', () => { expect(await ssvNetworkContract.owner()).equals(helpers.DB.owners[4].address); }); + it('Get the network validators count (add/remove validaotor)', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + + const deposit = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, deposit); + + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(4), + deposit, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + + firstCluster = register.eventsByName.ValidatorAdded[0].args; + + expect((await ssvNetworkViews.getNetworkValidatorsCount())).to.equal(1); + + await ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds, + firstCluster.cluster + ); + expect((await ssvNetworkViews.getNetworkValidatorsCount())).to.equal(0); + }); + + it('Get the network validators count (add/remove validaotor)', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + + const deposit = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; + firstCluster = await helpers.registerValidators(4, 1, deposit.toString(), helpers.DataGenerator.cluster.new()); + + expect((await ssvNetworkViews.getNetworkValidatorsCount())).to.equal(1); + + await progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + + await ssvNetworkContract.connect(helpers.DB.owners[4]).liquidate( + firstCluster.args.owner, + firstCluster.args.operatorIds, + firstCluster.args.cluster + ); + + expect((await ssvNetworkViews.getNetworkValidatorsCount())).to.equal(0); + }); + }); \ No newline at end of file diff --git a/test/deployment/deploy.ts b/test/deployment/deploy.ts index fd03fa5f..e4392f80 100644 --- a/test/deployment/deploy.ts +++ b/test/deployment/deploy.ts @@ -14,9 +14,18 @@ describe('Deployment tests', () => { ssvToken = metadata.ssvToken; }); - it('Upgrade SSVNetwork contract. Check new function execution', async () => { - await ssvNetworkContract.setRegisterAuth(DB.owners[1].address, true, false); + it('Check default values after deploying', async () => { + expect((await ssvNetworkViews.getNetworkValidatorsCount())).to.equal(0); + expect((await ssvNetworkViews.getNetworkEarnings())).to.equal(0); + expect((await ssvNetworkViews.getOperatorFeeIncreaseLimit())).to.equal(CONFIG.operatorMaxFeeIncrease); + expect((await ssvNetworkViews.getOperatorFeePeriods())).to.deep.equal([CONFIG.declareOperatorFeePeriod, CONFIG.executeOperatorFeePeriod]); + expect((await ssvNetworkViews.getLiquidationThresholdPeriod())).to.equal(CONFIG.minimalBlocksBeforeLiquidation); + expect((await ssvNetworkViews.getMinimumLiquidationCollateral())).to.equal(CONFIG.minimumLiquidationCollateral); + expect((await ssvNetworkViews.getValidatorsPerOperatorLimit())).to.equal(CONFIG.validatorsPerOperatorLimit); + expect((await ssvNetworkViews.getOperatorFeeIncreaseLimit())).to.equal(CONFIG.operatorMaxFeeIncrease); + }); + it('Upgrade SSVNetwork contract. Check new function execution', async () => { await ssvNetworkContract.connect(DB.owners[1]).registerOperator( DataGenerator.publicKey(0), CONFIG.minimalOperatorFee); @@ -96,41 +105,6 @@ describe('Deployment tests', () => { expect(await ssvNetworkViews.getNetworkFee()).to.be.equals(0); }); - it('Remove registerAuth from SSVNetwork contract', async () => { - const publicKey = DataGenerator.publicKey(4); - await ssvNetworkContract.setRegisterAuth(DB.owners[1].address, true, false); - - await ssvNetworkContract.connect(DB.owners[1]).registerOperator( - publicKey, - CONFIG.minimalOperatorFee); - - const SSVNetworkUpgrade = await ethers.getContractFactory("SSVNetworkUpgrade"); - const ssvNetworkUpgrade = await upgrades.upgradeProxy(ssvNetworkContract.address, SSVNetworkUpgrade, { - kind: 'uups', - unsafeAllow: ['delegatecall'] - }); - await ssvNetworkUpgrade.deployed(); - - expect(await ssvNetworkViews.getOperatorById(1)).to.deep.equal( - [DB.owners[1].address, // owner - CONFIG.minimalOperatorFee, // fee - 0, // validatorCount - ethers.constants.AddressZero, // whitelisted - false, // isPrivate - true // active - ]); - - await expect(ssvNetworkContract.connect(DB.owners[4]).registerOperator( - publicKey, - CONFIG.minimalOperatorFee - )).to.be.revertedWithCustomError(ssvNetworkContract, 'OperatorAlreadyExists'); - - await expect(ssvNetworkContract.connect(DB.owners[1]).registerOperator( - DataGenerator.publicKey(2), - CONFIG.minimalOperatorFee - )).to.emit(ssvNetworkContract, 'OperatorAdded').withArgs(2, DB.owners[1].address, DataGenerator.publicKey(2), CONFIG.minimalOperatorFee); - }); - it('Update a module (SSVOperators)', async () => { const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); const ssvNetwork = await ssvNetworkFactory.attach(ssvNetworkContract.address); diff --git a/test/deployment/version.ts b/test/deployment/version.ts index d13aa736..d6548c84 100644 --- a/test/deployment/version.ts +++ b/test/deployment/version.ts @@ -20,7 +20,7 @@ describe('Version upgrade tests', () => { await ssvNetworkContract.updateModule(helpers.SSV_MODULES.SSV_VIEWS, viewsContract.address) - expect(await ssvNetworkViews.getVersion()).to.equal("v1.0.0.rc3"); + expect(await ssvNetworkViews.getVersion()).to.equal("v1.0.2"); }); }); \ No newline at end of file diff --git a/test/helpers/contract-helpers.ts b/test/helpers/contract-helpers.ts index 8bef455c..6dcc2885 100644 --- a/test/helpers/contract-helpers.ts +++ b/test/helpers/contract-helpers.ts @@ -65,7 +65,7 @@ export const DataGenerator = { export const initializeContract = async () => { CONFIG = { - initialVersion: "v1.0.0.rc3", + initialVersion: "v1.0.2", operatorMaxFeeIncrease: 1000, declareOperatorFeePeriod: 3600, // HOUR executeOperatorFeePeriod: 86400, // DAY @@ -145,8 +145,6 @@ export const initializeContract = async () => { await DB.ssvNetwork.contract.deployed(); - await DB.ssvNetwork.contract.setRegisterAuth(DB.owners[0].address, true, true); - DB.ssvViews.contract = await upgrades.deployProxy(ssvViews, [ DB.ssvNetwork.contract.address ], @@ -170,7 +168,6 @@ export const initializeContract = async () => { }; export const registerOperators = async (ownerId: number, numberOfOperators: number, fee: string, gasGroups: GasGroup[] = [GasGroup.REGISTER_OPERATOR]) => { - await DB.ssvNetwork.contract.setRegisterAuth(DB.owners[ownerId].address, true, false); for (let i = 0; i < numberOfOperators; ++i) { const { eventsByName } = await trackGas( DB.ssvNetwork.contract.connect(DB.owners[ownerId]).registerOperator(DataGenerator.publicKey(i), fee), @@ -230,7 +227,6 @@ export const reactivate = async (ownerId: number, operatorIds: number[], amount: }; export const registerValidators = async (ownerId: number, numberOfValidators: number, amount: string, operatorIds: number[], gasGroups?: GasGroup[]) => { - await DB.ssvNetwork.contract.setRegisterAuth(DB.owners[ownerId].address, false, true); const validators: any = []; let args: any; // Register validators to contract @@ -260,8 +256,6 @@ export const registerValidators = async (ownerId: number, numberOfValidators: nu }; export const registerValidatorsRaw = async (ownerId: number, numberOfValidators: number, amount: string, operatorIds: number[], gasGroups?: GasGroup[]) => { - await DB.ssvNetwork.contract.setRegisterAuth(DB.owners[ownerId].address, false, true); - let cluster: any = { validatorCount: 0, networkFeeIndex: 0, @@ -294,13 +288,11 @@ export const getCluster = (payload: any) => ethers.utils.AbiCoder.prototype.enco ); export const coldRegisterValidator = async () => { - await DB.ssvNetwork.contract.setRegisterAuth(DB.owners[0].address, false, true); - await DB.ssvToken.approve(DB.ssvNetwork.contract.address, '1000000000000000'); await DB.ssvNetwork.contract.registerValidator( DataGenerator.publicKey(90), - [1, 2, 3, 4], - DataGenerator.shares(4), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + DataGenerator.shares(14), '1000000000000000', { validatorCount: 0, diff --git a/test/helpers/gas-usage.ts b/test/helpers/gas-usage.ts index d67cd633..534ec15e 100644 --- a/test/helpers/gas-usage.ts +++ b/test/helpers/gas-usage.ts @@ -28,9 +28,13 @@ export enum GasGroup { REGISTER_VALIDATOR_WITHOUT_DEPOSIT_13, REMOVE_VALIDATOR, + REMOVE_VALIDATOR_7, + REMOVE_VALIDATOR_10, + REMOVE_VALIDATOR_13, DEPOSIT, WITHDRAW_CLUSTER_BALANCE, WITHDRAW_OPERATOR_BALANCE, + VALIDATOR_EXIT, LIQUIDATE_CLUSTER_4, LIQUIDATE_CLUSTER_7, @@ -78,9 +82,14 @@ const MAX_GAS_PER_GROUP: any = { [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_13]: 394000, [GasGroup.REMOVE_VALIDATOR]: 113500, + [GasGroup.REMOVE_VALIDATOR_7]: 155000, + [GasGroup.REMOVE_VALIDATOR_10]: 196500, + [GasGroup.REMOVE_VALIDATOR_13]: 238000, [GasGroup.DEPOSIT]: 77500, [GasGroup.WITHDRAW_CLUSTER_BALANCE]: 94500, [GasGroup.WITHDRAW_OPERATOR_BALANCE]: 64900, + [GasGroup.VALIDATOR_EXIT]: 42200, + [GasGroup.LIQUIDATE_CLUSTER_4]: 129300, [GasGroup.LIQUIDATE_CLUSTER_7]: 170500, [GasGroup.LIQUIDATE_CLUSTER_10]: 211600, diff --git a/test/liquidate/liquidate.ts b/test/liquidate/liquidate.ts index e4346fc4..5691499f 100644 --- a/test/liquidate/liquidate.ts +++ b/test/liquidate/liquidate.ts @@ -22,7 +22,6 @@ describe('Liquidate Tests', () => { // cold register await helpers.coldRegisterValidator(); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, false, true); // first validator await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( diff --git a/test/liquidate/liquidated-cluster.ts b/test/liquidate/liquidated-cluster.ts index 4c33e168..a0afb027 100644 --- a/test/liquidate/liquidated-cluster.ts +++ b/test/liquidate/liquidated-cluster.ts @@ -15,7 +15,7 @@ describe('Liquidate Tests', () => { ssvViews = metadata.ssvViews; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); networkFee = helpers.CONFIG.minimalOperatorFee; burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; @@ -23,7 +23,6 @@ describe('Liquidate Tests', () => { await ssvNetworkContract.updateNetworkFee(networkFee); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, false, true); // first validator await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount * 2); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( @@ -125,8 +124,6 @@ describe('Liquidate Tests', () => { }); it('Remove validator -> withdraw -> try liquidate reverts "ClusterNotLiquidatable"', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[2].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( helpers.DataGenerator.publicKey(2), diff --git a/test/liquidate/reactivate.ts b/test/liquidate/reactivate.ts index f19537d7..8a6c5d42 100644 --- a/test/liquidate/reactivate.ts +++ b/test/liquidate/reactivate.ts @@ -14,7 +14,7 @@ describe('Reactivate Tests', () => { ssvNetworkContract = metadata.contract; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; @@ -22,7 +22,6 @@ describe('Reactivate Tests', () => { // cold register await helpers.coldRegisterValidator(); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, false, true); // first validator await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( diff --git a/test/operators/others.ts b/test/operators/others.ts index 5de72c00..e40916da 100644 --- a/test/operators/others.ts +++ b/test/operators/others.ts @@ -14,7 +14,6 @@ describe('Others Operator Tests', () => { }); it('Add fee recipient address emits "FeeRecipientAddressUpdated"', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, true, false); await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).setFeeRecipientAddress( helpers.DB.owners[2].address )) @@ -37,7 +36,6 @@ describe('Others Operator Tests', () => { }); it('Non-owner remove operator whitelisted address reverts "CallerNotOwner"', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, true, false); const result = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( helpers.DataGenerator.publicKey(1), helpers.CONFIG.minimalOperatorFee @@ -63,7 +61,6 @@ describe('Others Operator Tests', () => { }); it('Non-owner update operator whitelisted address reverts "CallerNotOwner"', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, true, false); const result = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( helpers.DataGenerator.publicKey(1), helpers.CONFIG.minimalOperatorFee diff --git a/test/operators/register-auth.ts b/test/operators/register-auth.ts deleted file mode 100644 index fb2abd48..00000000 --- a/test/operators/register-auth.ts +++ /dev/null @@ -1,87 +0,0 @@ -// Declare imports -import * as helpers from '../helpers/contract-helpers'; -import { expect } from 'chai'; - -// Declare globals -let ssvNetworkContract: any; - -describe('Register Auth Operator Tests', () => { - before(async () => { - const metadata = (await helpers.initializeContract()); - ssvNetworkContract = metadata.contract; - }); - - it('Register auth and get auth data', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[10].address, true, false); - expect(await ssvNetworkContract.getRegisterAuth(helpers.DB.owners[10].address)).to.deep.equal( - [true, false] - ); - - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[11].address, false, true); - expect(await ssvNetworkContract.getRegisterAuth(helpers.DB.owners[11].address)).to.deep.equal( - [false, true] - ) - - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[12].address, true, true); - expect(await ssvNetworkContract.getRegisterAuth(helpers.DB.owners[12].address)).to.deep.equal( - [true, true] - ) - - expect(await ssvNetworkContract.getRegisterAuth(helpers.DB.owners[5].address)).to.deep.equal( - [false, false] - ) - }); - - it('Register operator with unauthorized address reverts "NotAuthorized"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( - helpers.DataGenerator.publicKey(12), - helpers.CONFIG.minimalOperatorFee - )).to.be.revertedWithCustomError(ssvNetworkContract, 'NotAuthorized'); - - }); - - it('Register operator with unauthorized address reverts "NotAuthorized" (2)', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, false, true); - - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( - helpers.DataGenerator.publicKey(12), - helpers.CONFIG.minimalOperatorFee - )).to.be.revertedWithCustomError(ssvNetworkContract, 'NotAuthorized'); - }); - - it('Register validator with unauthorized address reverts "NotAuthorized"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).registerValidator( - helpers.DataGenerator.publicKey(12), - [1, 2, 3, 4], - helpers.DataGenerator.shares(4), - 10000000, - { - validatorCount: 0, - networkFeeIndex: 0, - index: 0, - balance: 0, - active: true - } - )).to.be.revertedWithCustomError(ssvNetworkContract, 'NotAuthorized'); - - }); - - it('Register validator with unauthorized address reverts "NotAuthorized" (2)', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[3].address, true, false); - - await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).registerValidator( - helpers.DataGenerator.publicKey(12), - [1, 2, 3, 4], - helpers.DataGenerator.shares(4), - 10000000, - { - validatorCount: 0, - networkFeeIndex: 0, - index: 0, - balance: 0, - active: true - } - )).to.be.revertedWithCustomError(ssvNetworkContract, 'NotAuthorized'); - }); - -}); \ No newline at end of file diff --git a/test/operators/register.ts b/test/operators/register.ts index 480dea69..1e603f9c 100644 --- a/test/operators/register.ts +++ b/test/operators/register.ts @@ -11,8 +11,6 @@ describe('Register Operator Tests', () => { const metadata = (await helpers.initializeContract()); ssvNetworkContract = metadata.contract; ssvViews = metadata.ssvViews; - - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, true, false); }); it('Register operator emits "OperatorAdded"', async () => { diff --git a/test/operators/remove.ts b/test/operators/remove.ts index 56367e2d..c3bffdec 100644 --- a/test/operators/remove.ts +++ b/test/operators/remove.ts @@ -13,7 +13,7 @@ describe('Remove Operator Tests', () => { ssvViews = metadata.ssvViews; // Register operators - await helpers.registerOperators(0, 5, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); // Register a validator // cold register @@ -26,9 +26,8 @@ describe('Remove Operator Tests', () => { }); it('Remove private operator emits "OperatorRemoved"', async () => { - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[0].address, true, false); const result = await trackGas(ssvNetworkContract.registerOperator( - helpers.DataGenerator.publicKey(12), + helpers.DataGenerator.publicKey(22), helpers.CONFIG.minimalOperatorFee )); const { operatorId } = result.eventsByName.OperatorAdded[0].args; @@ -53,7 +52,7 @@ describe('Remove Operator Tests', () => { }); it('Remove operator with 0 balance emits "OperatorWithdrawn"', async () => { - await expect(ssvNetworkContract.removeOperator(5)).not.to.emit(ssvNetworkContract, 'OperatorWithdrawn'); + await expect(ssvNetworkContract.removeOperator(14)).not.to.emit(ssvNetworkContract, 'OperatorWithdrawn'); }); it('Remove operator with a balance emits "OperatorWithdrawn"', async () => { diff --git a/test/operators/update-fee.ts b/test/operators/update-fee.ts index ed43f2ee..8d31054b 100644 --- a/test/operators/update-fee.ts +++ b/test/operators/update-fee.ts @@ -123,7 +123,6 @@ describe('Operator Fee Tests', () => { it('Declare fee too high reverts "FeeTooHigh" -> DAO updates limit -> declare fee emits "OperatorFeeDeclared"', async () => { const maxOperatorFee = 8e14; await ssvNetworkContract.updateMaximumOperatorFee(maxOperatorFee); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[3].address, true, false); await ssvNetworkContract.connect(helpers.DB.owners[3]).registerOperator(helpers.DataGenerator.publicKey(10), maxOperatorFee); const newOperatorFee = maxOperatorFee + maxOperatorFee / 10; diff --git a/test/sanity/balances.ts b/test/sanity/balances.ts index dfc9b883..876cecf3 100644 --- a/test/sanity/balances.ts +++ b/test/sanity/balances.ts @@ -15,7 +15,7 @@ describe('Balance Tests', () => { ssvViews = metadata.ssvViews; // Register operators - await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); networkFee = helpers.CONFIG.minimalOperatorFee; burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; @@ -79,20 +79,20 @@ describe('Balance Tests', () => { it('Check operators earnings in three blocks, one after the other', async () => { await utils.progressBlocks(1); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2); await utils.progressBlocks(1); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2); await utils.progressBlocks(1); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 3); - expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(2)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(4)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2); }); it('Check cluster balance with removed operator', async () => { @@ -128,10 +128,11 @@ describe('Balance Tests', () => { // update network fee // register a new validator with some shared operators // update network fee + // progress blocks in the process await utils.progressBlocks(1); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 3 + helpers.CONFIG.minimalOperatorFee); expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock); expect(await ssvViews.getNetworkEarnings() - initNetworkFeeBalance).to.equal(networkFee * 2); @@ -148,28 +149,28 @@ describe('Balance Tests', () => { const cluster2 = await helpers.registerValidators(4, 1, minDep2.toString(), [3, 4, 5, 6]); await utils.progressBlocks(2); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 + helpers.CONFIG.minimalOperatorFee * 9); - expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 + helpers.CONFIG.minimalOperatorFee * 9 + helpers.CONFIG.minimalOperatorFee * 2); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 8 + helpers.CONFIG.minimalOperatorFee * 8); + expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 8 + helpers.CONFIG.minimalOperatorFee * 8 + helpers.CONFIG.minimalOperatorFee * 2); - expect(await ssvViews.getOperatorEarnings(5)).to.equal(helpers.CONFIG.minimalOperatorFee * 2); - expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 6); + expect(await ssvViews.getOperatorEarnings(5)).to.equal(helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 5); + expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 5); expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster)).to.equal(minDep2 - newBurnPerBlock * 2); // cold cluster + cluster1 * networkFee (4) + (cold cluster + cluster1 * newNetworkFee (5 + 5)) + cluster2 * newNetworkFee (2) - expect(await ssvViews.getNetworkEarnings() - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 5 + newNetworkFee * 5 + newNetworkFee * 4); + expect(await ssvViews.getNetworkEarnings() - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 5 + newNetworkFee * 4 + newNetworkFee * 3); await ssvNetworkContract.updateNetworkFee(networkFee); await utils.progressBlocks(4); - expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 7 - burnPerBlock * 4); + expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 6 - burnPerBlock * 4); expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster)).to.equal(minDep2 - newBurnPerBlock * 3 - burnPerBlock * 4); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 15 + helpers.CONFIG.minimalOperatorFee * 14); - expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 15 + helpers.CONFIG.minimalOperatorFee * 14 + helpers.CONFIG.minimalOperatorFee * 7); - expect(await ssvViews.getOperatorEarnings(5)).to.equal(helpers.CONFIG.minimalOperatorFee * 7); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 14 + helpers.CONFIG.minimalOperatorFee * 12); + expect(await ssvViews.getOperatorEarnings(3)).to.equal(helpers.CONFIG.minimalOperatorFee * 14 + helpers.CONFIG.minimalOperatorFee * 12 + helpers.CONFIG.minimalOperatorFee * 7); + expect(await ssvViews.getOperatorEarnings(5)).to.equal(helpers.CONFIG.minimalOperatorFee * 11 + helpers.CONFIG.minimalOperatorFee * 10); // cold cluster + cluster1 * networkFee (4) + (cold cluster + cluster1 * newNetworkFee (6 + 6)) + cluster2 * newNetworkFee (3) + (cold cluster + cluster1 + cluster2 * networkFee (4 + 4 + 4)) - expect(await ssvViews.getNetworkEarnings() - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 7 + newNetworkFee * 7 + newNetworkFee * 3 + networkFee * 12); + expect(await ssvViews.getNetworkEarnings() - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 6 + newNetworkFee * 6 + newNetworkFee * 3 + networkFee * 12); }); it('Check operator earnings and cluster balance when reducing operator fee"', async () => { @@ -178,7 +179,7 @@ describe('Balance Tests', () => { await utils.progressBlocks(2); - expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee + newFee * 4); + expect(await ssvViews.getOperatorEarnings(1)).to.equal(helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee + newFee * 2); expect(await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster)).to.equal(minDepositAmount - burnPerBlock - ((helpers.CONFIG.minimalOperatorFee * 3 + networkFee) * 2) - newFee * 2); }); diff --git a/test/validators/others.ts b/test/validators/others.ts new file mode 100644 index 00000000..705e103c --- /dev/null +++ b/test/validators/others.ts @@ -0,0 +1,154 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +// Declare globals +let ssvNetworkContract: any, minDepositAmount: any, firstCluster: any; + +describe('Other Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = (await helpers.initializeContract()); + ssvNetworkContract = metadata.contract; + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + // Register a validator + // cold register + await helpers.coldRegisterValidator(); + + // first validator + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + ), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + firstCluster = register.eventsByName.ValidatorAdded[0].args; + }); + + it('Exiting a validator emits "ValidatorExited"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds, + )).to.emit(ssvNetworkContract, 'ValidatorExited') + .withArgs(helpers.DB.owners[1].address, firstCluster.operatorIds, helpers.DataGenerator.publicKey(1)); + }); + + it('Exiting a validator gas limit', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds, + ), [GasGroup.VALIDATOR_EXIT]); + }); + + it('Exiting one of the validators in a cluster emits "ValidatorExited"', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(4), + minDepositAmount, + firstCluster.cluster + )); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(2), + firstCluster.operatorIds, + )).to.emit(ssvNetworkContract, 'ValidatorExited') + .withArgs(helpers.DB.owners[1].address, firstCluster.operatorIds, helpers.DataGenerator.publicKey(2)); + }); + + it('Exiting a removed validator reverts "ValidatorDoesNotExist"', async () => { + await ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds, + firstCluster.cluster + ); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds + )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); + + it('Exiting a non-existing validator reverts "ValidatorDoesNotExist"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(12), + firstCluster.operatorIds + )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); + + it('Exiting a validator with empty operator list reverts "IncorrectValidatorState"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + [] + )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); + }); + + it('Exiting a validator with empty public key reverts "ValidatorDoesNotExist"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + '0x', + firstCluster.operatorIds + )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); + + it('Exiting a validator using the wrong account reverts "ValidatorDoesNotExist"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).exitValidator( + helpers.DataGenerator.publicKey(1), + firstCluster.operatorIds + )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); + + it('Exiting a validator with incorrect operators (unsorted list) reverts with "IncorrectValidatorState"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + [4, 3, 2, 1] + )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); + }); + + it('Exiting a validator with incorrect operators (too many operators) reverts with "IncorrectValidatorState"', async () => { + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 13; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(13), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + const secondCluster = register.eventsByName.ValidatorAdded[0].args; + + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).exitValidator( + helpers.DataGenerator.publicKey(2), + secondCluster.operatorIds, + )).to.emit(ssvNetworkContract, 'ValidatorExited') + .withArgs(helpers.DB.owners[2].address, secondCluster.operatorIds, helpers.DataGenerator.publicKey(2)); + }); + + it('Exiting a validator with incorrect operators reverts with "IncorrectValidatorState"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 5] + )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); + }); +}); \ No newline at end of file diff --git a/test/validators/register.ts b/test/validators/register.ts index 894f19cd..52f5f9c0 100644 --- a/test/validators/register.ts +++ b/test/validators/register.ts @@ -20,7 +20,6 @@ describe('Register Validator Tests', () => { minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; // cold register - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[6].address, false, true); await helpers.DB.ssvToken.connect(helpers.DB.owners[6]).approve(helpers.DB.ssvNetwork.contract.address, '1000000000000000'); cluster1 = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[6]).registerValidator( helpers.DataGenerator.publicKey(90), @@ -35,8 +34,6 @@ describe('Register Validator Tests', () => { active: true } )); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, true, true); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[0].address, true, true); }); it('Register validator with 4 operators emits "ValidatorAdded"', async () => { @@ -132,8 +129,6 @@ describe('Register Validator Tests', () => { args.cluster ), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[2].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( helpers.DataGenerator.publicKey(4), @@ -250,8 +245,6 @@ describe('Register Validator Tests', () => { args.cluster ), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_7]); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[2].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( helpers.DataGenerator.publicKey(4), @@ -368,8 +361,6 @@ describe('Register Validator Tests', () => { args.cluster ), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_10]); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[2].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( helpers.DataGenerator.publicKey(4), @@ -486,8 +477,6 @@ describe('Register Validator Tests', () => { args.cluster ), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_13]); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[2].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( helpers.DataGenerator.publicKey(4), @@ -795,8 +784,6 @@ describe('Register Validator Tests', () => { await ssvNetworkContract.connect(helpers.DB.owners[1]).setOperatorWhitelist(operatorId, helpers.DB.owners[3].address); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[3].address, false, true); - await helpers.DB.ssvToken.connect(helpers.DB.owners[3]).approve(ssvNetworkContract.address, minDepositAmount); await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).registerValidator( helpers.DataGenerator.publicKey(1), diff --git a/test/validators/remove.ts b/test/validators/remove.ts index 6cc23b45..dbae9393 100644 --- a/test/validators/remove.ts +++ b/test/validators/remove.ts @@ -22,7 +22,6 @@ describe('Remove Validator Tests', () => { // cold register await helpers.coldRegisterValidator(); - await ssvNetworkContract.setRegisterAuth(helpers.DB.owners[1].address, false, true); // first validator await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( @@ -59,7 +58,7 @@ describe('Remove Validator Tests', () => { )).to.emit(ssvNetworkContract, 'ValidatorRemoved'); }); - it('Remove validator gas limit', async () => { + it('Remove validator gas limit (4 operators cluster)', async () => { await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, @@ -67,6 +66,81 @@ describe('Remove Validator Tests', () => { ), [GasGroup.REMOVE_VALIDATOR]); }); + it('Remove validator gas limit (7 operators cluster)', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount * 2); + + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(7), + minDepositAmount * 2, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + firstCluster = register.eventsByName.ValidatorAdded[0].args; + + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( + helpers.DataGenerator.publicKey(2), + firstCluster.operatorIds, + firstCluster.cluster + ), [GasGroup.REMOVE_VALIDATOR_7]); + }); + + it('Remove validator gas limit (10 operators cluster)', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount * 3); + + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(10), + minDepositAmount * 3, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + firstCluster = register.eventsByName.ValidatorAdded[0].args; + + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( + helpers.DataGenerator.publicKey(2), + firstCluster.operatorIds, + firstCluster.cluster + ), [GasGroup.REMOVE_VALIDATOR_10]); + }); + + it('Remove validator gas limit (13 operators cluster)', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount * 4); + + const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(10), + minDepositAmount * 4, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + firstCluster = register.eventsByName.ValidatorAdded[0].args; + + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( + helpers.DataGenerator.publicKey(2), + firstCluster.operatorIds, + firstCluster.cluster + ), [GasGroup.REMOVE_VALIDATOR_13]); + }); + it('Remove validator with a removed operator in the cluster', async () => { await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]); await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( From d7deb4f02b357f49eef70153e985af7d0b9ad1e6 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Wed, 14 Feb 2024 18:30:02 +0100 Subject: [PATCH 14/19] fix: recovered the SSVOperators.sol but need to discuss --- contracts/modules/SSVOperators.sol | 5 ----- crytic-export/combined_solc.json | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/contracts/modules/SSVOperators.sol b/contracts/modules/SSVOperators.sol index a227ef57..fd6c0163 100644 --- a/contracts/modules/SSVOperators.sol +++ b/contracts/modules/SSVOperators.sol @@ -62,7 +62,6 @@ contract SSVOperators is ISSVOperators { operator.snapshot.balance = 0; operator.validatorCount = 0; operator.fee = 0; - operator.whitelisted = false; s.operators[operatorId] = operator; @@ -72,10 +71,6 @@ contract SSVOperators is ISSVOperators { _transferOperatorBalanceUnsafe(operatorId, currentBalance.expand()); } emit OperatorRemoved(operatorId); - - delete s.operatorFeeChangeRequests[operatorId]; - - emit OperatorFeeDeclarationCancelled(msg.sender, operatorId); } function setOperatorWhitelist(uint64 operatorId, address whitelisted) external { diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 3320c94c..ea844460 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol": {"AST": {"absolutePath": "contracts/echidna/DAO.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "DAO": [36], "DEDUCTED_DIGITS": [676], "IERC20": [1077], "ISSVDAO": [372], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVDAO": [280], "SSVModules": [864], "SSVStorage": [934], "SSVStorageProtocol": [999], "StorageData": [911], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 37, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "../modules/SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 37, "sourceUnit": 281, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["119:6:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 280, "src": "119:6:0"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "119:6:0"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 36, "linearizedBaseContracts": [36, 280, 372, 854], "name": "DAO", "nameLocation": "112:3:0", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "146:111:0", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "180:2:0", "nodeType": "VariableDeclaration", "scope": 22, "src": "156:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["156:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "156:15:0"}, "referencedDeclaration": 976, "src": "156:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "185:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "204:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "185:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "185:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "156:54:0"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "220:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "223:10:0", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "220:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "236:9:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "248:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "236:14:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "220:30:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "220:30:0"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "143:2:0"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "146:0:0"}, "scope": 36, "src": "132:125:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "315:43:0", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "347:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "325:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$36", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "330:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 89, "src": "325:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "325:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "325:26:0"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "272:22:0", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "303:3:0", "nodeType": "VariableDeclaration", "scope": 35, "src": "295:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "295:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "294:13:0"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "315:0:0"}, "scope": 36, "src": "263:95:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 37, "src": "103:257:0", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:316:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [372], "ISSVNetworkCore": [854]}, "id": 373, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 282, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 283, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 373, "sourceUnit": 855, "src": "70:31:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 284, "name": "ISSVNetworkCore", "nameLocations": ["124:15:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 854, "src": "124:15:1"}, "id": 285, "nodeType": "InheritanceSpecifier", "src": "124:15:1"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 372, "linearizedBaseContracts": [372, 854], "name": "ISSVDAO", "nameLocation": "113:7:1", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 286, "nodeType": "StructuredDocumentation", "src": "146:90:1", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 291, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:1", "nodeType": "FunctionDefinition", "parameters": {"id": 289, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 288, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:1", "nodeType": "VariableDeclaration", "scope": 291, "src": "267:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 287, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:1"}, "returnParameters": {"id": 290, "nodeType": "ParameterList", "parameters": [], "src": "288:0:1"}, "scope": 372, "src": "241:48:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 292, "nodeType": "StructuredDocumentation", "src": "295:93:1", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 297, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:1", "nodeType": "FunctionDefinition", "parameters": {"id": 295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 294, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:1", "nodeType": "VariableDeclaration", "scope": 297, "src": "426:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:1"}, "returnParameters": {"id": 296, "nodeType": "ParameterList", "parameters": [], "src": "450:0:1"}, "scope": 372, "src": "393:58:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 298, "nodeType": "StructuredDocumentation", "src": "457:124:1", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 303, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 301, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 300, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:1", "nodeType": "VariableDeclaration", "scope": 303, "src": "626:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 299, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:1"}, "returnParameters": {"id": 302, "nodeType": "ParameterList", "parameters": [], "src": "653:0:1"}, "scope": 372, "src": "586:68:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 304, "nodeType": "StructuredDocumentation", "src": "660:113:1", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 309, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 306, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:1", "nodeType": "VariableDeclaration", "scope": 309, "src": "818:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 305, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:1"}, "returnParameters": {"id": 308, "nodeType": "ParameterList", "parameters": [], "src": "848:0:1"}, "scope": 372, "src": "778:71:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 310, "nodeType": "StructuredDocumentation", "src": "855:113:1", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 315, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:1", "nodeType": "FunctionDefinition", "parameters": {"id": 313, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 312, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:1", "nodeType": "VariableDeclaration", "scope": 315, "src": "1013:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 311, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:1"}, "returnParameters": {"id": 314, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:1"}, "scope": 372, "src": "973:71:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 316, "nodeType": "StructuredDocumentation", "src": "1050:114:1", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 321, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:1", "nodeType": "FunctionDefinition", "parameters": {"id": 319, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 318, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:1", "nodeType": "VariableDeclaration", "scope": 321, "src": "1211:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 317, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:1"}, "returnParameters": {"id": 320, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:1"}, "scope": 372, "src": "1169:66:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 322, "nodeType": "StructuredDocumentation", "src": "1241:136:1", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 327, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:1", "nodeType": "FunctionDefinition", "parameters": {"id": 325, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 324, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:1", "nodeType": "VariableDeclaration", "scope": 327, "src": "1426:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 323, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:1"}, "returnParameters": {"id": 326, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:1"}, "scope": 372, "src": "1382:69:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 328, "nodeType": "StructuredDocumentation", "src": "1457:123:1", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 333, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:1", "nodeType": "FunctionDefinition", "parameters": {"id": 331, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 330, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:1", "nodeType": "VariableDeclaration", "scope": 333, "src": "1619:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 329, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:1"}, "returnParameters": {"id": 332, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:1"}, "scope": 372, "src": "1585:58:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 337, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:1", "nodeType": "EventDefinition", "parameters": {"id": 336, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 335, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:1", "nodeType": "VariableDeclaration", "scope": 337, "src": "1687:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 334, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:1"}, "src": "1649:52:1"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 341, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:1", "nodeType": "EventDefinition", "parameters": {"id": 340, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 339, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:1", "nodeType": "VariableDeclaration", "scope": 341, "src": "1745:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 338, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:1"}, "src": "1707:52:1"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 345, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:1", "nodeType": "EventDefinition", "parameters": {"id": 344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 343, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:1", "nodeType": "VariableDeclaration", "scope": 345, "src": "1803:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:1"}, "src": "1765:52:1"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 349, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:1", "nodeType": "EventDefinition", "parameters": {"id": 348, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:1", "nodeType": "VariableDeclaration", "scope": 349, "src": "1863:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:1"}, "src": "1823:54:1"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 353, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:1", "nodeType": "EventDefinition", "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:1", "nodeType": "VariableDeclaration", "scope": 353, "src": "1925:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:1"}, "src": "1883:57:1"}, {"anonymous": false, "documentation": {"id": 354, "nodeType": "StructuredDocumentation", "src": "1946:130:1", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 360, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:1", "nodeType": "EventDefinition", "parameters": {"id": 359, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:1", "nodeType": "VariableDeclaration", "scope": 360, "src": "2105:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 358, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:1", "nodeType": "VariableDeclaration", "scope": 360, "src": "2121:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:1"}, "src": "2081:56:1"}, {"anonymous": false, "documentation": {"id": 361, "nodeType": "StructuredDocumentation", "src": "2143:164:1", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 367, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:1", "nodeType": "EventDefinition", "parameters": {"id": 366, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 363, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:1", "nodeType": "VariableDeclaration", "scope": 367, "src": "2343:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 362, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 365, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:1", "nodeType": "VariableDeclaration", "scope": 367, "src": "2358:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 364, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:1"}, "src": "2312:65:1"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 371, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:1", "nodeType": "EventDefinition", "parameters": {"id": 370, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 369, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:1", "nodeType": "VariableDeclaration", "scope": 371, "src": "2415:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 368, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:1"}, "src": "2383:47:1"}], "scope": 373, "src": "103:2329:1", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:2388:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [854]}, "id": 855, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 740, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 854, "linearizedBaseContracts": [854], "name": "ISSVNetworkCore", "nameLocation": "80:15:2", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 750, "members": [{"constant": false, "id": 743, "mutability": "mutable", "name": "block", "nameLocation": "343:5:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "336:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 742, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 746, "mutability": "mutable", "name": "index", "nameLocation": "461:5:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "454:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 749, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:2", "nodeType": "VariableDeclaration", "scope": 750, "src": "587:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 748, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:2", "nodeType": "StructDefinition", "scope": 854, "src": "248:360:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 767, "members": [{"constant": false, "id": 753, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "755:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "903:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 755, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "976:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 758, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 762, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "1051:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 761, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:2", "nodeType": "VariableDeclaration", "scope": 767, "src": "1129:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$750_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 765, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 764, "name": "Snapshot", "nameLocations": ["1129:8:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 750, "src": "1129:8:2"}, "referencedDeclaration": 750, "src": "1129:8:2", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$750_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:2", "nodeType": "StructDefinition", "scope": 854, "src": "657:496:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 777, "members": [{"constant": false, "id": 770, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1320:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 769, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1417:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:2", "nodeType": "VariableDeclaration", "scope": 777, "src": "1526:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 775, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:2", "nodeType": "StructDefinition", "scope": 854, "src": "1224:331:2", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 793, "members": [{"constant": false, "id": 780, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1694:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 779, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:2", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1792:22:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1883:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 785, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 789, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "1968:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 788, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 792, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:2", "nodeType": "VariableDeclaration", "scope": 793, "src": "2033:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 791, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:2", "nodeType": "StructDefinition", "scope": 854, "src": "1612:443:2", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 795, "name": "CallerNotOwner", "nameLocation": "2119:14:2", "nodeType": "ErrorDefinition", "parameters": {"id": 794, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:2"}, "src": "2113:23:2"}, {"errorSelector": "8c6e5d71", "id": 797, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 796, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:2"}, "src": "2155:29:2"}, {"errorSelector": "732f9413", "id": 799, "name": "FeeTooLow", "nameLocation": "2209:9:2", "nodeType": "ErrorDefinition", "parameters": {"id": 798, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:2"}, "src": "2203:18:2"}, {"errorSelector": "958065d9", "id": 801, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 800, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:2"}, "src": "2240:32:2"}, {"errorSelector": "1d226c30", "id": 803, "name": "NoFeeDeclared", "nameLocation": "2297:13:2", "nodeType": "ErrorDefinition", "parameters": {"id": 802, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:2"}, "src": "2291:22:2"}, {"errorSelector": "97e4b518", "id": 805, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:2", "nodeType": "ErrorDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:2"}, "src": "2332:35:2"}, {"errorSelector": "961e3e8c", "id": 807, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:2"}, "src": "2386:29:2"}, {"errorSelector": "f4d678b8", "id": 809, "name": "InsufficientBalance", "nameLocation": "2440:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 808, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:2"}, "src": "2434:28:2"}, {"errorSelector": "8d09a73e", "id": 811, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 810, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:2"}, "src": "2481:31:2"}, {"errorSelector": "e51315d2", "id": 813, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 812, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:2"}, "src": "2531:30:2"}, {"errorSelector": "2feda3c1", "id": 815, "name": "IncorrectValidatorState", "nameLocation": "2586:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 814, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:2"}, "src": "2580:32:2"}, {"errorSelector": "60300a8d", "id": 817, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 816, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:2"}, "src": "2631:31:2"}, {"errorSelector": "637297a4", "id": 819, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 818, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:2"}, "src": "2681:31:2"}, {"errorSelector": "38186224", "id": 821, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:2", "nodeType": "ErrorDefinition", "parameters": {"id": 820, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:2"}, "src": "2731:33:2"}, {"errorSelector": "3babafd2", "id": 823, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 822, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:2"}, "src": "2783:30:2"}, {"errorSelector": "95a0cf33", "id": 825, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:2"}, "src": "2832:28:2"}, {"errorSelector": "185e2b16", "id": 827, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 826, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:2"}, "src": "2879:29:2"}, {"errorSelector": "12e04c87", "id": 829, "name": "IncorrectClusterState", "nameLocation": "2933:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 828, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:2"}, "src": "2927:30:2"}, {"errorSelector": "dd020e25", "id": 831, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 830, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:2"}, "src": "2976:30:2"}, {"errorSelector": "6e6c9cac", "id": 833, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:2", "nodeType": "ErrorDefinition", "parameters": {"id": 832, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:2"}, "src": "3025:37:2"}, {"errorSelector": "6df5ab76", "id": 835, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:2"}, "src": "3081:29:2"}, {"errorSelector": "045c4b02", "id": 837, "name": "TokenTransferFailed", "nameLocation": "3135:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 836, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:2"}, "src": "3129:28:2"}, {"errorSelector": "c81272f8", "id": 839, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:2", "nodeType": "ErrorDefinition", "parameters": {"id": 838, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:2"}, "src": "3176:32:2"}, {"errorSelector": "410a2b6c", "id": 841, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 840, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:2"}, "src": "3227:30:2"}, {"errorSelector": "ea8e4eb5", "id": 843, "name": "NotAuthorized", "nameLocation": "3282:13:2", "nodeType": "ErrorDefinition", "parameters": {"id": 842, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:2"}, "src": "3276:22:2"}, {"errorSelector": "a5a1ff5d", "id": 845, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 844, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:2"}, "src": "3317:31:2"}, {"errorSelector": "289c9494", "id": 847, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 846, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:2"}, "src": "3367:30:2"}, {"errorSelector": "8f9195fb", "id": 849, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:2", "nodeType": "ErrorDefinition", "parameters": {"id": 848, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:2"}, "src": "3416:33:2"}, {"errorSelector": "91aa3017", "id": 851, "name": "MaxValueExceeded", "nameLocation": "3474:16:2", "nodeType": "ErrorDefinition", "parameters": {"id": 850, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:2"}, "src": "3468:25:2"}, {"errorSelector": "cd4e6167", "id": 853, "name": "FeeTooHigh", "nameLocation": "3518:10:2", "nodeType": "ErrorDefinition", "parameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:2"}, "src": "3512:19:2"}], "scope": 855, "src": "70:3477:2", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:3503:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "IERC20": [1077], "ISSVNetworkCore": [854], "SSVModules": [864], "SSVStorage": [934], "StorageData": [911]}, "id": 504, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 374, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 375, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 504, "sourceUnit": 935, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 503, "linearizedBaseContracts": [503], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 382, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 381, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 378, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 382, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, "typeName": {"id": 377, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 376, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "141:10:3"}, "referencedDeclaration": 864, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 380, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 382, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 379, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 389, "nodeType": "Block", "src": "259:32:3", "statements": [{"expression": {"hexValue": "76312e302e32", "id": 387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:8:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a93491ab14f0da9be9ef6814ab0c16bbbdf1cf68412eb6d7d1f6ea944c85b62a", "typeString": "literal_string \"v1.0.2\""}, "value": "v1.0.2"}, "functionReturnParameters": 386, "id": 388, "nodeType": "Return", "src": "269:15:3"}]}, "id": 390, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 383, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 386, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 385, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 390, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 384, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 503, "src": "199:92:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 413, "nodeType": "Block", "src": "359:136:3", "statements": [{"condition": {"id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "373:45:3", "subExpression": {"arguments": [{"id": 402, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, "src": "407:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 403, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 394, "src": "411:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 397, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "374:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "385:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 400, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "392:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 906, "src": "374:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "398:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1044, "src": "374:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 404, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 412, "nodeType": "IfStatement", "src": "369:120:3", "trueBody": {"id": 411, "nodeType": "Block", "src": "420:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 406, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "441:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "457:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 837, "src": "441:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "441:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 410, "nodeType": "RevertStatement", "src": "434:44:3"}]}}]}, "id": 414, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "306:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 395, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 392, "mutability": "mutable", "name": "to", "nameLocation": "330:2:3", "nodeType": "VariableDeclaration", "scope": 414, "src": "322:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 391, "name": "address", "nodeType": "ElementaryTypeName", "src": "322:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 394, "mutability": "mutable", "name": "amount", "nameLocation": "342:6:3", "nodeType": "VariableDeclaration", "scope": 414, "src": "334:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 393, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "334:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "321:28:3"}, "returnParameters": {"id": 396, "nodeType": "ParameterList", "parameters": [], "src": "359:0:3"}, "scope": 503, "src": "297:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 440, "nodeType": "Block", "src": "543:163:3", "statements": [{"condition": {"id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:72:3", "subExpression": {"arguments": [{"expression": {"id": 424, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "595:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "599:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "595:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 428, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "615:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$503", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$503", "typeString": "library CoreLib"}], "id": 427, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "607:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "607:7:3", "typeDescriptions": {}}}, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "607:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 430, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "622:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 419, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "558:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "569:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "558:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "576:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 906, "src": "558:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1076, "src": "558:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 439, "nodeType": "IfStatement", "src": "553:147:3", "trueBody": {"id": 438, "nodeType": "Block", "src": "631:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 433, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "652:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "668:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 837, "src": "652:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "652:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 437, "nodeType": "RevertStatement", "src": "645:44:3"}]}}]}, "id": 441, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "510:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 417, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 416, "mutability": "mutable", "name": "amount", "nameLocation": "526:6:3", "nodeType": "VariableDeclaration", "scope": 441, "src": "518:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 415, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "518:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "517:16:3"}, "returnParameters": {"id": 418, "nodeType": "ParameterList", "parameters": [], "src": "543:0:3"}, "scope": 503, "src": "501:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 467, "nodeType": "Block", "src": "1348:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 449, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 444, "src": "1362:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1381:1:3", "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": 451, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1373:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 450, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:3", "typeDescriptions": {}}}, "id": 453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1373:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1362:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 458, "nodeType": "IfStatement", "src": "1358:64:3", "trueBody": {"id": 457, "nodeType": "Block", "src": "1385:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1406:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 448, "id": 456, "nodeType": "Return", "src": "1399:12:3"}]}}, {"assignments": [460], "declarations": [{"constant": false, "id": 460, "mutability": "mutable", "name": "size", "nameLocation": "1626:4:3", "nodeType": "VariableDeclaration", "scope": 467, "src": "1618:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 461, "nodeType": "VariableDeclarationStatement", "src": "1618:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1705:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1719:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1739:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1727:11:3"}, "nodeType": "YulFunctionCall", "src": "1727:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1719:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 444, "isOffset": false, "isSlot": false, "src": "1739:7:3", "valueSize": 1}, {"declaration": 460, "isOffset": false, "isSlot": false, "src": "1719:4:3", "valueSize": 1}], "id": 462, "nodeType": "InlineAssembly", "src": "1696:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 463, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 460, "src": "1773:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1780:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1773:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 448, "id": 466, "nodeType": "Return", "src": "1766:15:3"}]}, "documentation": {"id": 442, "nodeType": "StructuredDocumentation", "src": "712:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 468, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1291:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 444, "mutability": "mutable", "name": "account", "nameLocation": "1310:7:3", "nodeType": "VariableDeclaration", "scope": 468, "src": "1302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 443, "name": "address", "nodeType": "ElementaryTypeName", "src": "1302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1301:17:3"}, "returnParameters": {"id": 448, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 447, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 468, "src": "1342:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1342:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1341:6:3"}, "scope": 503, "src": "1282:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 501, "nodeType": "Block", "src": "1875:219:3", "statements": [{"condition": {"id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1889:26:3", "subExpression": {"arguments": [{"id": 477, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "1901:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 476, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "1890:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 478, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1890:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 485, "nodeType": "IfStatement", "src": "1885:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 480, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "1924:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 849, "src": "1924:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1924:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 484, "nodeType": "RevertStatement", "src": "1917:49:3"}}, {"expression": {"id": 494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 486, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "1977:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$934_$", "typeString": "type(library SSVStorage)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1988:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 933, "src": "1977:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$911_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1977:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 490, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 885, "src": "1977:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 492, "indexExpression": {"id": 491, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "2008:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1977:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 493, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "2020:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1977:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 495, "nodeType": "ExpressionStatement", "src": "1977:56:3"}, {"eventCall": {"arguments": [{"id": 497, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "2063:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, {"id": 498, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "2073:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 496, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 382, "src": "2048:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$864_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2048:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 500, "nodeType": "EmitStatement", "src": "2043:44:3"}]}, "id": 502, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1804:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 471, "mutability": "mutable", "name": "moduleId", "nameLocation": "1833:8:3", "nodeType": "VariableDeclaration", "scope": 502, "src": "1822:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}, "typeName": {"id": 470, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 469, "name": "SSVModules", "nameLocations": ["1822:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "1822:10:3"}, "referencedDeclaration": 864, "src": "1822:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 473, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1851:13:3", "nodeType": "VariableDeclaration", "scope": 502, "src": "1843:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 472, "name": "address", "nodeType": "ElementaryTypeName", "src": "1843:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1821:44:3"}, "returnParameters": {"id": 475, "nodeType": "ParameterList", "parameters": [], "src": "1875:0:3"}, "scope": 503, "src": "1795:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 504, "src": "98:1998:3", "usedErrors": []}], "src": "45:2052:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [676], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVStorageProtocol": [999], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 672, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 505, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 506, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 855, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 507, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 739, "src": "114:21:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 508, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 672, "sourceUnit": 1000, "src": "136:34:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 671, "linearizedBaseContracts": [671], "name": "ProtocolLib", "nameLocation": "180:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 511, "libraryName": {"id": 509, "name": "Types256", "nameLocations": ["204:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 738, "src": "204:8:4"}, "nodeType": "UsingForDirective", "src": "198:27:4", "typeName": {"id": 510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 534, "nodeType": "Block", "src": "433:113:4", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 519, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "450:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 520, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:4", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "450:18:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 523, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 525, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "493:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:4", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "493:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 522, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 521, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:4", "typeDescriptions": {}}}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 529, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 514, "src": "526:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "526:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 518, "id": 533, "nodeType": "Return", "src": "443:96:4"}]}, "id": 535, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:4", "nodeType": "FunctionDefinition", "parameters": {"id": 515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 514, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:4", "nodeType": "VariableDeclaration", "scope": 535, "src": "374:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 513, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 512, "name": "StorageProtocol", "nameLocations": ["374:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "374:15:4"}, "referencedDeclaration": 976, "src": "374:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:4"}, "returnParameters": {"id": 518, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 517, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 535, "src": "425:6:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 516, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:4"}, "scope": 671, "src": "342:204:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 573, "nodeType": "Block", "src": "628:196:4", "statements": [{"expression": {"arguments": [{"id": 544, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "656:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 543, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "638:17:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 546, "nodeType": "ExpressionStatement", "src": "638:21:4"}, {"expression": {"id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 547, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "670:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 549, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:4", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "670:18:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 551, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "714:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 550, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "691:22:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 554, "nodeType": "ExpressionStatement", "src": "670:47:4"}, {"expression": {"id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 555, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "727:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 557, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:4", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "727:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 560, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 559, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 558, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:4", "typeDescriptions": {}}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 564, "nodeType": "ExpressionStatement", "src": "727:52:4"}, {"expression": {"id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 565, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 538, "src": "789:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "789:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 568, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 540, "src": "805:3:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:4", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "805:10:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 572, "nodeType": "ExpressionStatement", "src": "789:28:4"}]}, "id": 574, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 538, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:4", "nodeType": "VariableDeclaration", "scope": 574, "src": "578:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 537, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 536, "name": "StorageProtocol", "nameLocations": ["578:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "578:15:4"}, "referencedDeclaration": 976, "src": "578:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 540, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:4", "nodeType": "VariableDeclaration", "scope": 574, "src": "606:11:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:4"}, "returnParameters": {"id": 542, "nodeType": "ParameterList", "parameters": [], "src": "628:0:4"}, "scope": 671, "src": "552:272:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 598, "nodeType": "Block", "src": "993:112:4", "statements": [{"expression": {"id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 580, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1003:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 582, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:4", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1003:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 584, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1040:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 583, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1019:20:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 587, "nodeType": "ExpressionStatement", "src": "1003:40:4"}, {"expression": {"id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 588, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 577, "src": "1053:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 590, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:4", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1053:22:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 593, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 591, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:4", "typeDescriptions": {}}}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "1053:45:4"}]}, "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:4", "nodeType": "FunctionDefinition", "parameters": {"id": 578, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 577, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:4", "nodeType": "VariableDeclaration", "scope": 599, "src": "956:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 576, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 575, "name": "StorageProtocol", "nameLocations": ["956:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "956:15:4"}, "referencedDeclaration": 976, "src": "956:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:4"}, "returnParameters": {"id": 579, "nodeType": "ParameterList", "parameters": [], "src": "993:0:4"}, "scope": 671, "src": "929:176:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 626, "nodeType": "Block", "src": "1200:126:4", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 607, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1217:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 608, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:4", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1217:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 611, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 609, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:4", "typeDescriptions": {}}}, "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 614, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1257:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:4", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1257:22:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 617, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 618, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1283:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:4", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "1283:13:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 621, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "1299:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 622, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1299:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 606, "id": 625, "nodeType": "Return", "src": "1210:109:4"}]}, "id": 627, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:4", "nodeType": "FunctionDefinition", "parameters": {"id": 603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 602, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:4", "nodeType": "VariableDeclaration", "scope": 627, "src": "1141:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 601, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 600, "name": "StorageProtocol", "nameLocations": ["1141:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1141:15:4"}, "referencedDeclaration": 976, "src": "1141:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:4"}, "returnParameters": {"id": 606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 605, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 627, "src": "1192:6:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 604, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:4"}, "scope": 671, "src": "1111:215:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 669, "nodeType": "Block", "src": "1445:286:4", "statements": [{"expression": {"arguments": [{"id": 638, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1473:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 637, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1455:17:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 640, "nodeType": "ExpressionStatement", "src": "1455:21:4"}, {"condition": {"id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:4", "subExpression": {"id": 641, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "1491:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 650, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1594:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 651, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1594:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 652, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, "src": "1618:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 654, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 657, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 656, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:4", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 655, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:4", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 658, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:4", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 667, "nodeType": "IfStatement", "src": "1589:136:4", "trueBody": {"id": 666, "nodeType": "Block", "src": "1659:66:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 661, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 854, "src": "1680:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$854_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:4", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 851, "src": "1680:32:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 665, "nodeType": "RevertStatement", "src": "1673:41:4"}]}}, "id": 668, "nodeType": "IfStatement", "src": "1486:239:4", "trueBody": {"id": 649, "nodeType": "Block", "src": "1515:68:4", "statements": [{"expression": {"id": 647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 643, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 630, "src": "1529:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 645, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:4", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1529:20:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 646, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 634, "src": "1553:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 648, "nodeType": "ExpressionStatement", "src": "1529:43:4"}]}}]}, "id": 670, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:4", "nodeType": "FunctionDefinition", "parameters": {"id": 635, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 630, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1351:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 629, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 628, "name": "StorageProtocol", "nameLocations": ["1351:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1351:15:4"}, "referencedDeclaration": 976, "src": "1351:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 632, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1379:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 631, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 634, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:4", "nodeType": "VariableDeclaration", "scope": 670, "src": "1408:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 633, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:4"}, "returnParameters": {"id": 636, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:4"}, "scope": 671, "src": "1332:399:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 672, "src": "172:1561:4", "usedErrors": []}], "src": "45:1689:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1151], "IERC20": [1077], "ISSVNetworkCore": [854], "SSVModules": [864], "SSVStorage": [934], "StorageData": [911]}, "id": 935, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 856, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 857, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 855, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 858, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 1152, "src": "114:52:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 859, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 935, "sourceUnit": 1078, "src": "167:56:5", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 864, "members": [{"id": 860, "name": "SSV_OPERATORS", "nameLocation": "247:13:5", "nodeType": "EnumValue", "src": "247:13:5"}, {"id": 861, "name": "SSV_CLUSTERS", "nameLocation": "266:12:5", "nodeType": "EnumValue", "src": "266:12:5"}, {"id": 862, "name": "SSV_DAO", "nameLocation": "284:7:5", "nodeType": "EnumValue", "src": "284:7:5"}, {"id": 863, "name": "SSV_VIEWS", "nameLocation": "297:9:5", "nodeType": "EnumValue", "src": "297:9:5"}], "name": "SSVModules", "nameLocation": "230:10:5", "nodeType": "EnumDefinition", "src": "225:83:5"}, {"canonicalName": "StorageData", "id": 911, "members": [{"constant": false, "id": 869, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "599:40:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 868, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 866, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 874, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "756:36:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 873, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 872, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 879, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "870:39:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 878, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 877, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 885, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "998:43:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 884, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 882, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 881, "name": "SSVModules", "nameLocations": ["1006:10:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "1006:10:5"}, "referencedDeclaration": 864, "src": "1006:10:5", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$864", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$864_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 890, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1159:45:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 889, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 888, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 896, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1304:85:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 895, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 892, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 894, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 893, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:5", "1338:24:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 777, "src": "1322:40:5"}, "referencedDeclaration": 777, "src": "1322:40:5", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$777_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 902, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1470:53:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$767_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 901, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 898, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:5", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$767_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 900, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 899, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:5", "1504:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 767, "src": "1488:24:5"}, "referencedDeclaration": 767, "src": "1488:24:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$767_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 906, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1599:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}, "typeName": {"id": 905, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 904, "name": "IERC20", "nameLocations": ["1599:6:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1077, "src": "1599:6:5"}, "referencedDeclaration": 1077, "src": "1599:6:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1077", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 910, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:5", "nodeType": "VariableDeclaration", "scope": 911, "src": "1686:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 909, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 908, "name": "Counters.Counter", "nameLocations": ["1686:8:5", "1695:7:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1686:16:5"}, "referencedDeclaration": 1083, "src": "1686:16:5", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:5", "nodeType": "StructDefinition", "scope": 935, "src": "419:1301:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 934, "linearizedBaseContracts": [934], "name": "SSVStorage", "nameLocation": "1730:10:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 921, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:5", "nodeType": "VariableDeclaration", "scope": 934, "src": "1747:98:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 912, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 920, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 915, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 917, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:5", "typeDescriptions": {}}}, "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 919, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 932, "nodeType": "Block", "src": "1915:117:5", "statements": [{"assignments": [928], "declarations": [{"constant": false, "id": 928, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:5", "nodeType": "VariableDeclaration", "scope": 932, "src": "1925:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 930, "initialValue": {"id": 929, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 921, "src": "1944:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 928, "isOffset": false, "isSlot": false, "src": "2008:8:5", "valueSize": 1}, {"declaration": 925, "isOffset": false, "isSlot": true, "src": "1997:7:5", "suffix": "slot", "valueSize": 1}], "id": 931, "nodeType": "InlineAssembly", "src": "1974:52:5"}]}, "id": 933, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 922, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:5"}, "returnParameters": {"id": 926, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 925, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:5", "nodeType": "VariableDeclaration", "scope": 933, "src": "1891:22:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 924, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 923, "name": "StorageData", "nameLocations": ["1891:11:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 911, "src": "1891:11:5"}, "referencedDeclaration": 911, "src": "1891:11:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$911_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:5"}, "scope": 934, "src": "1852:180:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 935, "src": "1722:312:5", "usedErrors": []}], "src": "45:1990:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [999], "StorageProtocol": [976]}, "id": 1000, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 936, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"canonicalName": "StorageProtocol", "id": 976, "members": [{"constant": false, "id": 939, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "307:33:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 938, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 942, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "406:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 941, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 945, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "505:26:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 944, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 948, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "598:33:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 947, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:6", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 951, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "683:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 954, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "758:22:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 957, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "833:17:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 956, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 960, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "945:37:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 959, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 963, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1052:35:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 962, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 966, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1166:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 965, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 969, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1278:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 968, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 972, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1397:29:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 971, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 975, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:6", "nodeType": "VariableDeclaration", "scope": 976, "src": "1504:21:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 974, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:6", "nodeType": "StructDefinition", "scope": 1000, "src": "201:1327:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 999, "linearizedBaseContracts": [999], "name": "SSVStorageProtocol", "nameLocation": "1538:18:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 986, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:6", "nodeType": "VariableDeclaration", "scope": 999, "src": "1563:102:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 985, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 980, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:6", "typeDescriptions": {}}}, "id": 983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 997, "nodeType": "Block", "src": "1739:117:6", "statements": [{"assignments": [993], "declarations": [{"constant": false, "id": 993, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:6", "nodeType": "VariableDeclaration", "scope": 997, "src": "1749:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 995, "initialValue": {"id": 994, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "1768:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 993, "isOffset": false, "isSlot": false, "src": "1832:8:6", "valueSize": 1}, {"declaration": 990, "isOffset": false, "isSlot": true, "src": "1821:7:6", "suffix": "slot", "valueSize": 1}], "id": 996, "nodeType": "InlineAssembly", "src": "1798:52:6"}]}, "id": 998, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 987, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:6"}, "returnParameters": {"id": 991, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 990, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:6", "nodeType": "VariableDeclaration", "scope": 998, "src": "1711:26:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 989, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 988, "name": "StorageProtocol", "nameLocations": ["1711:15:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "1711:15:6"}, "referencedDeclaration": 976, "src": "1711:15:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:6"}, "scope": 999, "src": "1672:184:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1000, "src": "1530:328:6", "usedErrors": []}], "src": "45:1814:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [676], "Types256": [738], "Types64": [689]}, "id": 739, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 673, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"constant": true, "id": 676, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:7", "nodeType": "VariableDeclaration", "scope": 739, "src": "70:45:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 689, "linearizedBaseContracts": [689], "name": "Types64", "nameLocation": "126:7:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 687, "nodeType": "Block", "src": "202:47:7", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 683, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 678, "src": "219:5:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 684, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "227:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 682, "id": 686, "nodeType": "Return", "src": "212:30:7"}]}, "id": 688, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:7", "nodeType": "FunctionDefinition", "parameters": {"id": 679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 678, "mutability": "mutable", "name": "value", "nameLocation": "163:5:7", "nodeType": "VariableDeclaration", "scope": 688, "src": "156:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 677, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:7"}, "returnParameters": {"id": 682, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 681, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 688, "src": "193:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:7"}, "scope": 689, "src": "140:109:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 739, "src": "118:133:7", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 738, "linearizedBaseContracts": [738], "name": "Types256", "nameLocation": "261:8:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 717, "nodeType": "Block", "src": "338:143:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 697, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 691, "src": "356:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "365:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 699, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "370:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "365:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 701, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "375:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "365:25:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 703, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "364:27:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:35:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 705, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "393:20:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 696, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 706, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:66:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 707, "nodeType": "ExpressionStatement", "src": "348:66:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 711, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 691, "src": "449:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 710, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 737, "src": "438:10:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "438:17:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 713, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "458:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "438:35:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "431:6:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 708, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "431:6:7", "typeDescriptions": {}}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "431:43:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 695, "id": 716, "nodeType": "Return", "src": "424:50:7"}]}, "id": 718, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:7", "nodeType": "FunctionDefinition", "parameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "value", "nameLocation": "300:5:7", "nodeType": "VariableDeclaration", "scope": 718, "src": "292:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:7"}, "returnParameters": {"id": 695, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 694, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 718, "src": "330:6:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 693, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:7"}, "scope": 738, "src": "276:205:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 736, "nodeType": "Block", "src": "554:102:7", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 726, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "572:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 727, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "580:15:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "572:23:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "599:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "572:28:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "602:24:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 725, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "564:7:7", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "564:63:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 733, "nodeType": "ExpressionStatement", "src": "564:63:7"}, {"expression": {"id": 734, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "644:5:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 724, "id": 735, "nodeType": "Return", "src": "637:12:7"}]}, "id": 737, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "496:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 720, "mutability": "mutable", "name": "value", "nameLocation": "515:5:7", "nodeType": "VariableDeclaration", "scope": 737, "src": "507:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "507:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "506:15:7"}, "returnParameters": {"id": 724, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 723, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 737, "src": "545:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "545:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "544:9:7"}, "scope": 738, "src": "487:169:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 739, "src": "253:405:7", "usedErrors": []}], "src": "45:614:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [503], "Counters": [1151], "DEDUCTED_DIGITS": [676], "IERC20": [1077], "ISSVDAO": [372], "ISSVNetworkCore": [854], "ProtocolLib": [671], "SSVDAO": [280], "SSVModules": [864], "SSVStorage": [934], "SSVStorageProtocol": [999], "StorageData": [911], "StorageProtocol": [976], "Types256": [738], "Types64": [689]}, "id": 281, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 38, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 39, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 373, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 40, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 739, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 41, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 672, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 42, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 281, "sourceUnit": 504, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 43, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 372, "src": "233:7:8"}, "id": 44, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 280, "linearizedBaseContracts": [280, 372, 854], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 47, "libraryName": {"id": 45, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 689, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 46, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 50, "libraryName": {"id": 48, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 738, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 49, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 54, "libraryName": {"id": 51, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 671, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 53, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 52, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "332:15:8"}, "referencedDeclaration": 976, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 57, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 280, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 55, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 56, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [291], "body": {"id": 88, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [65], "declarations": [{"constant": false, "id": 65, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 88, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 64, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 63, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "491:15:8"}, "referencedDeclaration": 976, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 69, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 66, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 67, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [71], "declarations": [{"constant": false, "id": 71, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 88, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 70, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 74, "initialValue": {"expression": {"id": 72, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 73, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 78, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 75, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 77, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 574, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$976_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 80, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 82, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 83, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 688, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 84, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 85, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 81, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 360, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 86, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 87, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 89, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 61, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 60, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 59, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 89, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 58, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 62, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 280, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [297], "body": {"id": 154, "nodeType": "Block", "src": "763:502:8", "statements": [{"assignments": [97], "declarations": [{"constant": false, "id": 97, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 96, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 95, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 976, "src": "773:15:8"}, "referencedDeclaration": 976, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 101, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 98, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 99, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [103], "declarations": [{"constant": false, "id": 103, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 102, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 107, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 104, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [109], "declarations": [{"constant": false, "id": 109, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 154, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 108, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 113, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 110, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 111, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 627, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$976_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 114, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 115, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 121, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 120, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 117, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 809, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 119, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 122, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 125, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 126, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 129, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"id": 138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97, "src": "1099:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 132, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1102:19:8", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 945, "src": "1099:22:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 135, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1131:5:8", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1137:6:8", "memberName": "number", "nodeType": "MemberAccess", "src": "1131:12:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 134, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1124:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 133, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1124:6:8", "typeDescriptions": {}}}, "id": 137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1124:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1099:45:8", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 139, "nodeType": "ExpressionStatement", "src": "1099:45:8"}, {"expression": {"arguments": [{"expression": {"id": 143, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1179:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1183:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1179:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 145, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1191:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 140, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "1155:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$503_$", "typeString": "type(library CoreLib)"}}, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1163:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 414, "src": "1155:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1155:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 147, "nodeType": "ExpressionStatement", "src": "1155:43:8"}, {"eventCall": {"arguments": [{"id": 149, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "1239:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 150, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1247:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1251:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1247:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 148, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "1214:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1214:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 153, "nodeType": "EmitStatement", "src": "1209:49:8"}]}, "functionSelector": "d2231741", "id": 155, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 93, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 92, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 91, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 155, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 90, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 94, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 280, "src": "696:569:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [303], "body": {"id": 173, "nodeType": "Block", "src": "1348:136:8", "statements": [{"expression": {"id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 161, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1358:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1377:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1358:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1358:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 165, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1384:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 972, "src": "1358:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 166, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 157, "src": "1409:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1358:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 168, "nodeType": "ExpressionStatement", "src": "1358:61:8"}, {"eventCall": {"arguments": [{"id": 170, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 157, "src": "1466:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 169, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 337, "src": "1434:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1434:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 172, "nodeType": "EmitStatement", "src": "1429:48:8"}]}, "functionSelector": "3631983f", "id": 174, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1280:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 159, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1339:8:8"}, "parameters": {"id": 158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 157, "mutability": "mutable", "name": "percentage", "nameLocation": "1318:10:8", "nodeType": "VariableDeclaration", "scope": 174, "src": "1311:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 156, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1311:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1310:19:8"}, "returnParameters": {"id": 160, "nodeType": "ParameterList", "parameters": [], "src": "1348:0:8"}, "scope": 280, "src": "1271:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [309], "body": {"id": 192, "nodeType": "Block", "src": "1570:144:8", "statements": [{"expression": {"id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 180, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1580:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1599:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1580:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1580:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 184, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1606:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 966, "src": "1580:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 185, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "1633:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1580:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 187, "nodeType": "ExpressionStatement", "src": "1580:66:8"}, {"eventCall": {"arguments": [{"id": 189, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "1693:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 188, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "1661:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1661:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 191, "nodeType": "EmitStatement", "src": "1656:51:8"}]}, "functionSelector": "79e3e4e4", "id": 193, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1499:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 178, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1561:8:8"}, "parameters": {"id": 177, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 176, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1537:13:8", "nodeType": "VariableDeclaration", "scope": 193, "src": "1530:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 175, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1530:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1529:22:8"}, "returnParameters": {"id": 179, "nodeType": "ParameterList", "parameters": [], "src": "1570:0:8"}, "scope": 280, "src": "1490:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [315], "body": {"id": 211, "nodeType": "Block", "src": "1800:144:8", "statements": [{"expression": {"id": 205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 199, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "1810:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1829:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "1810:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1810:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 203, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1836:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 969, "src": "1810:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 204, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1863:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1810:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 206, "nodeType": "ExpressionStatement", "src": "1810:66:8"}, {"eventCall": {"arguments": [{"id": 208, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 195, "src": "1923:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 207, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 345, "src": "1891:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1891:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 210, "nodeType": "EmitStatement", "src": "1886:51:8"}]}, "functionSelector": "eb608022", "id": 212, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1729:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 197, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1791:8:8"}, "parameters": {"id": 196, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 195, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1767:13:8", "nodeType": "VariableDeclaration", "scope": 212, "src": "1760:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 194, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1760:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1759:22:8"}, "returnParameters": {"id": 198, "nodeType": "ParameterList", "parameters": [], "src": "1800:0:8"}, "scope": 280, "src": "1720:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [321], "body": {"id": 238, "nodeType": "Block", "src": "2025:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 218, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2039:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 219, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "2048:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2039:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 225, "nodeType": "IfStatement", "src": "2035:106:8", "trueBody": {"id": 224, "nodeType": "Block", "src": "2079:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 221, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "2100:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2100:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 223, "nodeType": "RevertStatement", "src": "2093:37:8"}]}}, {"expression": {"id": 232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 226, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2151:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2170:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2151:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2151:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 230, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2177:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 960, "src": "2151:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 231, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2151:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 233, "nodeType": "ExpressionStatement", "src": "2151:65:8"}, {"eventCall": {"arguments": [{"id": 235, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "2265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 234, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 349, "src": "2231:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2231:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 237, "nodeType": "EmitStatement", "src": "2226:46:8"}]}, "functionSelector": "6512447d", "id": 239, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1959:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 216, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2016:8:8"}, "parameters": {"id": 215, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 214, "mutability": "mutable", "name": "blocks", "nameLocation": "1999:6:8", "nodeType": "VariableDeclaration", "scope": 239, "src": "1992:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 213, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1992:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1991:15:8"}, "returnParameters": {"id": 217, "nodeType": "ParameterList", "parameters": [], "src": "2025:0:8"}, "scope": 280, "src": "1950:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [327], "body": {"id": 259, "nodeType": "Block", "src": "2363:147:8", "statements": [{"expression": {"id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 245, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2373:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2392:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2373:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2373:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2399:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 963, "src": "2373:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 250, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "2430:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2437:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 718, "src": "2430:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2430:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2373:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 254, "nodeType": "ExpressionStatement", "src": "2373:72:8"}, {"eventCall": {"arguments": [{"id": 256, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "2496:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 255, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 353, "src": "2460:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2460:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 258, "nodeType": "EmitStatement", "src": "2455:48:8"}]}, "functionSelector": "b4c9c408", "id": 260, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2294:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 243, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2354:8:8"}, "parameters": {"id": 242, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 241, "mutability": "mutable", "name": "amount", "nameLocation": "2337:6:8", "nodeType": "VariableDeclaration", "scope": 260, "src": "2329:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 240, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2329:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2328:16:8"}, "returnParameters": {"id": 244, "nodeType": "ParameterList", "parameters": [], "src": "2363:0:8"}, "scope": 280, "src": "2285:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [333], "body": {"id": 278, "nodeType": "Block", "src": "2583:114:8", "statements": [{"expression": {"id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 266, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "2593:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$999_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2612:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 998, "src": "2593:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$976_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2593:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$976_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 270, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2619:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 975, "src": "2593:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 271, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 262, "src": "2636:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2593:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 273, "nodeType": "ExpressionStatement", "src": "2593:49:8"}, {"eventCall": {"arguments": [{"id": 275, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 262, "src": "2683:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 274, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 371, "src": "2657:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2657:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 277, "nodeType": "EmitStatement", "src": "2652:38:8"}]}, "functionSelector": "e39c6744", "id": 279, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2525:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 264, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2574:8:8"}, "parameters": {"id": 263, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 262, "mutability": "mutable", "name": "maxFee", "nameLocation": "2557:6:8", "nodeType": "VariableDeclaration", "scope": 279, "src": "2550:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 261, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2550:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2549:15:8"}, "returnParameters": {"id": 265, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:8"}, "scope": 280, "src": "2516:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 281, "src": "214:2485:8", "usedErrors": [795, 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853]}], "src": "45:2655:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1077]}, "id": 1078, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1001, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1002, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1077, "linearizedBaseContracts": [1077], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1003, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1011, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1005, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1007, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1009, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1011, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1012, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1020, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1014, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1013, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1016, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1015, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1018, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1020, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1021, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1026, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1025, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1026, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1023, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1077, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1027, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1034, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1029, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1034, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1033, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1032, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1034, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1031, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1077, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1035, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1044, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1037, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1036, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1039, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1044, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1041, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1077, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1045, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1054, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1046, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1049, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1048, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1051, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1077, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1055, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1064, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1059, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1058, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1064, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1061, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1077, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1065, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1076, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1069, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1068, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1071, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1070, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1075, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1074, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1076, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1073, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1077, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1078, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1151]}, "id": 1152, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1079, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1080, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 1151, "linearizedBaseContracts": [1151], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1083, "members": [{"constant": false, "id": 1082, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1083, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1151, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1094, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1091, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1092, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1090, "id": 1093, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1095, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1095, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1085, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1084, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "844:7:10"}, "referencedDeclaration": 1083, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1090, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1089, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1095, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1151, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1108, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1107, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1101, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1103, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1106, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1109, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1098, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1109, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1097, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1096, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "964:7:10"}, "referencedDeclaration": 1083, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1100, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1151, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1136, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1116], "declarations": [{"constant": false, "id": 1116, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1119, "initialValue": {"expression": {"id": 1117, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1112, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1116, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1120, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1126, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1135, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1127, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1112, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1130, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1116, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1134, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1137, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1113, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1112, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1137, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1111, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1110, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1093:7:10"}, "referencedDeclaration": 1083, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1114, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1151, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1149, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1143, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1145, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1148, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1150, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1141, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1140, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1150, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1139, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1138, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1083, "src": "1324:7:10"}, "referencedDeclaration": 1083, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1083_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1142, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1151, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1152, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/DAO.sol:DAO": {"srcmap": "103:257:0:-:0;;;132:125;;;;;;;;;;156:26;185:25;:23;;;;;:25;;:::i;:::-;156:54;;236:14;220:2;:13;;;:30;;;;;;;;;;;;;;;;;;146:111;103:257;;1672:184:6;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;103:257:0:-;;;;;;;", "srcmap-runtime": "103:257:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1271:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1950:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1490:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2285:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;263:95:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2516:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1720:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1271:213::-;1409:10;1358:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1434:43;1466:10;1434:43;;;;;;:::i;:::-;;;;;;;;1271:213;:::o;1950:329::-;410:7;2039:38;;:6;:38;;;2035:106;;;2100:30;;;;;;;;;;;;;;2035:106;2210:6;2151:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2231:41;2265:6;2231:41;;;;;;:::i;:::-;;;;;;;;1950:329;:::o;1490:224::-;1633:13;1580:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1661:46;1693:13;1661:46;;;;;;:::i;:::-;;;;;;;;1490:224;:::o;2285:225::-;2430:15;:6;:13;:15::i;:::-;2373:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2460:43;2496:6;2460:43;;;;;;:::i;:::-;;;;;;;;2285:225;:::o;696:569::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1131:12;1099:2;:22;;;:45;;;;;;;;;;;;;;;;;;1155:43;1179:10;1191:6;1155:23;:43::i;:::-;1214:44;1239:6;1247:10;1214:44;;;;;;;:::i;:::-;;;;;;;;763:502;;;696:569;:::o;263:95:0:-;325:4;:21;;;347:3;325:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:95;:::o;2516:181:8:-;2636:6;2593:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2657:33;2683:6;2657:33;;;;;;:::i;:::-;;;;;;;;2516:181;:::o;1720:224::-;1863:13;1810:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1891:46;1923:13;1891:46;;;;;;:::i;:::-;;;;;;;;1720:224;:::o;1672:184:6:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:4:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:7:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:205::-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;1111:215:4:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;929:176:4:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;487:169:7:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;1852:180:5:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6106851760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b611027806101136000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4c9c40811610066578063b4c9c40814610108578063d223174114610124578063d7ec4c5f14610140578063e39c67441461015c578063eb6080221461017857610093565b80631f1f9fd5146100985780633631983f146100b45780636512447d146100d057806379e3e4e4146100ec575b600080fd5b6100b260048036038101906100ad9190610b0e565b610194565b005b6100ce60048036038101906100c99190610b7b565b610220565b005b6100ea60048036038101906100e59190610b7b565b61028c565b005b61010660048036038101906101019190610b7b565b610349565b005b610122600480360381019061011d9190610b0e565b6103b5565b005b61013e60048036038101906101399190610b0e565b610429565b005b61015a60048036038101906101559190610b0e565b61053f565b005b61017660048036038101906101719190610b7b565b6105ad565b005b610192600480360381019061018d9190610b7b565b610619565b005b600061019e610685565b905060008160000160109054906101000a900467ffffffffffffffff1690506101d083836106c190919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102048267ffffffffffffffff16610757565b84604051610213929190610bb7565b60405180910390a1505050565b80610229610685565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102819190610bef565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102dd576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102e6610685565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f8160405161033e9190610bef565b60405180910390a150565b80610352610685565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103aa9190610bef565b60405180910390a150565b6103be81610779565b6103c6610685565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161041e9190610c0a565b60405180910390a150565b6000610433610685565b9050600061044083610779565b9050600061044d836107f2565b90508067ffffffffffffffff168267ffffffffffffffff16111561049d576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104a99190610c54565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff160217905550610500338561088c565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610531929190610cd1565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105789190610c0a565b600060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b5050505050565b806105b6610685565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d7838160405161060e9190610bef565b60405180910390a150565b80610622610685565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161067a9190610bef565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106b89190610cfa565b90508091505090565b6106ca8261096f565b6106d3826109c8565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061072981610779565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107729190610d2e565b9050919050565b600062989680680100000000000000006107939190610d2e565b82106107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610dcd565b60405180910390fd5b629896806107e183610a3d565b6107eb9190610e1c565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361084e9190610c54565b6108589190610e4d565b6108629190610e4d565b8260010160009054906101000a900467ffffffffffffffff166108859190610e8a565b9050919050565b610894610a97565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108f2929190610ec6565b6020604051808303816000875af1158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190610f27565b61096b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610978816107f2565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a099190610cfa565b610a139190610e4d565b8260000160189054906101000a900467ffffffffffffffff16610a369190610e8a565b9050919050565b6000806298968083610a4f9190610f54565b14610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690610fd1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610aca9190610cfa565b90508091505090565b600080fd5b6000819050919050565b610aeb81610ad8565b8114610af657600080fd5b50565b600081359050610b0881610ae2565b92915050565b600060208284031215610b2457610b23610ad3565b5b6000610b3284828501610af9565b91505092915050565b600067ffffffffffffffff82169050919050565b610b5881610b3b565b8114610b6357600080fd5b50565b600081359050610b7581610b4f565b92915050565b600060208284031215610b9157610b90610ad3565b5b6000610b9f84828501610b66565b91505092915050565b610bb181610ad8565b82525050565b6000604082019050610bcc6000830185610ba8565b610bd96020830184610ba8565b9392505050565b610be981610b3b565b82525050565b6000602082019050610c046000830184610be0565b92915050565b6000602082019050610c1f6000830184610ba8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c5f82610b3b565b9150610c6a83610b3b565b9250828203905067ffffffffffffffff811115610c8a57610c89610c25565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cbb82610c90565b9050919050565b610ccb81610cb0565b82525050565b6000604082019050610ce66000830185610ba8565b610cf36020830184610cc2565b9392505050565b6000610d0582610ad8565b9150610d1083610ad8565b9250828203905081811115610d2857610d27610c25565b5b92915050565b6000610d3982610ad8565b9150610d4483610ad8565b9250828202610d5281610ad8565b91508282048414831517610d6957610d68610c25565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610db7601283610d70565b9150610dc282610d81565b602082019050919050565b60006020820190508181036000830152610de681610daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e2782610ad8565b9150610e3283610ad8565b925082610e4257610e41610ded565b5b828204905092915050565b6000610e5882610b3b565b9150610e6383610b3b565b9250828202610e7181610b3b565b9150808214610e8357610e82610c25565b5b5092915050565b6000610e9582610b3b565b9150610ea083610b3b565b9250828201905067ffffffffffffffff811115610ec057610ebf610c25565b5b92915050565b6000604082019050610edb6000830185610cc2565b610ee86020830184610ba8565b9392505050565b60008115159050919050565b610f0481610eef565b8114610f0f57600080fd5b50565b600081519050610f2181610efb565b92915050565b600060208284031215610f3d57610f3c610ad3565b5b6000610f4b84828501610f12565b91505092915050565b6000610f5f82610ad8565b9150610f6a83610ad8565b925082610f7a57610f79610ded565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fbb601683610d70565b9150610fc682610f85565b602082019050919050565b60006020820190508181036000830152610fea81610fae565b905091905056fea2646970667358221220b9d1127430e9ee8bda169203f033037b165f47bdcd28cf207a659822b366cbb064736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4c9c40811610066578063b4c9c40814610108578063d223174114610124578063d7ec4c5f14610140578063e39c67441461015c578063eb6080221461017857610093565b80631f1f9fd5146100985780633631983f146100b45780636512447d146100d057806379e3e4e4146100ec575b600080fd5b6100b260048036038101906100ad9190610b0e565b610194565b005b6100ce60048036038101906100c99190610b7b565b610220565b005b6100ea60048036038101906100e59190610b7b565b61028c565b005b61010660048036038101906101019190610b7b565b610349565b005b610122600480360381019061011d9190610b0e565b6103b5565b005b61013e60048036038101906101399190610b0e565b610429565b005b61015a60048036038101906101559190610b0e565b61053f565b005b61017660048036038101906101719190610b7b565b6105ad565b005b610192600480360381019061018d9190610b7b565b610619565b005b600061019e610685565b905060008160000160109054906101000a900467ffffffffffffffff1690506101d083836106c190919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102048267ffffffffffffffff16610757565b84604051610213929190610bb7565b60405180910390a1505050565b80610229610685565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102819190610bef565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102dd576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102e6610685565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f8160405161033e9190610bef565b60405180910390a150565b80610352610685565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103aa9190610bef565b60405180910390a150565b6103be81610779565b6103c6610685565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161041e9190610c0a565b60405180910390a150565b6000610433610685565b9050600061044083610779565b9050600061044d836107f2565b90508067ffffffffffffffff168267ffffffffffffffff16111561049d576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104a99190610c54565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff160217905550610500338561088c565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610531929190610cd1565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105789190610c0a565b600060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b5050505050565b806105b6610685565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d7838160405161060e9190610bef565b60405180910390a150565b80610622610685565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161067a9190610bef565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106b89190610cfa565b90508091505090565b6106ca8261096f565b6106d3826109c8565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061072981610779565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107729190610d2e565b9050919050565b600062989680680100000000000000006107939190610d2e565b82106107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610dcd565b60405180910390fd5b629896806107e183610a3d565b6107eb9190610e1c565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361084e9190610c54565b6108589190610e4d565b6108629190610e4d565b8260010160009054906101000a900467ffffffffffffffff166108859190610e8a565b9050919050565b610894610a97565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108f2929190610ec6565b6020604051808303816000875af1158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190610f27565b61096b576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610978816107f2565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a099190610cfa565b610a139190610e4d565b8260000160189054906101000a900467ffffffffffffffff16610a369190610e8a565b9050919050565b6000806298968083610a4f9190610f54565b14610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690610fd1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610aca9190610cfa565b90508091505090565b600080fd5b6000819050919050565b610aeb81610ad8565b8114610af657600080fd5b50565b600081359050610b0881610ae2565b92915050565b600060208284031215610b2457610b23610ad3565b5b6000610b3284828501610af9565b91505092915050565b600067ffffffffffffffff82169050919050565b610b5881610b3b565b8114610b6357600080fd5b50565b600081359050610b7581610b4f565b92915050565b600060208284031215610b9157610b90610ad3565b5b6000610b9f84828501610b66565b91505092915050565b610bb181610ad8565b82525050565b6000604082019050610bcc6000830185610ba8565b610bd96020830184610ba8565b9392505050565b610be981610b3b565b82525050565b6000602082019050610c046000830184610be0565b92915050565b6000602082019050610c1f6000830184610ba8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c5f82610b3b565b9150610c6a83610b3b565b9250828203905067ffffffffffffffff811115610c8a57610c89610c25565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cbb82610c90565b9050919050565b610ccb81610cb0565b82525050565b6000604082019050610ce66000830185610ba8565b610cf36020830184610cc2565b9392505050565b6000610d0582610ad8565b9150610d1083610ad8565b9250828203905081811115610d2857610d27610c25565b5b92915050565b6000610d3982610ad8565b9150610d4483610ad8565b9250828202610d5281610ad8565b91508282048414831517610d6957610d68610c25565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610db7601283610d70565b9150610dc282610d81565b602082019050919050565b60006020820190508181036000830152610de681610daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e2782610ad8565b9150610e3283610ad8565b925082610e4257610e41610ded565b5b828204905092915050565b6000610e5882610b3b565b9150610e6383610b3b565b9250828202610e7181610b3b565b9150808214610e8357610e82610c25565b5b5092915050565b6000610e9582610b3b565b9150610ea083610b3b565b9250828201905067ffffffffffffffff811115610ec057610ebf610c25565b5b92915050565b6000604082019050610edb6000830185610cc2565b610ee86020830184610ba8565b9392505050565b60008115159050919050565b610f0481610eef565b8114610f0f57600080fd5b50565b600081519050610f2181610efb565b92915050565b600060208284031215610f3d57610f3c610ad3565b5b6000610f4b84828501610f12565b91505092915050565b6000610f5f82610ad8565b9150610f6a83610ad8565b925082610f7a57610f79610ded565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fbb601683610d70565b9150610fc682610f85565b602082019050919050565b60006020820190508181036000830152610fea81610fae565b905091905056fea2646970667358221220b9d1127430e9ee8bda169203f033037b165f47bdcd28cf207a659822b366cbb064736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:1998:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:1998:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:405:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:405:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2485:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2485:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1271:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1950:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1490:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2285:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2516:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1720:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1271:213::-;1409:10;1358:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1434:43;1466:10;1434:43;;;;;;:::i;:::-;;;;;;;;1271:213;:::o;1950:329::-;410:7;2039:38;;:6;:38;;;2035:106;;;2100:30;;;;;;;;;;;;;;2035:106;2210:6;2151:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2231:41;2265:6;2231:41;;;;;;:::i;:::-;;;;;;;;1950:329;:::o;1490:224::-;1633:13;1580:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1661:46;1693:13;1661:46;;;;;;:::i;:::-;;;;;;;;1490:224;:::o;2285:225::-;2430:15;:6;:13;:15::i;:::-;2373:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2460:43;2496:6;2460:43;;;;;;:::i;:::-;;;;;;;;2285:225;:::o;696:569::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1131:12;1099:2;:22;;;:45;;;;;;;;;;;;;;;;;;1155:43;1179:10;1191:6;1155:23;:43::i;:::-;1214:44;1239:6;1247:10;1214:44;;;;;;;:::i;:::-;;;;;;;;763:502;;;696:569;:::o;2516:181::-;2636:6;2593:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2657:33;2683:6;2657:33;;;;;;:::i;:::-;;;;;;;;2516:181;:::o;1720:224::-;1863:13;1810:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1891:46;1923:13;1891:46;;;;;;:::i;:::-;;;;;;;;1720:224;:::o;1672:184:6:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:4:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:7:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:205::-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;1111:215:4:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;929:176:4:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;487:169:7:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;1852:180:5:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f92806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a79565b61016d565b005b6100c360048036038101906100be9190610ae6565b6101f9565b005b6100df60048036038101906100da9190610ae6565b610265565b005b6100fb60048036038101906100f69190610ae6565b610322565b005b61011760048036038101906101129190610a79565b61038e565b005b610133600480360381019061012e9190610a79565b610402565b005b61014f600480360381019061014a9190610ae6565b610518565b005b61016b60048036038101906101669190610ae6565b610584565b005b60006101776105f0565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361062c90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff166106c2565b846040516101ec929190610b22565b60405180910390a1505050565b806102026105f0565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b5a565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105f0565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b5a565b60405180910390a150565b8061032b6105f0565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b5a565b60405180910390a150565b610397816106e4565b61039f6105f0565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b75565b60405180910390a150565b600061040c6105f0565b90506000610419836106e4565b905060006104268361075d565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610bbf565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff1602179055506104d933856107f7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161050a929190610c3c565b60405180910390a150505050565b806105216105f0565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105799190610b5a565b60405180910390a150565b8061058d6105f0565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105e59190610b5a565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106239190610c65565b90508091505090565b610635826108da565b61063e82610933565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610694816106e4565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106dd9190610c99565b9050919050565b600062989680680100000000000000006106fe9190610c99565b821061073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690610d38565b60405180910390fd5b6298968061074c836109a8565b6107569190610d87565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107b99190610bbf565b6107c39190610db8565b6107cd9190610db8565b8260010160009054906101000a900467ffffffffffffffff166107f09190610df5565b9050919050565b6107ff610a02565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161085d929190610e31565b6020604051808303816000875af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610e92565b6108d6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108e38161075d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109749190610c65565b61097e9190610db8565b8260000160189054906101000a900467ffffffffffffffff166109a19190610df5565b9050919050565b60008062989680836109ba9190610ebf565b146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610f3c565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a359190610c65565b90508091505090565b600080fd5b6000819050919050565b610a5681610a43565b8114610a6157600080fd5b50565b600081359050610a7381610a4d565b92915050565b600060208284031215610a8f57610a8e610a3e565b5b6000610a9d84828501610a64565b91505092915050565b600067ffffffffffffffff82169050919050565b610ac381610aa6565b8114610ace57600080fd5b50565b600081359050610ae081610aba565b92915050565b600060208284031215610afc57610afb610a3e565b5b6000610b0a84828501610ad1565b91505092915050565b610b1c81610a43565b82525050565b6000604082019050610b376000830185610b13565b610b446020830184610b13565b9392505050565b610b5481610aa6565b82525050565b6000602082019050610b6f6000830184610b4b565b92915050565b6000602082019050610b8a6000830184610b13565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca82610aa6565b9150610bd583610aa6565b9250828203905067ffffffffffffffff811115610bf557610bf4610b90565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2682610bfb565b9050919050565b610c3681610c1b565b82525050565b6000604082019050610c516000830185610b13565b610c5e6020830184610c2d565b9392505050565b6000610c7082610a43565b9150610c7b83610a43565b9250828203905081811115610c9357610c92610b90565b5b92915050565b6000610ca482610a43565b9150610caf83610a43565b9250828202610cbd81610a43565b91508282048414831517610cd457610cd3610b90565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d22601283610cdb565b9150610d2d82610cec565b602082019050919050565b60006020820190508181036000830152610d5181610d15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d9282610a43565b9150610d9d83610a43565b925082610dad57610dac610d58565b5b828204905092915050565b6000610dc382610aa6565b9150610dce83610aa6565b9250828202610ddc81610aa6565b9150808214610dee57610ded610b90565b5b5092915050565b6000610e0082610aa6565b9150610e0b83610aa6565b9250828201905067ffffffffffffffff811115610e2b57610e2a610b90565b5b92915050565b6000604082019050610e466000830185610c2d565b610e536020830184610b13565b9392505050565b60008115159050919050565b610e6f81610e5a565b8114610e7a57600080fd5b50565b600081519050610e8c81610e66565b92915050565b600060208284031215610ea857610ea7610a3e565b5b6000610eb684828501610e7d565b91505092915050565b6000610eca82610a43565b9150610ed583610a43565b925082610ee557610ee4610d58565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f26601683610cdb565b9150610f3182610ef0565b602082019050919050565b60006020820190508181036000830152610f5581610f19565b905091905056fea26469706673582212208f338edcfb36245800ee4e5a4eed15d37a2aa333c307126f47e0f62a0b3efc3864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a79565b61016d565b005b6100c360048036038101906100be9190610ae6565b6101f9565b005b6100df60048036038101906100da9190610ae6565b610265565b005b6100fb60048036038101906100f69190610ae6565b610322565b005b61011760048036038101906101129190610a79565b61038e565b005b610133600480360381019061012e9190610a79565b610402565b005b61014f600480360381019061014a9190610ae6565b610518565b005b61016b60048036038101906101669190610ae6565b610584565b005b60006101776105f0565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361062c90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff166106c2565b846040516101ec929190610b22565b60405180910390a1505050565b806102026105f0565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b5a565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105f0565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b5a565b60405180910390a150565b8061032b6105f0565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b5a565b60405180910390a150565b610397816106e4565b61039f6105f0565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b75565b60405180910390a150565b600061040c6105f0565b90506000610419836106e4565b905060006104268361075d565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610bbf565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438360000160086101000a81548163ffffffff021916908363ffffffff1602179055506104d933856107f7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161050a929190610c3c565b60405180910390a150505050565b806105216105f0565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105799190610b5a565b60405180910390a150565b8061058d6105f0565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105e59190610b5a565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106239190610c65565b90508091505090565b610635826108da565b61063e82610933565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610694816106e4565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106dd9190610c99565b9050919050565b600062989680680100000000000000006106fe9190610c99565b821061073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690610d38565b60405180910390fd5b6298968061074c836109a8565b6107569190610d87565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107b99190610bbf565b6107c39190610db8565b6107cd9190610db8565b8260010160009054906101000a900467ffffffffffffffff166107f09190610df5565b9050919050565b6107ff610a02565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161085d929190610e31565b6020604051808303816000875af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610e92565b6108d6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108e38161075d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109749190610c65565b61097e9190610db8565b8260000160189054906101000a900467ffffffffffffffff166109a19190610df5565b9050919050565b60008062989680836109ba9190610ebf565b146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610f3c565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a359190610c65565b90508091505090565b600080fd5b6000819050919050565b610a5681610a43565b8114610a6157600080fd5b50565b600081359050610a7381610a4d565b92915050565b600060208284031215610a8f57610a8e610a3e565b5b6000610a9d84828501610a64565b91505092915050565b600067ffffffffffffffff82169050919050565b610ac381610aa6565b8114610ace57600080fd5b50565b600081359050610ae081610aba565b92915050565b600060208284031215610afc57610afb610a3e565b5b6000610b0a84828501610ad1565b91505092915050565b610b1c81610a43565b82525050565b6000604082019050610b376000830185610b13565b610b446020830184610b13565b9392505050565b610b5481610aa6565b82525050565b6000602082019050610b6f6000830184610b4b565b92915050565b6000602082019050610b8a6000830184610b13565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca82610aa6565b9150610bd583610aa6565b9250828203905067ffffffffffffffff811115610bf557610bf4610b90565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2682610bfb565b9050919050565b610c3681610c1b565b82525050565b6000604082019050610c516000830185610b13565b610c5e6020830184610c2d565b9392505050565b6000610c7082610a43565b9150610c7b83610a43565b9250828203905081811115610c9357610c92610b90565b5b92915050565b6000610ca482610a43565b9150610caf83610a43565b9250828202610cbd81610a43565b91508282048414831517610cd457610cd3610b90565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d22601283610cdb565b9150610d2d82610cec565b602082019050919050565b60006020820190508181036000830152610d5181610d15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d9282610a43565b9150610d9d83610a43565b925082610dad57610dac610d58565b5b828204905092915050565b6000610dc382610aa6565b9150610dce83610aa6565b9250828202610ddc81610aa6565b9150808214610dee57610ded610b90565b5b5092915050565b6000610e0082610aa6565b9150610e0b83610aa6565b9250828201905067ffffffffffffffff811115610e2b57610e2a610b90565b5b92915050565b6000604082019050610e466000830185610c2d565b610e536020830184610b13565b9392505050565b60008115159050919050565b610e6f81610e5a565b8114610e7a57600080fd5b50565b600081519050610e8c81610e66565b92915050565b600060208284031215610ea857610ea7610a3e565b5b6000610eb684828501610e7d565b91505092915050565b6000610eca82610a43565b9150610ed583610a43565b925082610ee557610ee4610d58565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f26601683610cdb565b9150610f3182610ef0565b602082019050919050565b60006020820190508181036000830152610f5581610f19565b905091905056fea26469706673582212208f338edcfb36245800ee4e5a4eed15d37a2aa333c307126f47e0f62a0b3efc3864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol": {"AST": {"absolutePath": "contracts/echidna/Operators.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "ISSVOperators": [2054], "OperatorLib": [2433], "Operators": [665], "ProtocolLib": [833], "SSVModules": [2443], "SSVOperators": [1670], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 666, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "../modules/SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 666, "sourceUnit": 1671, "src": "70:37:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 666, "sourceUnit": 834, "src": "108:38:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVOperators", "nameLocations": ["170:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "170:12:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "170:12:0"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 665, "linearizedBaseContracts": [665, 1670, 2054, 1786], "name": "Operators", "nameLocation": "157:9:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8, "libraryName": {"id": 6, "name": "Types64", "nameLocations": ["195:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "195:7:0"}, "nodeType": "UsingForDirective", "src": "189:25:0", "typeName": {"id": 7, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 11, "libraryName": {"id": 9, "name": "Types256", "nameLocations": ["225:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "225:8:0"}, "nodeType": "UsingForDirective", "src": "219:27:0", "typeName": {"id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "238:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 15, "libraryName": {"id": 12, "name": "ProtocolLib", "nameLocations": ["257:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 833, "src": "257:11:0"}, "nodeType": "UsingForDirective", "src": "251:38:0", "typeName": {"id": 14, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 13, "name": "StorageProtocol", "nameLocations": ["273:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "273:15:0"}, "referencedDeclaration": 1828, "src": "273:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 18, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "319:20:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "295:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 16, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "295:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "342:11:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 21, "mutability": "constant", "name": "MAXIMUM_OPERATOR_FEE", "nameLocation": "383:20:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "359:65:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 19, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "359:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "37365f3532385f3635305f3030305f303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "406:18:0", "typeDescriptions": {"typeIdentifier": "t_rational_76528650000000_by_1", "typeString": "int_const 76528650000000"}, "value": "76_528_650_000_000"}, "visibility": "private"}, {"constant": true, "id": 24, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "454:16:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "430:49:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "430:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "473:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "functionSelector": "ef3e65f7", "id": 27, "mutability": "mutable", "name": "opIds", "nameLocation": "501:5:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "485:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 25, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "485:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 26, "nodeType": "ArrayTypeName", "src": "485:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "public"}, {"constant": false, "id": 29, "mutability": "mutable", "name": "sault", "nameLocation": "528:5:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "512:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 28, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "512:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 31, "mutability": "mutable", "name": "minNetworkFee", "nameLocation": "554:13:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "539:28:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 30, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "539:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 37, "name": "AssertionFailed", "nameLocation": "580:15:0", "nodeType": "EventDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "603:10:0", "nodeType": "VariableDeclaration", "scope": 37, "src": "596:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "596:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 35, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "620:13:0", "nodeType": "VariableDeclaration", "scope": 37, "src": "615:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 34, "name": "bool", "nodeType": "ElementaryTypeName", "src": "615:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "595:39:0"}, "src": "574:61:0"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 43, "name": "AssertionFailed", "nameLocation": "646:15:0", "nodeType": "EventDefinition", "parameters": {"id": 42, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 39, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "669:10:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "662:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 38, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "662:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 41, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "688:17:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "681:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 40, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "681:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "661:45:0"}, "src": "640:67:0"}, {"body": {"id": 110, "nodeType": "Block", "src": "727:512:0", "statements": [{"expression": {"id": 48, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 46, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "737:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 47, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "753:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 49, "nodeType": "ExpressionStatement", "src": "737:36:0"}, {"assignments": [52], "declarations": [{"constant": false, "id": 52, "mutability": "mutable", "name": "sp", "nameLocation": "807:2:0", "nodeType": "VariableDeclaration", "scope": 110, "src": "783:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 51, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 50, "name": "StorageProtocol", "nameLocations": ["783:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "783:15:0"}, "referencedDeclaration": 1828, "src": "783:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 56, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 53, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "812:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 54, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "831:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "812:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "812:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "783:54:0"}, {"expression": {"id": 61, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 57, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "847:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 59, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "850:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1812, "src": "847:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 60, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "883:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "847:42:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 62, "nodeType": "ExpressionStatement", "src": "847:42:0"}, {"expression": {"id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 63, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "899:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 65, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "902:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1815, "src": "899:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 68, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "941:19:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "933:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "933:7:0", "typeDescriptions": {}}}, "id": 69, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "933:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "962:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "933:35:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 71, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "933:37:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "899:71:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 73, "nodeType": "ExpressionStatement", "src": "899:71:0"}, {"expression": {"id": 78, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 74, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "980:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 76, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "983:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1800, "src": "980:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1012:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "980:35:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 79, "nodeType": "ExpressionStatement", "src": "980:35:0"}, {"expression": {"id": 84, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 80, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1025:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 82, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1028:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "1025:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1055:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "1025:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "1025:36:0"}, {"expression": {"id": 90, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 86, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1071:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 88, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1074:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1821, "src": "1071:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 89, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1101:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "1071:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 91, "nodeType": "ExpressionStatement", "src": "1071:36:0"}, {"expression": {"id": 96, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 92, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1117:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 94, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1120:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "1117:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 95, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1145:4:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "1117:32:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 97, "nodeType": "ExpressionStatement", "src": "1117:32:0"}, {"expression": {"id": 102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 98, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1159:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1162:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "1159:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 101, "name": "MAXIMUM_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "1179:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1159:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 103, "nodeType": "ExpressionStatement", "src": "1159:40:0"}, {"expression": {"arguments": [{"hexValue": "30", "id": 107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1230:1:0", "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"}], "expression": {"id": 104, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1210:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 106, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1213:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 736, "src": "1210:19:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1210:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 109, "nodeType": "ExpressionStatement", "src": "1210:22:0"}]}, "id": 111, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 44, "nodeType": "ParameterList", "parameters": [], "src": "724:2:0"}, "returnParameters": {"id": 45, "nodeType": "ParameterList", "parameters": [], "src": "727:0:0"}, "scope": 665, "src": "713:526:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 119, "nodeType": "Block", "src": "1309:29:0", "statements": [{"expression": {"id": 117, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "1326:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "functionReturnParameters": 116, "id": 118, "nodeType": "Return", "src": "1319:12:0"}]}, "functionSelector": "e1d95a2e", "id": 120, "implemented": true, "kind": "function", "modifiers": [], "name": "getOperatorIds", "nameLocation": "1254:14:0", "nodeType": "FunctionDefinition", "parameters": {"id": 112, "nodeType": "ParameterList", "parameters": [], "src": "1268:2:0"}, "returnParameters": {"id": 116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 115, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 120, "src": "1292:15:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 113, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1292:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 114, "nodeType": "ArrayTypeName", "src": "1292:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "src": "1291:17:0"}, "scope": 665, "src": "1245:93:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 136, "nodeType": "Block", "src": "1419:78:0", "statements": [{"expression": {"expression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 127, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1436:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1447:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1436:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1436:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1454:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1436:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 132, "indexExpression": {"id": 131, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 122, "src": "1464:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1436:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1476:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1436:48:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1485:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1436:54:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "functionReturnParameters": 126, "id": 135, "nodeType": "Return", "src": "1429:61:0"}]}, "functionSelector": "ba2fee51", "id": 137, "implemented": true, "kind": "function", "modifiers": [], "name": "getOperatorBlock", "nameLocation": "1353:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 122, "mutability": "mutable", "name": "operatorId", "nameLocation": "1377:10:0", "nodeType": "VariableDeclaration", "scope": 137, "src": "1370:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 121, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1370:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1369:19:0"}, "returnParameters": {"id": 126, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 125, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 137, "src": "1410:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 124, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1410:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1409:9:0"}, "scope": 665, "src": "1344:153:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 193, "nodeType": "Block", "src": "1565:306:0", "statements": [{"assignments": [143], "declarations": [{"constant": false, "id": 143, "mutability": "mutable", "name": "randomBytes", "nameLocation": "1588:11:0", "nodeType": "VariableDeclaration", "scope": 193, "src": "1575:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 142, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1575:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 148, "initialValue": {"arguments": [{"hexValue": "3438", "id": 146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1612:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1602:9:0", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 144, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1606:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1602:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1575:40:0"}, {"body": {"id": 186, "nodeType": "Block", "src": "1655:165:0", "statements": [{"expression": {"id": 184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 159, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 143, "src": "1669:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 161, "indexExpression": {"id": 160, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1681:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1669:14:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 171, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "1748:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 172, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1755:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1761:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1755:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 174, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1772:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1776:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1772:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 176, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1784:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 169, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1731:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1735:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1731:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1731:55:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 168, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1721:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1721:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 167, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1716:4:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 166, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1716:4:0", "typeDescriptions": {}}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1716:72:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1791:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "1716:78:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1710:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 164, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1710:5:0", "typeDescriptions": {}}}, "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1710:85:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 163, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1686:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 162, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "1686:6:0", "typeDescriptions": {}}}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1686:123:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1669:140:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 185, "nodeType": "ExpressionStatement", "src": "1669:140:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1642:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 154, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1646:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "1642:6:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 187, "initializationExpression": {"assignments": [150], "declarations": [{"constant": false, "id": 150, "mutability": "mutable", "name": "i", "nameLocation": "1635:1:0", "nodeType": "VariableDeclaration", "scope": 187, "src": "1630:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 149, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1630:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 152, "initialValue": {"hexValue": "30", "id": 151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1639:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1630:10:0"}, "loopExpression": {"expression": {"id": 157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1650:3:0", "subExpression": {"id": 156, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1650:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 158, "nodeType": "ExpressionStatement", "src": "1650:3:0"}, "nodeType": "ForStatement", "src": "1625:195:0"}, {"expression": {"id": 189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1829:7:0", "subExpression": {"id": 188, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "1829:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 190, "nodeType": "ExpressionStatement", "src": "1829:7:0"}, {"expression": {"id": 191, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 143, "src": "1853:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 141, "id": 192, "nodeType": "Return", "src": "1846:18:0"}]}, "id": 194, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "1512:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 138, "nodeType": "ParameterList", "parameters": [], "src": "1530:2:0"}, "returnParameters": {"id": 141, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 140, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 194, "src": "1551:12:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 139, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1551:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1550:14:0"}, "scope": 665, "src": "1503:368:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 286, "nodeType": "Block", "src": "1952:713:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 204, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "1970:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 205, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "1976:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1970:9:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d6178206d7573742062652067726561746572207468616e206d696e", "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1981:30:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}, "value": "Max must be greater than min"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}], "id": 203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1962:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1962:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 209, "nodeType": "ExpressionStatement", "src": "1962:50:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 211, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2043:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 212, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2049:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2043:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2068:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2043:26:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 216, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "2073:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 217, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2079:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2073:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2098:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2073:26:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2043:56:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f662031302c3030302c303030", "id": 222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2113:45:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e5d72a08f20a34a35846903c0432592a8147529573af61787676b3512f8fdcba", "typeString": "literal_string \"Min and Max must be multiples of 10,000,000\""}, "value": "Min and Max must be multiples of 10,000,000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e5d72a08f20a34a35846903c0432592a8147529573af61787676b3512f8fdcba", "typeString": "literal_string \"Min and Max must be multiples of 10,000,000\""}], "id": 210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2022:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2022:146:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 224, "nodeType": "ExpressionStatement", "src": "2022:146:0"}, {"assignments": [226], "declarations": [{"constant": false, "id": 226, "mutability": "mutable", "name": "randomHash", "nameLocation": "2187:10:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2179:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 225, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2179:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 238, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 232, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "2235:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 233, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2242:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2248:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2242:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 230, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2218:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2222:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2218:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2218:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 229, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2208:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2208:51:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2200:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2200:7:0", "typeDescriptions": {}}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2200:60:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2179:81:0"}, {"expression": {"id": 240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2270:7:0", "subExpression": {"id": 239, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "2270:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 241, "nodeType": "ExpressionStatement", "src": "2270:7:0"}, {"assignments": [243], "declarations": [{"constant": false, "id": 243, "mutability": "mutable", "name": "reducedHash", "nameLocation": "2294:11:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2287:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 242, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2287:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 248, "initialValue": {"arguments": [{"id": 246, "name": "randomHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "2315:10:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2308:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 244, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2308:6:0", "typeDescriptions": {}}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2308:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2287:39:0"}, {"assignments": [250], "declarations": [{"constant": false, "id": 250, "mutability": "mutable", "name": "range", "nameLocation": "2435:5:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2427:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 249, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2427:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 259, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 251, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "2444:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 252, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2450:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2444:9:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 254, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2443:11:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 255, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2457:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2443:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2475:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2443:33:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2427:49:0"}, {"assignments": [261], "declarations": [{"constant": false, "id": 261, "mutability": "mutable", "name": "feeMultiplier", "nameLocation": "2494:13:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2486:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2486:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 268, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 262, "name": "reducedHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 243, "src": "2511:11:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 263, "name": "range", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 250, "src": "2525:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2511:19:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 265, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2510:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 266, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2534:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2510:39:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2486:63:0"}, {"assignments": [270], "declarations": [{"constant": false, "id": 270, "mutability": "mutable", "name": "fee", "nameLocation": "2567:3:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2559:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2559:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 274, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 271, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2573:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 272, "name": "feeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 261, "src": "2579:13:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2573:19:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2559:33:0"}, {"expression": {"id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 275, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2602:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 276, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2608:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 277, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2615:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 278, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2621:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2615:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 280, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2614:23:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2608:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2602:35:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 283, "nodeType": "ExpressionStatement", "src": "2602:35:0"}, {"expression": {"id": 284, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2655:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 202, "id": 285, "nodeType": "Return", "src": "2648:10:0"}]}, "id": 287, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateFee", "nameLocation": "1886:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 199, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 196, "mutability": "mutable", "name": "min", "nameLocation": "1907:3:0", "nodeType": "VariableDeclaration", "scope": 287, "src": "1899:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 195, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1899:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 198, "mutability": "mutable", "name": "max", "nameLocation": "1920:3:0", "nodeType": "VariableDeclaration", "scope": 287, "src": "1912:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 197, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1912:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1898:26:0"}, "returnParameters": {"id": 202, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 201, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 287, "src": "1943:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 200, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1943:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1942:9:0"}, "scope": 665, "src": "1877:788:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 340, "nodeType": "Block", "src": "2728:417:0", "statements": [{"assignments": [293], "declarations": [{"constant": false, "id": 293, "mutability": "mutable", "name": "minN", "nameLocation": "2746:4:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2738:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2738:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 295, "initialValue": {"id": 294, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "2753:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2738:28:0"}, {"assignments": [297], "declarations": [{"constant": false, "id": 297, "mutability": "mutable", "name": "maxN", "nameLocation": "2784:4:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2776:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2776:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 302, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 298, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "2791:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2810:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "2791:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2791:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 301, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2817:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "2791:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2776:55:0"}, {"assignments": [304], "declarations": [{"constant": false, "id": 304, "mutability": "mutable", "name": "publicKey", "nameLocation": "2855:9:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2842:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 303, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2842:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 307, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 305, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 194, "src": "2867:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2867:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2842:45:0"}, {"assignments": [309], "declarations": [{"constant": false, "id": 309, "mutability": "mutable", "name": "fee", "nameLocation": "2905:3:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2897:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 308, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2897:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 314, "initialValue": {"arguments": [{"id": 311, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 293, "src": "2924:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 312, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2930:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 310, "name": "_generateFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "2911:12:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) returns (uint256)"}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2911:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2897:38:0"}, {"clauses": [{"block": {"id": 331, "nodeType": "Block", "src": "3016:78:0", "statements": [{"expression": {"arguments": [{"id": 326, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3041:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 323, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3030:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "3030:10:0", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3030:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "3030:22:0"}, {"expression": {"id": 329, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3073:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 291, "id": 330, "nodeType": "Return", "src": "3066:17:0"}]}, "errorName": "", "id": 332, "nodeType": "TryCatchClause", "parameters": {"id": 322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 321, "mutability": "mutable", "name": "operatorId", "nameLocation": "3004:10:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "2997:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 320, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2997:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2996:19:0"}, "src": "2988:106:0"}, {"block": {"id": 337, "nodeType": "Block", "src": "3101:38:0", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 334, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3122:5:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 333, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3115:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3115:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 336, "nodeType": "ExpressionStatement", "src": "3115:13:0"}]}, "errorName": "", "id": 338, "nodeType": "TryCatchClause", "src": "3095:44:0"}], "externalCall": {"arguments": [{"id": 317, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2972:9:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 318, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, "src": "2983:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 315, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2950:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2955:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 986, "src": "2950:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint256) external returns (uint64)"}}, "id": 319, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2950:37:0", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 339, "nodeType": "TryStatement", "src": "2946:193:0"}]}, "functionSelector": "249eaafa", "id": 341, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "2680:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 288, "nodeType": "ParameterList", "parameters": [], "src": "2701:2:0"}, "returnParameters": {"id": 291, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 290, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 341, "src": "2720:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 289, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2720:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2719:8:0"}, "scope": 665, "src": "2671:474:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 365, "nodeType": "Block", "src": "3235:124:0", "statements": [{"expression": {"id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 348, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3245:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 349, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3258:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 352, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3278:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3284:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3278:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3271:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 350, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3271:6:0", "typeDescriptions": {}}}, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3271:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3258:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3245:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 357, "nodeType": "ExpressionStatement", "src": "3245:46:0"}, {"expression": {"arguments": [{"id": 361, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3328:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 362, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 345, "src": "3340:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 358, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3302:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3307:20:0", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1145, "src": "3302:25:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3302:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 364, "nodeType": "ExpressionStatement", "src": "3302:50:0"}]}, "functionSelector": "60e7474e", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "3160:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 343, "mutability": "mutable", "name": "operatorId", "nameLocation": "3195:10:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "3188:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3188:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 345, "mutability": "mutable", "name": "whitelisted", "nameLocation": "3215:11:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "3207:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 344, "name": "address", "nodeType": "ElementaryTypeName", "src": "3207:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3187:40:0"}, "returnParameters": {"id": 347, "nodeType": "ParameterList", "parameters": [], "src": "3235:0:0"}, "scope": 665, "src": "3151:208:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 429, "nodeType": "Block", "src": "3426:464:0", "statements": [{"expression": {"id": 379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 371, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3436:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 372, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3449:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 375, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3469:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3475:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3469:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 374, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3462:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 373, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3462:6:0", "typeDescriptions": {}}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3462:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3449:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3436:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 380, "nodeType": "ExpressionStatement", "src": "3436:46:0"}, {"assignments": [383], "declarations": [{"constant": false, "id": 383, "mutability": "mutable", "name": "operator", "nameLocation": "3510:8:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3493:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 382, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 381, "name": "Operator", "nameLocations": ["3493:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "3493:8:0"}, "referencedDeclaration": 1699, "src": "3493:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 390, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 384, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "3521:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3532:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "3521:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 386, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3521:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 387, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3539:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3521:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 389, "indexExpression": {"id": 388, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3549:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3521:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3493:67:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 392, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3578:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3587:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "3578:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3596:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "3578:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 395, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3605:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3578:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3608:26:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 391, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3570:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3570:65:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 399, "nodeType": "ExpressionStatement", "src": "3570:65:0"}, {"assignments": [401], "declarations": [{"constant": false, "id": 401, "mutability": "mutable", "name": "fee", "nameLocation": "3653:3:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3646:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 400, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3646:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 404, "initialValue": {"expression": {"id": 402, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3659:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 403, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3668:3:0", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "3659:12:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3646:25:0"}, {"assignments": [406], "declarations": [{"constant": false, "id": 406, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3689:13:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3682:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 405, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3682:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 419, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 407, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "3706:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 408, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3713:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 409, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "3732:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3751:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "3732:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3732:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 412, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3758:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "3732:48:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3713:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 414, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3712:69:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3706:75:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 416, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3705:77:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 417, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3797:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3705:108:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3682:131:0"}, {"expression": {"arguments": [{"id": 423, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3848:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 424, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 406, "src": "3860:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3874:6:0", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "3860:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3860:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 420, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3824:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3829:18:0", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1287, "src": "3824:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3824:59:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 428, "nodeType": "ExpressionStatement", "src": "3824:59:0"}]}, "functionSelector": "0f5baea8", "id": 430, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "3374:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "3407:10:0", "nodeType": "VariableDeclaration", "scope": 430, "src": "3400:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3400:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3399:19:0"}, "returnParameters": {"id": 370, "nodeType": "ParameterList", "parameters": [], "src": "3426:0:0"}, "scope": 665, "src": "3365:525:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 451, "nodeType": "Block", "src": "3957:109:0", "statements": [{"expression": {"id": 443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 435, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "3967:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 436, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "3980:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 439, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4000:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4006:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4000:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 438, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3993:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 437, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3993:6:0", "typeDescriptions": {}}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3993:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3980:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3967:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 444, "nodeType": "ExpressionStatement", "src": "3967:46:0"}, {"expression": {"arguments": [{"id": 448, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "4048:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 445, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4024:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4029:18:0", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1397, "src": "4024:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4024:35:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 450, "nodeType": "ExpressionStatement", "src": "4024:35:0"}]}, "functionSelector": "45a5605a", "id": 452, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "3905:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 433, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 432, "mutability": "mutable", "name": "operatorId", "nameLocation": "3938:10:0", "nodeType": "VariableDeclaration", "scope": 452, "src": "3931:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 431, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3931:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3930:19:0"}, "returnParameters": {"id": 434, "nodeType": "ParameterList", "parameters": [], "src": "3957:0:0"}, "scope": 665, "src": "3896:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 473, "nodeType": "Block", "src": "4129:105:0", "statements": [{"expression": {"id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 457, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4139:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 458, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4152:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 461, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4172:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4178:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4172:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 460, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4165:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 459, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4165:6:0", "typeDescriptions": {}}}, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4165:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4152:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4139:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 466, "nodeType": "ExpressionStatement", "src": "4139:46:0"}, {"expression": {"arguments": [{"id": 470, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4216:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 467, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4196:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4201:14:0", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "4196:19:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4196:31:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "4196:31:0"}]}, "functionSelector": "36058dc4", "id": 474, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "4081:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 454, "mutability": "mutable", "name": "operatorId", "nameLocation": "4110:10:0", "nodeType": "VariableDeclaration", "scope": 474, "src": "4103:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 453, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4103:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4102:19:0"}, "returnParameters": {"id": 456, "nodeType": "ParameterList", "parameters": [], "src": "4129:0:0"}, "scope": 665, "src": "4072:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 515, "nodeType": "Block", "src": "4364:277:0", "statements": [{"expression": {"id": 487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 479, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4374:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 480, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4387:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 483, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4407:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4413:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4407:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 482, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4400:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 481, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4400:6:0", "typeDescriptions": {}}}, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4400:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4387:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4374:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 488, "nodeType": "ExpressionStatement", "src": "4374:46:0"}, {"assignments": [491], "declarations": [{"constant": false, "id": 491, "mutability": "mutable", "name": "operator", "nameLocation": "4447:8:0", "nodeType": "VariableDeclaration", "scope": 515, "src": "4431:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 490, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 489, "name": "Operator", "nameLocations": ["4431:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4431:8:0"}, "referencedDeclaration": 1699, "src": "4431:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 498, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 492, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4458:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4469:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4458:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4458:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 495, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4476:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4458:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 497, "indexExpression": {"id": 496, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4486:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4458:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4431:66:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 499, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4513:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4522:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "4513:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4531:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "4513:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4540:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4513:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 504, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4512:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 505, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4546:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 506, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4555:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "4546:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4512:54:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 514, "nodeType": "IfStatement", "src": "4508:126:0", "trueBody": {"eventCall": {"arguments": [{"id": 509, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4601:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 510, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4613:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4622:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "4613:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 508, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [37, 43], "referencedDeclaration": 37, "src": "4585:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4585:49:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 513, "nodeType": "EmitStatement", "src": "4580:54:0"}}]}, "functionSelector": "22ca0bed", "id": 516, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "4302:35:0", "nodeType": "FunctionDefinition", "parameters": {"id": 477, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 476, "mutability": "mutable", "name": "operatorId", "nameLocation": "4345:10:0", "nodeType": "VariableDeclaration", "scope": 516, "src": "4338:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 475, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4338:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4337:19:0"}, "returnParameters": {"id": 478, "nodeType": "ParameterList", "parameters": [], "src": "4364:0:0"}, "scope": 665, "src": "4293:348:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 571, "nodeType": "Block", "src": "4717:436:0", "statements": [{"expression": {"id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 521, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4727:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 522, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4740:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 525, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4760:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4766:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4760:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 524, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4753:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 523, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4753:6:0", "typeDescriptions": {}}}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4753:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4740:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4727:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 530, "nodeType": "ExpressionStatement", "src": "4727:46:0"}, {"assignments": [533], "declarations": [{"constant": false, "id": 533, "mutability": "mutable", "name": "operator", "nameLocation": "4800:8:0", "nodeType": "VariableDeclaration", "scope": 571, "src": "4784:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 532, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 531, "name": "Operator", "nameLocations": ["4784:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4784:8:0"}, "referencedDeclaration": 1699, "src": "4784:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 540, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 534, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4811:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4822:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4811:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4811:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 537, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4829:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4811:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 539, "indexExpression": {"id": 538, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4839:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4811:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4784:66:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 541, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "4879:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4888:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "4879:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4897:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "4879:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4906:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4879:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 546, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4878:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 547, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4925:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4936:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4925:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4925:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 550, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4943:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "4925:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 552, "indexExpression": {"id": 551, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4969:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4925:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4981:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4925:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5002:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4925:78:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 556, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4924:80:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4878:126:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 570, "nodeType": "IfStatement", "src": "4861:286:0", "trueBody": {"id": 569, "nodeType": "Block", "src": "5015:132:0", "statements": [{"eventCall": {"arguments": [{"id": 559, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "5050:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 560, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5062:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5073:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5062:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5062:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5080:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5062:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 565, "indexExpression": {"id": 564, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "5106:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5062:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5118:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "5062:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 558, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [37, 43], "referencedDeclaration": 43, "src": "5034:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5034:102:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 568, "nodeType": "EmitStatement", "src": "5029:107:0"}]}}]}, "functionSelector": "9d5ceb91", "id": 572, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "4656:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 519, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 518, "mutability": "mutable", "name": "operatorId", "nameLocation": "4698:10:0", "nodeType": "VariableDeclaration", "scope": 572, "src": "4691:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 517, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4691:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4690:19:0"}, "returnParameters": {"id": 520, "nodeType": "ParameterList", "parameters": [], "src": "4717:0:0"}, "scope": 665, "src": "4647:506:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 612, "nodeType": "Block", "src": "5207:227:0", "statements": [{"body": {"id": 610, "nodeType": "Block", "src": "5256:172:0", "statements": [{"assignments": [587], "declarations": [{"constant": false, "id": 587, "mutability": "mutable", "name": "operator", "nameLocation": "5286:8:0", "nodeType": "VariableDeclaration", "scope": 610, "src": "5270:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 586, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 585, "name": "Operator", "nameLocations": ["5270:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5270:8:0"}, "referencedDeclaration": 1699, "src": "5270:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 596, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 588, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5297:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5308:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5297:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5297:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 591, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5315:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5297:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 595, "indexExpression": {"baseExpression": {"id": 592, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5325:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 594, "indexExpression": {"id": 593, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5331:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5325:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5297:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5270:64:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 598, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "5355:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5364:14:0", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "5355:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5381:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5355:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 602, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "5386:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5395:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "5386:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 604, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5404:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "5386:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5415:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5386:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "5355:61:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 597, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "5348:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5348:69:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "ExpressionStatement", "src": "5348:69:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 578, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5233:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 579, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5237:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5243:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "5237:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5233:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 611, "initializationExpression": {"assignments": [576], "declarations": [{"constant": false, "id": 576, "mutability": "mutable", "name": "i", "nameLocation": "5230:1:0", "nodeType": "VariableDeclaration", "scope": 611, "src": "5222:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 575, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5222:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 577, "nodeType": "VariableDeclarationStatement", "src": "5222:9:0"}, "loopExpression": {"expression": {"id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5251:3:0", "subExpression": {"id": 582, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5251:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 584, "nodeType": "ExpressionStatement", "src": "5251:3:0"}, "nodeType": "ForStatement", "src": "5217:211:0"}]}, "functionSelector": "e7780e00", "id": 613, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "5168:29:0", "nodeType": "FunctionDefinition", "parameters": {"id": 573, "nodeType": "ParameterList", "parameters": [], "src": "5197:2:0"}, "returnParameters": {"id": 574, "nodeType": "ParameterList", "parameters": [], "src": "5207:0:0"}, "scope": 665, "src": "5159:275:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 663, "nodeType": "Block", "src": "5492:326:0", "statements": [{"assignments": [618], "declarations": [{"constant": false, "id": 618, "mutability": "mutable", "name": "sp", "nameLocation": "5525:2:0", "nodeType": "VariableDeclaration", "scope": 663, "src": "5502:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_memory_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 617, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 616, "name": "StorageProtocol", "nameLocations": ["5502:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "5502:15:0"}, "referencedDeclaration": 1828, "src": "5502:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 622, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 619, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "5530:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5549:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "5530:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5530:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5502:53:0"}, {"assignments": [624], "declarations": [{"constant": false, "id": 624, "mutability": "mutable", "name": "earnings", "nameLocation": "5572:8:0", "nodeType": "VariableDeclaration", "scope": 663, "src": "5565:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 623, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5565:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 625, "nodeType": "VariableDeclarationStatement", "src": "5565:15:0"}, {"body": {"id": 654, "nodeType": "Block", "src": "5629:140:0", "statements": [{"assignments": [638], "declarations": [{"constant": false, "id": 638, "mutability": "mutable", "name": "operator", "nameLocation": "5659:8:0", "nodeType": "VariableDeclaration", "scope": 654, "src": "5643:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 637, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 636, "name": "Operator", "nameLocations": ["5643:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5643:8:0"}, "referencedDeclaration": 1699, "src": "5643:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 647, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 639, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5670:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5681:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5670:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5670:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5688:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5670:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 646, "indexExpression": {"baseExpression": {"id": 643, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5698:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 645, "indexExpression": {"id": 644, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5704:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5698:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5670:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5643:64:0"}, {"expression": {"id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 648, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "5721:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 649, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 638, "src": "5733:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5742:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "5733:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 651, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5751:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "5733:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5721:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 653, "nodeType": "ExpressionStatement", "src": "5721:37:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 629, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5606:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 630, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5610:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5616:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "5610:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5606:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 655, "initializationExpression": {"assignments": [627], "declarations": [{"constant": false, "id": 627, "mutability": "mutable", "name": "i", "nameLocation": "5603:1:0", "nodeType": "VariableDeclaration", "scope": 655, "src": "5595:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5595:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 628, "nodeType": "VariableDeclarationStatement", "src": "5595:9:0"}, "loopExpression": {"expression": {"id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5624:3:0", "subExpression": {"id": 633, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5624:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 635, "nodeType": "ExpressionStatement", "src": "5624:3:0"}, "nodeType": "ForStatement", "src": "5590:179:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 657, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 618, "src": "5785:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_memory_ptr", "typeString": "struct StorageProtocol memory"}}, "id": 658, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5788:10:0", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "5785:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 659, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "5802:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5785:25:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 656, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "5778:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5778:33:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "ExpressionStatement", "src": "5778:33:0"}]}, "functionSelector": "30eab391", "id": 664, "implemented": true, "kind": "function", "modifiers": [], "name": "check_operatorEarningsWithBalance", "nameLocation": "5449:33:0", "nodeType": "FunctionDefinition", "parameters": {"id": 614, "nodeType": "ParameterList", "parameters": [], "src": "5482:2:0"}, "returnParameters": {"id": 615, "nodeType": "ParameterList", "parameters": [], "src": "5492:0:0"}, "scope": 665, "src": "5440:378:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 666, "src": "148:5672:0", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:5776:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1786]}, "id": 1787, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1672, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1786, "linearizedBaseContracts": [1786], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1682, "members": [{"constant": false, "id": 1675, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1674, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1678, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1677, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1681, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1680, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1786, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1699, "members": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1684, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1688, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1687, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1691, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1690, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1694, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1693, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1698, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1697, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1696, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1682, "src": "1129:8:1"}, "referencedDeclaration": 1682, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1786, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1709, "members": [{"constant": false, "id": 1702, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1701, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1705, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1704, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1708, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1707, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1786, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1725, "members": [{"constant": false, "id": 1712, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1711, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1715, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1714, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1718, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1717, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1721, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1720, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1724, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1786, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1727, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1726, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1729, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1728, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1731, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1730, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1733, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1732, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1735, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1734, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1737, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1739, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1741, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1740, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1743, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1742, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1745, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1744, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1747, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1746, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1749, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1748, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1751, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1750, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1753, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1752, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1755, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1754, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1757, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1756, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1759, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1758, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1761, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1760, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1763, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1762, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1765, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1764, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1767, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1766, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1769, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1768, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1771, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1770, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1773, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1772, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1775, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1774, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1777, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1776, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1779, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1778, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1781, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1780, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1783, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1782, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1785, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1784, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1787, "src": "70:3477:1", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [1786], "ISSVOperators": [2054]}, "id": 2055, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1920, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1921, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2055, "sourceUnit": 1787, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1922, "name": "ISSVNetworkCore", "nameLocations": ["130:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1786, "src": "130:15:2"}, "id": 1923, "nodeType": "InheritanceSpecifier", "src": "130:15:2"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2054, "linearizedBaseContracts": [2054, 1786], "name": "ISSVOperators", "nameLocation": "113:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1924, "nodeType": "StructuredDocumentation", "src": "152:136:2", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1933, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1926, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:2", "nodeType": "VariableDeclaration", "scope": 1933, "src": "319:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1925, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1928, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:2", "nodeType": "VariableDeclaration", "scope": 1933, "src": "345:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:2"}, "returnParameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1931, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1933, "src": "376:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1930, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:2"}, "scope": 2054, "src": "293:91:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1934, "nodeType": "StructuredDocumentation", "src": "390:103:2", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1939, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1936, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:2", "nodeType": "VariableDeclaration", "scope": 1939, "src": "522:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1935, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:2"}, "returnParameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [], "src": "549:0:2"}, "scope": 2054, "src": "498:52:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1940, "nodeType": "StructuredDocumentation", "src": "556:152:2", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1947, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1945, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1942, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:2", "nodeType": "VariableDeclaration", "scope": 1947, "src": "743:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1941, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1944, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:2", "nodeType": "VariableDeclaration", "scope": 1947, "src": "762:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1943, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:2"}, "returnParameters": {"id": 1946, "nodeType": "ParameterList", "parameters": [], "src": "791:0:2"}, "scope": 2054, "src": "713:79:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1948, "nodeType": "StructuredDocumentation", "src": "798:136:2", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1955, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1950, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:2", "nodeType": "VariableDeclaration", "scope": 1955, "src": "967:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1949, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1952, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:2", "nodeType": "VariableDeclaration", "scope": 1955, "src": "986:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1951, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:2"}, "returnParameters": {"id": 1954, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:2"}, "scope": 2054, "src": "939:69:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1956, "nodeType": "StructuredDocumentation", "src": "1014:88:2", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1961, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1958, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:2", "nodeType": "VariableDeclaration", "scope": 1961, "src": "1135:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1957, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:2"}, "returnParameters": {"id": 1960, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:2"}, "scope": 2054, "src": "1107:56:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1962, "nodeType": "StructuredDocumentation", "src": "1169:96:2", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1967, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1964, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:2", "nodeType": "VariableDeclaration", "scope": 1967, "src": "1305:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:2"}, "returnParameters": {"id": 1966, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:2"}, "scope": 2054, "src": "1270:63:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1968, "nodeType": "StructuredDocumentation", "src": "1339:135:2", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1975, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1973, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1970, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:2", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1506:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1972, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:2", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1525:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:2"}, "returnParameters": {"id": 1974, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:2"}, "scope": 2054, "src": "1479:68:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1976, "nodeType": "StructuredDocumentation", "src": "1553:154:2", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1983, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1978, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:2", "nodeType": "VariableDeclaration", "scope": 1983, "src": "1746:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1977, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1980, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:2", "nodeType": "VariableDeclaration", "scope": 1983, "src": "1765:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:2"}, "returnParameters": {"id": 1982, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:2"}, "scope": 2054, "src": "1712:83:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1984, "nodeType": "StructuredDocumentation", "src": "1801:92:2", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1989, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1987, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1986, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:2", "nodeType": "VariableDeclaration", "scope": 1989, "src": "1935:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1985, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:2"}, "returnParameters": {"id": 1988, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:2"}, "scope": 2054, "src": "1898:65:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1990, "nodeType": "StructuredDocumentation", "src": "1969:317:2", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 2000, "name": "OperatorAdded", "nameLocation": "2297:13:2", "nodeType": "EventDefinition", "parameters": {"id": 1999, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1992, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2311:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1991, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1994, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2338:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1993, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1996, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2361:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1995, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1998, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2378:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1997, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:2"}, "src": "2291:100:2"}, {"anonymous": false, "documentation": {"id": 2001, "nodeType": "StructuredDocumentation", "src": "2397:103:2", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 2005, "name": "OperatorRemoved", "nameLocation": "2511:15:2", "nodeType": "EventDefinition", "parameters": {"id": 2004, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2003, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:2", "nodeType": "VariableDeclaration", "scope": 2005, "src": "2527:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2002, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:2"}, "src": "2505:49:2"}, {"anonymous": false, "documentation": {"id": 2006, "nodeType": "StructuredDocumentation", "src": "2560:179:2", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 2012, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:2", "nodeType": "EventDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2008, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:2", "nodeType": "VariableDeclaration", "scope": 2012, "src": "2775:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2007, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2010, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:2", "nodeType": "VariableDeclaration", "scope": 2012, "src": "2802:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2009, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:2"}, "src": "2744:79:2"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 2022, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:2", "nodeType": "EventDefinition", "parameters": {"id": 2021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2014, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2854:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2013, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2016, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2877:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2015, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2018, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2904:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2020, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2925:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:2"}, "src": "2828:110:2"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 2028, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:2", "nodeType": "EventDefinition", "parameters": {"id": 2027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2024, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:2", "nodeType": "VariableDeclaration", "scope": 2028, "src": "2982:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2023, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2026, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:2", "nodeType": "VariableDeclaration", "scope": 2028, "src": "3005:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2025, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:2"}, "src": "2944:88:2"}, {"anonymous": false, "documentation": {"id": 2029, "nodeType": "StructuredDocumentation", "src": "3037:192:2", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 2039, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:2", "nodeType": "EventDefinition", "parameters": {"id": 2038, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2031, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3260:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2030, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2033, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3283:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2032, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2035, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3310:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2037, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3331:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2036, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:2"}, "src": "3234:110:2"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 2047, "name": "OperatorWithdrawn", "nameLocation": "3355:17:2", "nodeType": "EventDefinition", "parameters": {"id": 2046, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2041, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3373:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2040, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2043, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3396:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2042, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2045, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3423:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2044, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:2"}, "src": "3349:89:2"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 2053, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:2", "nodeType": "EventDefinition", "parameters": {"id": 2052, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2049, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:2", "nodeType": "VariableDeclaration", "scope": 2053, "src": "3476:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2048, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2051, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:2", "nodeType": "VariableDeclaration", "scope": 2053, "src": "3499:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2050, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:2"}, "src": "3443:82:2"}], "scope": 2055, "src": "103:3424:2", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:3483:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "IERC20": [2665], "ISSVNetworkCore": [1786], "SSVModules": [2443], "SSVStorage": [2513], "StorageData": [2490]}, "id": 2186, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2056, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2057, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2186, "sourceUnit": 2514, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2185, "linearizedBaseContracts": [2185], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2064, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2060, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2064, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, "typeName": {"id": 2059, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2058, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "141:10:3"}, "referencedDeclaration": 2443, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2062, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2064, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2061, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2071, "nodeType": "Block", "src": "259:32:3", "statements": [{"expression": {"hexValue": "76312e302e32", "id": 2069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:8:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a93491ab14f0da9be9ef6814ab0c16bbbdf1cf68412eb6d7d1f6ea944c85b62a", "typeString": "literal_string \"v1.0.2\""}, "value": "v1.0.2"}, "functionReturnParameters": 2068, "id": 2070, "nodeType": "Return", "src": "269:15:3"}]}, "id": 2072, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2065, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2067, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2072, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2066, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2185, "src": "199:92:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2095, "nodeType": "Block", "src": "359:136:3", "statements": [{"condition": {"id": 2087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "373:45:3", "subExpression": {"arguments": [{"id": 2084, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2074, "src": "407:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2085, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2076, "src": "411:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2079, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "374:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "385:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "392:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2485, "src": "374:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "398:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2632, "src": "374:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2094, "nodeType": "IfStatement", "src": "369:120:3", "trueBody": {"id": 2093, "nodeType": "Block", "src": "420:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2088, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "441:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "457:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "441:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "441:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2092, "nodeType": "RevertStatement", "src": "434:44:3"}]}}]}, "id": 2096, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "306:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2077, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2074, "mutability": "mutable", "name": "to", "nameLocation": "330:2:3", "nodeType": "VariableDeclaration", "scope": 2096, "src": "322:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2073, "name": "address", "nodeType": "ElementaryTypeName", "src": "322:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2076, "mutability": "mutable", "name": "amount", "nameLocation": "342:6:3", "nodeType": "VariableDeclaration", "scope": 2096, "src": "334:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "334:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "321:28:3"}, "returnParameters": {"id": 2078, "nodeType": "ParameterList", "parameters": [], "src": "359:0:3"}, "scope": 2185, "src": "297:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2122, "nodeType": "Block", "src": "543:163:3", "statements": [{"condition": {"id": 2114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:72:3", "subExpression": {"arguments": [{"expression": {"id": 2106, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "595:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "599:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "595:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2110, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "615:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2185", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2185", "typeString": "library CoreLib"}], "id": 2109, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "607:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2108, "name": "address", "nodeType": "ElementaryTypeName", "src": "607:7:3", "typeDescriptions": {}}}, "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "607:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2112, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2098, "src": "622:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2101, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "558:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "569:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "558:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "576:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2485, "src": "558:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2664, "src": "558:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2121, "nodeType": "IfStatement", "src": "553:147:3", "trueBody": {"id": 2120, "nodeType": "Block", "src": "631:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2115, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "652:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "668:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "652:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "652:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2119, "nodeType": "RevertStatement", "src": "645:44:3"}]}}]}, "id": 2123, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "510:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2098, "mutability": "mutable", "name": "amount", "nameLocation": "526:6:3", "nodeType": "VariableDeclaration", "scope": 2123, "src": "518:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2097, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "518:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "517:16:3"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [], "src": "543:0:3"}, "scope": 2185, "src": "501:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2149, "nodeType": "Block", "src": "1348:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2131, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2126, "src": "1362:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1381:1:3", "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": 2133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1373:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2132, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:3", "typeDescriptions": {}}}, "id": 2135, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1373:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1362:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2140, "nodeType": "IfStatement", "src": "1358:64:3", "trueBody": {"id": 2139, "nodeType": "Block", "src": "1385:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1406:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2130, "id": 2138, "nodeType": "Return", "src": "1399:12:3"}]}}, {"assignments": [2142], "declarations": [{"constant": false, "id": 2142, "mutability": "mutable", "name": "size", "nameLocation": "1626:4:3", "nodeType": "VariableDeclaration", "scope": 2149, "src": "1618:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2143, "nodeType": "VariableDeclarationStatement", "src": "1618:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1705:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1719:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1739:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1727:11:3"}, "nodeType": "YulFunctionCall", "src": "1727:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1719:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2126, "isOffset": false, "isSlot": false, "src": "1739:7:3", "valueSize": 1}, {"declaration": 2142, "isOffset": false, "isSlot": false, "src": "1719:4:3", "valueSize": 1}], "id": 2144, "nodeType": "InlineAssembly", "src": "1696:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2145, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2142, "src": "1773:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1780:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1773:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2130, "id": 2148, "nodeType": "Return", "src": "1766:15:3"}]}, "documentation": {"id": 2124, "nodeType": "StructuredDocumentation", "src": "712:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2150, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1291:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2127, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2126, "mutability": "mutable", "name": "account", "nameLocation": "1310:7:3", "nodeType": "VariableDeclaration", "scope": 2150, "src": "1302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2125, "name": "address", "nodeType": "ElementaryTypeName", "src": "1302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1301:17:3"}, "returnParameters": {"id": 2130, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2129, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2150, "src": "1342:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2128, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1342:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1341:6:3"}, "scope": 2185, "src": "1282:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2183, "nodeType": "Block", "src": "1875:219:3", "statements": [{"condition": {"id": 2161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1889:26:3", "subExpression": {"arguments": [{"id": 2159, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "1901:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2158, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "1890:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1890:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2167, "nodeType": "IfStatement", "src": "1885:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2162, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1924:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1781, "src": "1924:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1924:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2166, "nodeType": "RevertStatement", "src": "1917:49:3"}}, {"expression": {"id": 2176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2168, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1977:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1988:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1977:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1977:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2172, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1977:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2174, "indexExpression": {"id": 2173, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2153, "src": "2008:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1977:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2175, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "2020:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1977:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2177, "nodeType": "ExpressionStatement", "src": "1977:56:3"}, {"eventCall": {"arguments": [{"id": 2179, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2153, "src": "2063:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, {"id": 2180, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "2073:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2178, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2064, "src": "2048:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$2443_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2048:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2182, "nodeType": "EmitStatement", "src": "2043:44:3"}]}, "id": 2184, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1804:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2156, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2153, "mutability": "mutable", "name": "moduleId", "nameLocation": "1833:8:3", "nodeType": "VariableDeclaration", "scope": 2184, "src": "1822:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, "typeName": {"id": 2152, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2151, "name": "SSVModules", "nameLocations": ["1822:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "1822:10:3"}, "referencedDeclaration": 2443, "src": "1822:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2155, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1851:13:3", "nodeType": "VariableDeclaration", "scope": 2184, "src": "1843:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2154, "name": "address", "nodeType": "ElementaryTypeName", "src": "1843:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1821:44:3"}, "returnParameters": {"id": 2157, "nodeType": "ParameterList", "parameters": [], "src": "1875:0:3"}, "scope": 2185, "src": "1795:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2186, "src": "98:1998:3", "usedErrors": []}], "src": "45:2052:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "OperatorLib": [2433], "SSVModules": [2443], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 2434, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2187, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2188, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1787, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2189, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 2514, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2190, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1852, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2191, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1919, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2433, "linearizedBaseContracts": [2433], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2194, "libraryName": {"id": 2192, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2193, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2247, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2201], "declarations": [{"constant": false, "id": 2201, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2247, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2215, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2204, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2202, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2207, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2208, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2209, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2211, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2212, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2216, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2219, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2221, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2201, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2223, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2224, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2228, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2229, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2201, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2230, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2231, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2234, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2235, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2238, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2242, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2241, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2240, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2246, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2248, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2197, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2248, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2196, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2195, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "280:24:4"}, "referencedDeclaration": 1699, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2199, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2433, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2301, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2255], "declarations": [{"constant": false, "id": 2255, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2301, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2269, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2258, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2257, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2256, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2260, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2261, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2263, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2265, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2266, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2267, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2270, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2274, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2275, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2255, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2277, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2278, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2281, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2283, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2255, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2284, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2288, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2289, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2292, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2296, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2294, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2300, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2302, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2251, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2302, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2250, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2249, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "653:24:4"}, "referencedDeclaration": 1699, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2253, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2433, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2330, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2308, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2305, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2309, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2318, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2313, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2317, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2319, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2305, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2321, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2329, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2324, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1727, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2328, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2331, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2306, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2305, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2331, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2304, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2303, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1016:24:4"}, "referencedDeclaration": 1699, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2307, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2433, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2431, "nodeType": "Block", "src": "1521:822:4", "statements": [{"assignments": [2352], "declarations": [{"constant": false, "id": 2352, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "1539:15:4", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1531:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2351, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1531:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2355, "initialValue": {"expression": {"id": 2353, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2334, "src": "1557:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1569:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1557:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1531:44:4"}, {"body": {"id": 2429, "nodeType": "Block", "src": "1625:712:4", "statements": [{"assignments": [2363], "declarations": [{"constant": false, "id": 2363, "mutability": "mutable", "name": "operatorId", "nameLocation": "1646:10:4", "nodeType": "VariableDeclaration", "scope": 2429, "src": "1639:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2362, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1639:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2367, "initialValue": {"baseExpression": {"id": 2364, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2334, "src": "1659:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2366, "indexExpression": {"id": 2365, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "1671:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1659:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1639:34:4"}, {"assignments": [2372], "declarations": [{"constant": false, "id": 2372, "mutability": "mutable", "name": "operator", "nameLocation": "1720:8:4", "nodeType": "VariableDeclaration", "scope": 2429, "src": "1687:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2371, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2370, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1687:15:4", "1703:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1687:24:4"}, "referencedDeclaration": 1699, "src": "1687:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2377, "initialValue": {"baseExpression": {"expression": {"id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2341, "src": "1731:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1733:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1731:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2376, "indexExpression": {"id": 2375, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2363, "src": "1743:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1731:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1687:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2378, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1772:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2379, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1781:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1772:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2380, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1790:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1772:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1799:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1772:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2418, "nodeType": "IfStatement", "src": "1768:446:4", "trueBody": {"id": 2417, "nodeType": "Block", "src": "1802:412:4", "statements": [{"expression": {"arguments": [{"id": 2384, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1837:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2383, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2302, "src": "1820:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1699_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1820:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2386, "nodeType": "ExpressionStatement", "src": "1820:26:4"}, {"condition": {"id": 2388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1868:23:4", "subExpression": {"id": 2387, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2336, "src": "1869:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2396, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1991:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2000:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "1991:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2398, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "2018:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1991:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2400, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1990:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 2401, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2344, "src": "2041:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2402, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2044:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1800, "src": "2041:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1990:80:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2410, "nodeType": "IfStatement", "src": "1986:172:4", "trueBody": {"id": 2409, "nodeType": "Block", "src": "2072:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2404, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "2101:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2117:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1767, "src": "2101:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2101:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2408, "nodeType": "RevertStatement", "src": "2094:45:4"}]}}, "id": 2411, "nodeType": "IfStatement", "src": "1864:294:4", "trueBody": {"id": 2395, "nodeType": "Block", "src": "1893:87:4", "statements": [{"expression": {"id": 2393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2389, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1915:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1924:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "1915:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2392, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "1942:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1915:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2394, "nodeType": "ExpressionStatement", "src": "1915:46:4"}]}}, {"expression": {"id": 2415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2412, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2349, "src": "2175:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2413, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "2187:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2196:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "2187:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2175:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2416, "nodeType": "ExpressionStatement", "src": "2175:24:4"}]}}, {"expression": {"id": 2423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2419, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "2228:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2420, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "2244:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2421, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2253:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2244:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2262:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "2244:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2228:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2424, "nodeType": "ExpressionStatement", "src": "2228:39:4"}, {"id": 2428, "nodeType": "UncheckedBlock", "src": "2281:46:4", "statements": [{"expression": {"id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2309:3:4", "subExpression": {"id": 2425, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "2311:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2427, "nodeType": "ExpressionStatement", "src": "2309:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2359, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "1602:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2360, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "1606:15:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1602:19:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2430, "initializationExpression": {"assignments": [2357], "declarations": [{"constant": false, "id": 2357, "mutability": "mutable", "name": "i", "nameLocation": "1599:1:4", "nodeType": "VariableDeclaration", "scope": 2430, "src": "1591:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2356, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1591:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2358, "nodeType": "VariableDeclarationStatement", "src": "1591:9:4"}, "nodeType": "ForStatement", "src": "1586:751:4"}]}, "id": 2432, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2345, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2334, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2332, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2333, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2336, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2335, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2338, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2337, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2341, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2340, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2339, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1401:11:4"}, "referencedDeclaration": 2490, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}, {"constant": false, "id": 2344, "mutability": "mutable", "name": "sp", "nameLocation": "1456:2:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1432:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2343, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2342, "name": "StorageProtocol", "nameLocations": ["1432:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1432:15:4"}, "referencedDeclaration": 1828, "src": "1432:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1281:183:4"}, "returnParameters": {"id": 2350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2347, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1490:12:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1483:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1483:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2349, "mutability": "mutable", "name": "burnRate", "nameLocation": "1511:8:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1504:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2348, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1482:38:4"}, "scope": 2433, "src": "1257:1086:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2434, "src": "199:2146:4", "usedErrors": []}], "src": "45:2301:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1856], "ISSVNetworkCore": [1786], "ProtocolLib": [833], "SSVStorageProtocol": [1851], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 834, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 667, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 668, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1787, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 669, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1919, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 670, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1852, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 833, "linearizedBaseContracts": [833], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 673, "libraryName": {"id": 671, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 672, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 696, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 681, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 682, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1806, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 685, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 687, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 688, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1791, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 684, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 691, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 680, "id": 695, "nodeType": "Return", "src": "443:96:5"}]}, "id": 697, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 677, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 676, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 675, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 674, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "374:15:5"}, "referencedDeclaration": 1828, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 680, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 679, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 697, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 678, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 833, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 735, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 706, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 705, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 708, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 709, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 711, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1806, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 713, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 712, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 697, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 716, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 717, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1791, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 722, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 721, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 720, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 726, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 727, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 729, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 730, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 702, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 734, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 736, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 700, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 736, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 699, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 698, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "578:15:5"}, "referencedDeclaration": 1828, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 702, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 736, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 704, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 833, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 760, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 742, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 744, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 746, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 745, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 749, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 750, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 752, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 755, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 759, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 761, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 740, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 739, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 761, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 738, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 737, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "956:15:5"}, "referencedDeclaration": 1828, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 741, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 833, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 788, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 769, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 770, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 773, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 772, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 775, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 776, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 779, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 780, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 781, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 783, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 768, "id": 787, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 789, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 765, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 764, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 789, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 763, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 762, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1141:15:5"}, "referencedDeclaration": 1828, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 767, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 789, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 766, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 833, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 831, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 800, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 799, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 802, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 803, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 812, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 814, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 796, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 816, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 819, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 818, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 817, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 829, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 828, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 823, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1783, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 827, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 830, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 811, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 805, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 808, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 796, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 810, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 832, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 792, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 790, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1351:15:5"}, "referencedDeclaration": 1828, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 794, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 793, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 796, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 795, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 798, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 833, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 834, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2587], "IERC20": [2665], "ISSVNetworkCore": [1786], "SSVModules": [2443], "SSVStorage": [2513], "StorageData": [2490]}, "id": 2514, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2435, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2436, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 1787, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 2437, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 2588, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2438, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 2666, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 2443, "members": [{"id": 2439, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 2440, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 2441, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 2442, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2490, "members": [{"constant": false, "id": 2448, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2447, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2445, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2446, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2453, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2452, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2450, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2458, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 2457, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2455, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2456, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 2464, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 2463, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2461, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2460, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "1006:10:6"}, "referencedDeclaration": 2443, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2462, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2469, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2468, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2466, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2475, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2474, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2473, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2472, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1709, "src": "1322:40:6"}, "referencedDeclaration": 1709, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2481, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2480, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2477, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2479, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2478, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1488:24:6"}, "referencedDeclaration": 1699, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2485, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}, "typeName": {"id": 2484, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2483, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2665, "src": "1599:6:6"}, "referencedDeclaration": 2665, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2489, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2488, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2487, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1686:16:6"}, "referencedDeclaration": 2519, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2514, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2513, "linearizedBaseContracts": [2513], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2500, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2513, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2491, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2499, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2494, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2496, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2493, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2492, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2511, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2507], "declarations": [{"constant": false, "id": 2507, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2511, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2509, "initialValue": {"id": 2508, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2500, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2507, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2504, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2510, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2512, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2501, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2504, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2512, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2503, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2502, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1891:11:6"}, "referencedDeclaration": 2490, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2513, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2514, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1851], "StorageProtocol": [1828]}, "id": 1852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1788, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 1828, "members": [{"constant": false, "id": 1791, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1790, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1794, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1793, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1797, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1796, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1800, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1799, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1803, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1806, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1805, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1809, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1808, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1812, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1811, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1815, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1814, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1818, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1817, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1821, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1820, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1824, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1823, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1827, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1826, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 1852, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1851, "linearizedBaseContracts": [1851], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1838, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 1851, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1832, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1849, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [1845], "declarations": [{"constant": false, "id": 1845, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 1849, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1847, "initialValue": {"id": 1846, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1838, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1845, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 1842, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 1848, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 1850, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1839, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 1843, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1842, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 1850, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1841, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1840, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1711:15:7"}, "referencedDeclaration": 1828, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 1851, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1852, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1856], "Types256": [1918], "Types64": [1869]}, "id": 1919, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 1856, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 1919, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1869, "linearizedBaseContracts": [1869], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1867, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1863, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1858, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1864, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1862, "id": 1866, "nodeType": "Return", "src": "212:30:8"}]}, "id": 1868, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1859, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1858, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 1868, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1857, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 1862, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1861, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 1869, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1919, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1918, "linearizedBaseContracts": [1918], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1897, "nodeType": "Block", "src": "338:143:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1877, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1880, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1878, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "365:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "370:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "365:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1881, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "375:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "365:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1883, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "364:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1885, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "393:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1876, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:66:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1887, "nodeType": "ExpressionStatement", "src": "348:66:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1891, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "449:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1890, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1917, "src": "438:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "438:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1893, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "458:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "438:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "431:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1888, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "431:6:8", "typeDescriptions": {}}}, "id": 1895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "431:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1875, "id": 1896, "nodeType": "Return", "src": "424:50:8"}]}, "id": 1898, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1872, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1871, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 1898, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 1875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1874, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1898, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1873, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 1918, "src": "276:205:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1916, "nodeType": "Block", "src": "554:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1906, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1900, "src": "572:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1907, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "580:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "572:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "599:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "572:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "602:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "564:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "564:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1913, "nodeType": "ExpressionStatement", "src": "564:63:8"}, {"expression": {"id": 1914, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1900, "src": "644:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1904, "id": 1915, "nodeType": "Return", "src": "637:12:8"}]}, "id": 1917, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "496:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1901, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1900, "mutability": "mutable", "name": "value", "nameLocation": "515:5:8", "nodeType": "VariableDeclaration", "scope": 1917, "src": "507:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1899, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "507:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "506:15:8"}, "returnParameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1903, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1917, "src": "545:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "545:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "544:9:8"}, "scope": 1918, "src": "487:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1919, "src": "253:405:8", "usedErrors": []}], "src": "45:614:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "ISSVOperators": [2054], "OperatorLib": [2433], "SSVModules": [2443], "SSVOperators": [1670], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 1671, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 835, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 836, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2055, "src": "70:41:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 837, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 1919, "src": "112:32:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 838, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2514, "src": "145:37:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 839, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 1852, "src": "183:45:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 840, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2434, "src": "229:38:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 841, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2186, "src": "268:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 842, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2588, "src": "304:52:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 843, "name": "ISSVOperators", "nameLocations": ["383:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2054, "src": "383:13:9"}, "id": 844, "nodeType": "InheritanceSpecifier", "src": "383:13:9"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1670, "linearizedBaseContracts": [1670, 2054, 1786], "name": "SSVOperators", "nameLocation": "367:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 847, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:9", "nodeType": "VariableDeclaration", "scope": 1670, "src": "403:58:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 845, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:9", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 850, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:9", "nodeType": "VariableDeclaration", "scope": 1670, "src": "467:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 848, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:9", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 853, "libraryName": {"id": 851, "name": "Types256", "nameLocations": ["529:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "529:8:9"}, "nodeType": "UsingForDirective", "src": "523:27:9", "typeName": {"id": 852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 856, "libraryName": {"id": 854, "name": "Types64", "nameLocations": ["561:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "561:7:9"}, "nodeType": "UsingForDirective", "src": "555:25:9", "typeName": {"id": 855, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 860, "libraryName": {"id": 857, "name": "Counters", "nameLocations": ["591:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2587, "src": "591:8:9"}, "nodeType": "UsingForDirective", "src": "585:36:9", "typeName": {"id": 859, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 858, "name": "Counters.Counter", "nameLocations": ["604:8:9", "613:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "604:16:9"}, "referencedDeclaration": 2519, "src": "604:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 864, "libraryName": {"id": 861, "name": "OperatorLib", "nameLocations": ["632:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2433, "src": "632:11:9"}, "nodeType": "UsingForDirective", "src": "626:31:9", "typeName": {"id": 863, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 862, "name": "Operator", "nameLocations": ["648:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "648:8:9"}, "referencedDeclaration": 1699, "src": "648:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1933], "body": {"id": 985, "nodeType": "Block", "src": "881:895:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 874, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "895:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "902:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "895:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 877, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "907:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 878, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "913:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "907:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "895:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 887, "nodeType": "IfStatement", "src": "891:103:9", "trueBody": {"id": 886, "nodeType": "Block", "src": "935:59:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 881, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "956:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "972:9:9", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 1731, "src": "956:25:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "956:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 885, "nodeType": "RevertStatement", "src": "949:34:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 888, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1007:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 889, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "1013:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1032:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "1013:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1013:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1039:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "1013:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1007:46:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 900, "nodeType": "IfStatement", "src": "1003:112:9", "trueBody": {"id": 899, "nodeType": "Block", "src": "1055:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 894, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1076:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1092:10:9", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 1785, "src": "1076:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1076:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 898, "nodeType": "RevertStatement", "src": "1069:35:9"}]}}, {"assignments": [903], "declarations": [{"constant": false, "id": 903, "mutability": "mutable", "name": "s", "nameLocation": "1145:1:9", "nodeType": "VariableDeclaration", "scope": 985, "src": "1125:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 901, "name": "StorageData", "nameLocations": ["1125:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1125:11:9"}, "referencedDeclaration": 2490, "src": "1125:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 907, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 904, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1149:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1160:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1149:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 906, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1149:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1125:41:9"}, {"assignments": [909], "declarations": [{"constant": false, "id": 909, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1185:8:9", "nodeType": "VariableDeclaration", "scope": 985, "src": "1177:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 908, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1177:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 913, "initialValue": {"arguments": [{"id": 911, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "1206:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 910, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1196:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1196:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1177:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 914, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1230:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 915, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1232:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1230:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 917, "indexExpression": {"id": 916, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "1245:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1230:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1258:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1230:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 925, "nodeType": "IfStatement", "src": "1226:81:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 920, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1268:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1284:21:9", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 1779, "src": "1268:37:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1268:39:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 924, "nodeType": "RevertStatement", "src": "1261:46:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 926, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1318:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 929, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1320:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2489, "src": "1318:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 930, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1335:9:9", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2545, "src": "1318:26:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2519_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2519_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 932, "nodeType": "ExpressionStatement", "src": "1318:28:9"}, {"expression": {"id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 933, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1356:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 936, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1368:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 937, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1370:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2489, "src": "1368:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 938, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1385:7:9", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2531, "src": "1368:24:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2519_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2519_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1368:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 935, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1361:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 934, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1361:6:9", "typeDescriptions": {}}}, "id": 940, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1361:34:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1356:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 942, "nodeType": "ExpressionStatement", "src": "1356:39:9"}, {"expression": {"id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 943, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1405:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1407:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1405:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 947, "indexExpression": {"id": 945, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1417:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1405:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 949, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1453:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1457:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1453:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 955, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "1527:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 954, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1520:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 953, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1520:6:9", "typeDescriptions": {}}}, "id": 957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1520:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1549:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1561:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 951, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1487:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1503:8:9", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1682, "src": "1487:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$1682_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1513:5:9", "1542:5:9", "1552:7:9"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1487:77:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1594:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 962, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1614:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1618:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "1614:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1614:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 965, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1653:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 948, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "1423:8:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$1699_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 966, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1446:5:9", "1477:8:9", "1578:14:9", "1609:3:9", "1640:11:9"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1423:246:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1405:264:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 968, "nodeType": "ExpressionStatement", "src": "1405:264:9"}, {"expression": {"id": 975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 969, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1679:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 972, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1681:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1679:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 973, "indexExpression": {"id": 971, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "1694:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1679:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 974, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1706:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1679:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 976, "nodeType": "ExpressionStatement", "src": "1679:29:9"}, {"eventCall": {"arguments": [{"id": 978, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1738:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 979, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1742:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1746:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1742:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 981, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "1754:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 982, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1765:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 977, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2000, "src": "1724:13:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1724:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 984, "nodeType": "EmitStatement", "src": "1719:50:9"}]}, "functionSelector": "ff212c5c", "id": 986, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:9", "nodeType": "FunctionDefinition", "overrides": {"id": 870, "nodeType": "OverrideSpecifier", "overrides": [], "src": "852:8:9"}, "parameters": {"id": 869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 866, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "804:24:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 865, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 868, "mutability": "mutable", "name": "fee", "nameLocation": "838:3:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "830:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "830:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "803:39:9"}, "returnParameters": {"id": 873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 872, "mutability": "mutable", "name": "id", "nameLocation": "877:2:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "870:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 871, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "870:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "869:11:9"}, "scope": 1670, "src": "778:998:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1939], "body": {"id": 1081, "nodeType": "Block", "src": "1843:647:9", "statements": [{"assignments": [994], "declarations": [{"constant": false, "id": 994, "mutability": "mutable", "name": "s", "nameLocation": "1873:1:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1853:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 993, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 992, "name": "StorageData", "nameLocations": ["1853:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1853:11:9"}, "referencedDeclaration": 2490, "src": "1853:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 998, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 995, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1877:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1888:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1877:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1877:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1853:41:9"}, {"assignments": [1001], "declarations": [{"constant": false, "id": 1001, "mutability": "mutable", "name": "operator", "nameLocation": "1920:8:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1904:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1000, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 999, "name": "Operator", "nameLocations": ["1904:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1904:8:9"}, "referencedDeclaration": 1699, "src": "1904:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1006, "initialValue": {"baseExpression": {"expression": {"id": 1002, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1931:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1003, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1933:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1931:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1005, "indexExpression": {"id": 1004, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "1943:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1931:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1904:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1007, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "1964:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1009, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1973:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "1964:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1964:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1011, "nodeType": "ExpressionStatement", "src": "1964:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1012, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "1996:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1014, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2005:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "1996:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1996:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1016, "nodeType": "ExpressionStatement", "src": "1996:25:9"}, {"assignments": [1018], "declarations": [{"constant": false, "id": 1018, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2038:14:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2031:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1017, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2031:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1022, "initialValue": {"expression": {"expression": {"id": 1019, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1020, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2064:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2055:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1021, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2073:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "2055:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2031:49:9"}, {"expression": {"id": 1029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1023, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2091:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2100:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2091:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1027, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2109:5:9", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "2091:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1028, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2117:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2091:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1030, "nodeType": "ExpressionStatement", "src": "2091:27:9"}, {"expression": {"id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1031, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2128:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1034, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2137:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2128:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1035, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2146:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "2128:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2156:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2128:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1038, "nodeType": "ExpressionStatement", "src": "2128:29:9"}, {"expression": {"id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1039, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2167:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1041, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2176:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "2167:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2167:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1044, "nodeType": "ExpressionStatement", "src": "2167:27:9"}, {"expression": {"id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1045, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2204:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1047, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2213:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "2204:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2219:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2204:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1050, "nodeType": "ExpressionStatement", "src": "2204:16:9"}, {"expression": {"id": 1057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1051, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2231:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2233:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2231:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1055, "indexExpression": {"id": 1053, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2243:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2231:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1056, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2257:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2231:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1058, "nodeType": "ExpressionStatement", "src": "2231:34:9"}, {"expression": {"id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2276:39:9", "subExpression": {"baseExpression": {"expression": {"id": 1059, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2283:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1060, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2285:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2469, "src": "2283:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1062, "indexExpression": {"id": 1061, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2304:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2283:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1064, "nodeType": "ExpressionStatement", "src": "2276:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1065, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1018, "src": "2330:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1066, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2347:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2330:18:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1076, "nodeType": "IfStatement", "src": "2326:116:9", "trueBody": {"id": 1075, "nodeType": "Block", "src": "2350:92:9", "statements": [{"expression": {"arguments": [{"id": 1069, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2395:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1070, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1018, "src": "2407:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2422:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2407:21:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2407:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1068, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1669, "src": "2364:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2364:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1074, "nodeType": "ExpressionStatement", "src": "2364:67:9"}]}}, {"eventCall": {"arguments": [{"id": 1078, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2472:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1077, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2005, "src": "2456:15:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2456:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1080, "nodeType": "EmitStatement", "src": "2451:32:9"}]}, "functionSelector": "2e168e0e", "id": 1082, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1791:14:9", "nodeType": "FunctionDefinition", "overrides": {"id": 990, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1834:8:9"}, "parameters": {"id": 989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 988, "mutability": "mutable", "name": "operatorId", "nameLocation": "1813:10:9", "nodeType": "VariableDeclaration", "scope": 1082, "src": "1806:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 987, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1806:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1805:19:9"}, "returnParameters": {"id": 991, "nodeType": "ParameterList", "parameters": [], "src": "1843:0:9"}, "scope": 1670, "src": "1782:708:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1947], "body": {"id": 1144, "nodeType": "Block", "src": "2575:407:9", "statements": [{"assignments": [1091], "declarations": [{"constant": false, "id": 1091, "mutability": "mutable", "name": "s", "nameLocation": "2605:1:9", "nodeType": "VariableDeclaration", "scope": 1144, "src": "2585:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1090, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1089, "name": "StorageData", "nameLocations": ["2585:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "2585:11:9"}, "referencedDeclaration": 2490, "src": "2585:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1095, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1092, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "2609:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2620:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "2609:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1094, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2609:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2585:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1096, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2636:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1099, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2638:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2636:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1100, "indexExpression": {"id": 1098, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2648:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2636:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1101, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2660:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "2636:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2636:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1103, "nodeType": "ExpressionStatement", "src": "2636:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1104, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2687:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2710:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2702:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1105, "name": "address", "nodeType": "ElementaryTypeName", "src": "2702:7:9", "typeDescriptions": {}}}, "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2702:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2687:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1129, "nodeType": "Block", "src": "2788:67:9", "statements": [{"expression": {"id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1120, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2802:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2804:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2802:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1124, "indexExpression": {"id": 1122, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2814:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2802:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1125, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2826:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "2802:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2840:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2802:42:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1128, "nodeType": "ExpressionStatement", "src": "2802:42:9"}]}, "id": 1130, "nodeType": "IfStatement", "src": "2683:172:9", "trueBody": {"id": 1119, "nodeType": "Block", "src": "2714:68:9", "statements": [{"expression": {"id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1110, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2728:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2730:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2728:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1114, "indexExpression": {"id": 1112, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2740:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2728:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2752:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "2728:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2766:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2728:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1118, "nodeType": "ExpressionStatement", "src": "2728:43:9"}]}}, {"expression": {"id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1131, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2865:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2867:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2469, "src": "2865:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1135, "indexExpression": {"id": 1133, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2886:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2865:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1136, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2900:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2865:46:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1138, "nodeType": "ExpressionStatement", "src": "2865:46:9"}, {"eventCall": {"arguments": [{"id": 1140, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2951:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1141, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2963:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1139, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2012, "src": "2926:24:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2926:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1143, "nodeType": "EmitStatement", "src": "2921:54:9"}]}, "functionSelector": "c90a7eab", "id": 1145, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2505:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "operatorId", "nameLocation": "2533:10:9", "nodeType": "VariableDeclaration", "scope": 1145, "src": "2526:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1083, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2526:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1086, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2553:11:9", "nodeType": "VariableDeclaration", "scope": 1145, "src": "2545:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "2545:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2525:40:9"}, "returnParameters": {"id": 1088, "nodeType": "ParameterList", "parameters": [], "src": "2575:0:9"}, "scope": 1670, "src": "2496:486:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1955], "body": {"id": 1286, "nodeType": "Block", "src": "3066:1226:9", "statements": [{"assignments": [1155], "declarations": [{"constant": false, "id": 1155, "mutability": "mutable", "name": "s", "nameLocation": "3096:1:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3076:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1154, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1153, "name": "StorageData", "nameLocations": ["3076:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "3076:11:9"}, "referencedDeclaration": 2490, "src": "3076:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1159, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1156, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "3100:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3111:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "3100:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3100:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3076:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1160, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3127:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1163, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3129:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3127:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1164, "indexExpression": {"id": 1162, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3139:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3127:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1165, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3151:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "3127:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3127:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1167, "nodeType": "ExpressionStatement", "src": "3127:36:9"}, {"assignments": [1170], "declarations": [{"constant": false, "id": 1170, "mutability": "mutable", "name": "sp", "nameLocation": "3198:2:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3174:26:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1169, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1168, "name": "StorageProtocol", "nameLocations": ["3174:15:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "3174:15:9"}, "referencedDeclaration": 1828, "src": "3174:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1174, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1171, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "3203:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3222:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "3203:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3203:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3174:54:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1175, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3243:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1176, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3250:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3243:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1178, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3255:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1179, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3261:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3255:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3243:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1185, "nodeType": "IfStatement", "src": "3239:62:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1182, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1731, "src": "3290:9:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3290:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1184, "nodeType": "RevertStatement", "src": "3283:18:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1186, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3315:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1187, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "3321:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1188, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3324:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "3321:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3315:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1193, "nodeType": "IfStatement", "src": "3311:48:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1190, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1785, "src": "3347:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1191, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3347:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1192, "nodeType": "RevertStatement", "src": "3340:19:9"}}, {"assignments": [1195], "declarations": [{"constant": false, "id": 1195, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3377:11:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3370:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1194, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3370:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1201, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 1196, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3391:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1197, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3393:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3391:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1199, "indexExpression": {"id": 1198, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3403:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3391:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3415:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "3391:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3370:48:9"}, {"assignments": [1203], "declarations": [{"constant": false, "id": 1203, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3435:9:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3428:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3428:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1207, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1204, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3447:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3451:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "3447:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3447:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3428:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1208, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3474:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1209, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3489:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3474:24:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1215, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3567:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3580:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3567:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1218, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3585:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3600:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3585:16:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3567:34:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1226, "nodeType": "IfStatement", "src": "3563:95:9", "trueBody": {"id": 1225, "nodeType": "Block", "src": "3603:55:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1222, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1773, "src": "3624:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3624:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1224, "nodeType": "RevertStatement", "src": "3617:30:9"}]}}, "id": 1227, "nodeType": "IfStatement", "src": "3470:188:9", "trueBody": {"id": 1214, "nodeType": "Block", "src": "3500:57:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1211, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "3521:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3521:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1213, "nodeType": "RevertStatement", "src": "3514:32:9"}]}}, {"assignments": [1229], "declarations": [{"constant": false, "id": 1229, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3763:13:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3756:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1228, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3756:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1240, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1230, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3780:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1231, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "3795:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1232, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "3814:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3817:22:9", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "3814:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3795:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1235, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3794:46:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3780:60:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1237, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3779:62:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1238, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "3844:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3779:81:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3756:104:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1241, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3875:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 1242, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1229, "src": "3887:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3875:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1247, "nodeType": "IfStatement", "src": "3871:63:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1244, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "3909:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3909:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1246, "nodeType": "RevertStatement", "src": "3902:32:9"}}, {"expression": {"id": 1275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1248, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3945:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1251, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3947:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "3945:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1252, "indexExpression": {"id": 1250, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3973:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3945:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 1254, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "4025:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1257, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4055:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4061:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4055:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4048:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1255, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4048:6:9", "typeDescriptions": {}}}, "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4048:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1260, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4074:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4077:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "4074:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4048:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1265, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4122:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4128:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4122:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1264, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4115:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1263, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4115:6:9", "typeDescriptions": {}}}, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4115:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1268, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4141:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1269, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4144:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "4141:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4115:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1271, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4171:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4174:24:9", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1821, "src": "4171:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4115:83:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1253, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "3987:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3987:221:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "3945:263:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1276, "nodeType": "ExpressionStatement", "src": "3945:263:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1278, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4243:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4247:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "4243:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1280, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "4255:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1281, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4267:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4273:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "4267:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1283, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "4281:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1277, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "4223:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4223:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1285, "nodeType": "EmitStatement", "src": "4218:67:9"}]}, "functionSelector": "b317c35f", "id": 1287, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "2997:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1151, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3057:8:9"}, "parameters": {"id": 1150, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1147, "mutability": "mutable", "name": "operatorId", "nameLocation": "3023:10:9", "nodeType": "VariableDeclaration", "scope": 1287, "src": "3016:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1146, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3016:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1149, "mutability": "mutable", "name": "fee", "nameLocation": "3043:3:9", "nodeType": "VariableDeclaration", "scope": 1287, "src": "3035:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3035:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3015:32:9"}, "returnParameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [], "src": "3066:0:9"}, "scope": 1670, "src": "2988:1304:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1961], "body": {"id": 1396, "nodeType": "Block", "src": "4363:926:9", "statements": [{"assignments": [1295], "declarations": [{"constant": false, "id": 1295, "mutability": "mutable", "name": "s", "nameLocation": "4393:1:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4373:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1294, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1293, "name": "StorageData", "nameLocations": ["4373:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "4373:11:9"}, "referencedDeclaration": 2490, "src": "4373:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1299, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1296, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4397:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4408:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4397:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4397:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4373:41:9"}, {"assignments": [1302], "declarations": [{"constant": false, "id": 1302, "mutability": "mutable", "name": "operator", "nameLocation": "4440:8:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4424:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1301, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1300, "name": "Operator", "nameLocations": ["4424:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4424:8:9"}, "referencedDeclaration": 1699, "src": "4424:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1307, "initialValue": {"baseExpression": {"expression": {"id": 1303, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "4451:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4453:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4451:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1306, "indexExpression": {"id": 1305, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "4463:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4451:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4424:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1308, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "4484:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4493:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "4484:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4484:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "4484:21:9"}, {"assignments": [1315], "declarations": [{"constant": false, "id": 1315, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4548:16:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4516:48:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 1314, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1313, "name": "OperatorFeeChangeRequest", "nameLocations": ["4516:24:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1709, "src": "4516:24:9"}, "referencedDeclaration": 1709, "src": "4516:24:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 1320, "initialValue": {"baseExpression": {"expression": {"id": 1316, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "4567:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4569:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "4567:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1319, "indexExpression": {"id": 1318, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "4595:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4567:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4516:90:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1321, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4621:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4638:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4621:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1323, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4659:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4621:39:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1328, "nodeType": "IfStatement", "src": "4617:67:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1325, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1735, "src": "4669:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1326, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4669:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1327, "nodeType": "RevertStatement", "src": "4662:22:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1329, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4712:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4718:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4712:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1331, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4730:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4747:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4730:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4712:52:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1334, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4768:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4774:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4768:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1336, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4786:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4803:15:9", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 1708, "src": "4786:32:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4768:50:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4712:106:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1344, "nodeType": "IfStatement", "src": "4695:194:9", "trueBody": {"id": 1343, "nodeType": "Block", "src": "4829:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1340, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "4850:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4850:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1342, "nodeType": "RevertStatement", "src": "4843:35:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1345, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4903:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1346, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4920:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "4903:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4924:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "4903:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1348, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4903:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1349, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "4935:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4954:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "4935:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4935:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1352, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4961:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "4935:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4903:72:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1357, "nodeType": "IfStatement", "src": "4899:97:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1354, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1785, "src": "4984:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1356, "nodeType": "RevertStatement", "src": "4977:19:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1358, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5007:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5016:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "5007:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5007:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1362, "nodeType": "ExpressionStatement", "src": "5007:25:9"}, {"expression": {"id": 1368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1363, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5042:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5051:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "5042:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1366, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "5057:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5074:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "5057:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5042:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1369, "nodeType": "ExpressionStatement", "src": "5042:35:9"}, {"expression": {"id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1370, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "5087:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5089:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5087:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1374, "indexExpression": {"id": 1372, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5099:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5087:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1375, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5113:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5087:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1377, "nodeType": "ExpressionStatement", "src": "5087:34:9"}, {"expression": {"id": 1382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5132:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1378, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "5139:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1379, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5141:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5139:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1381, "indexExpression": {"id": 1380, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5167:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5139:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1383, "nodeType": "ExpressionStatement", "src": "5132:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1385, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5214:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5218:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5214:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1387, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5226:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1388, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5238:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5244:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "5238:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1390, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "5252:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5269:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "5252:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5273:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "5252:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5252:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1384, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "5194:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5194:88:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1395, "nodeType": "EmitStatement", "src": "5189:93:9"}]}, "functionSelector": "8932cee0", "id": 1397, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4307:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1291, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4354:8:9"}, "parameters": {"id": 1290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1289, "mutability": "mutable", "name": "operatorId", "nameLocation": "4333:10:9", "nodeType": "VariableDeclaration", "scope": 1397, "src": "4326:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1288, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4326:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4325:19:9"}, "returnParameters": {"id": 1292, "nodeType": "ParameterList", "parameters": [], "src": "4363:0:9"}, "scope": 1670, "src": "4298:991:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1967], "body": {"id": 1441, "nodeType": "Block", "src": "5367:333:9", "statements": [{"assignments": [1405], "declarations": [{"constant": false, "id": 1405, "mutability": "mutable", "name": "s", "nameLocation": "5397:1:9", "nodeType": "VariableDeclaration", "scope": 1441, "src": "5377:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1404, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1403, "name": "StorageData", "nameLocations": ["5377:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "5377:11:9"}, "referencedDeclaration": 2490, "src": "5377:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1409, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1406, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5401:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5412:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5401:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5401:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5377:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1410, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5428:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1413, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5430:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5428:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1414, "indexExpression": {"id": 1412, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5440:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5428:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1415, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5452:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "5428:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5428:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1417, "nodeType": "ExpressionStatement", "src": "5428:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1418, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5479:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5481:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5479:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1421, "indexExpression": {"id": 1420, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5507:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5479:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5519:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "5479:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1423, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5540:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5479:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1428, "nodeType": "IfStatement", "src": "5475:90:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1425, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1735, "src": "5550:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5550:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1427, "nodeType": "RevertStatement", "src": "5543:22:9"}}, {"expression": {"id": 1433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5576:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1429, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5583:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1430, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5585:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5583:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1432, "indexExpression": {"id": 1431, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5611:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5583:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1434, "nodeType": "ExpressionStatement", "src": "5576:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5670:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5674:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5670:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1438, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5682:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1435, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2028, "src": "5638:31:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5638:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1440, "nodeType": "EmitStatement", "src": "5633:60:9"}]}, "functionSelector": "23d68a6d", "id": 1442, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5304:25:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1401, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5358:8:9"}, "parameters": {"id": 1400, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1399, "mutability": "mutable", "name": "operatorId", "nameLocation": "5337:10:9", "nodeType": "VariableDeclaration", "scope": 1442, "src": "5330:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1398, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5330:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5329:19:9"}, "returnParameters": {"id": 1402, "nodeType": "ParameterList", "parameters": [], "src": "5367:0:9"}, "scope": 1670, "src": "5295:405:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1975], "body": {"id": 1518, "nodeType": "Block", "src": "5783:520:9", "statements": [{"assignments": [1452], "declarations": [{"constant": false, "id": 1452, "mutability": "mutable", "name": "s", "nameLocation": "5813:1:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5793:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1451, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1450, "name": "StorageData", "nameLocations": ["5793:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "5793:11:9"}, "referencedDeclaration": 2490, "src": "5793:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1456, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1453, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5817:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5828:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5817:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5817:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5793:41:9"}, {"assignments": [1459], "declarations": [{"constant": false, "id": 1459, "mutability": "mutable", "name": "operator", "nameLocation": "5860:8:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5844:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1458, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1457, "name": "Operator", "nameLocations": ["5844:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5844:8:9"}, "referencedDeclaration": 1699, "src": "5844:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1464, "initialValue": {"baseExpression": {"expression": {"id": 1460, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "5871:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5873:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5871:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1463, "indexExpression": {"id": 1462, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "5883:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5871:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5844:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1465, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "5904:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1467, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5913:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "5904:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5904:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1469, "nodeType": "ExpressionStatement", "src": "5904:21:9"}, {"assignments": [1471], "declarations": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "5943:12:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5936:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1470, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5936:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1475, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1472, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "5958:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5962:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "5958:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5958:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "5936:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1476, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "5984:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1477, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6000:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6009:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "6000:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5984:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1483, "nodeType": "IfStatement", "src": "5980:64:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1480, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1773, "src": "6021:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6021:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1482, "nodeType": "RevertStatement", "src": "6014:30:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1484, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1486, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6064:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "6055:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6055:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1488, "nodeType": "ExpressionStatement", "src": "6055:25:9"}, {"expression": {"id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1489, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6090:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1491, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6099:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "6090:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1492, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "6105:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6090:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1494, "nodeType": "ExpressionStatement", "src": "6090:27:9"}, {"expression": {"id": 1501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1495, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "6127:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6129:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "6127:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1499, "indexExpression": {"id": 1497, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6139:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6127:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1500, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6153:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6127:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1502, "nodeType": "ExpressionStatement", "src": "6127:34:9"}, {"expression": {"id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6172:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1503, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "6179:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1504, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6181:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "6179:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1506, "indexExpression": {"id": 1505, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6207:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6179:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1508, "nodeType": "ExpressionStatement", "src": "6172:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1510, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6254:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6258:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "6254:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1512, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6266:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1513, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6278:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6284:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "6278:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1515, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "6292:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1509, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "6234:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6234:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1517, "nodeType": "EmitStatement", "src": "6229:67:9"}]}, "functionSelector": "190d82e4", "id": 1519, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5715:17:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1448, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5774:8:9"}, "parameters": {"id": 1447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1444, "mutability": "mutable", "name": "operatorId", "nameLocation": "5740:10:9", "nodeType": "VariableDeclaration", "scope": 1519, "src": "5733:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1443, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5733:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1446, "mutability": "mutable", "name": "fee", "nameLocation": "5760:3:9", "nodeType": "VariableDeclaration", "scope": 1519, "src": "5752:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5752:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5732:32:9"}, "returnParameters": {"id": 1449, "nodeType": "ParameterList", "parameters": [], "src": "5783:0:9"}, "scope": 1670, "src": "5706:597:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1983], "body": {"id": 1532, "nodeType": "Block", "src": "6396:62:9", "statements": [{"expression": {"arguments": [{"id": 1528, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6432:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1529, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6444:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1527, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "6406:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6406:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1531, "nodeType": "ExpressionStatement", "src": "6406:45:9"}]}, "functionSelector": "35f63767", "id": 1533, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6318:24:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1525, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6387:8:9"}, "parameters": {"id": 1524, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1521, "mutability": "mutable", "name": "operatorId", "nameLocation": "6350:10:9", "nodeType": "VariableDeclaration", "scope": 1533, "src": "6343:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1520, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6343:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1523, "mutability": "mutable", "name": "amount", "nameLocation": "6370:6:9", "nodeType": "VariableDeclaration", "scope": 1533, "src": "6362:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6362:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6342:35:9"}, "returnParameters": {"id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "6396:0:9"}, "scope": 1670, "src": "6309:149:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1989], "body": {"id": 1544, "nodeType": "Block", "src": "6538:57:9", "statements": [{"expression": {"arguments": [{"id": 1540, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1535, "src": "6574:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6586:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1539, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "6548:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6548:40:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1543, "nodeType": "ExpressionStatement", "src": "6548:40:9"}]}, "functionSelector": "4bc93b64", "id": 1545, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6473:27:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1537, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6529:8:9"}, "parameters": {"id": 1536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1535, "mutability": "mutable", "name": "operatorId", "nameLocation": "6508:10:9", "nodeType": "VariableDeclaration", "scope": 1545, "src": "6501:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1534, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6501:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6500:19:9"}, "returnParameters": {"id": 1538, "nodeType": "ParameterList", "parameters": [], "src": "6538:0:9"}, "scope": 1670, "src": "6464:131:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1645, "nodeType": "Block", "src": "6704:753:9", "statements": [{"assignments": [1554], "declarations": [{"constant": false, "id": 1554, "mutability": "mutable", "name": "s", "nameLocation": "6734:1:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6714:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1553, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1552, "name": "StorageData", "nameLocations": ["6714:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "6714:11:9"}, "referencedDeclaration": 2490, "src": "6714:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1558, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1555, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "6738:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6749:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "6738:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6738:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6714:41:9"}, {"assignments": [1561], "declarations": [{"constant": false, "id": 1561, "mutability": "mutable", "name": "operator", "nameLocation": "6781:8:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6765:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1560, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1559, "name": "Operator", "nameLocations": ["6765:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "6765:8:9"}, "referencedDeclaration": 1699, "src": "6765:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1566, "initialValue": {"baseExpression": {"expression": {"id": 1562, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "6792:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6794:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "6792:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1565, "indexExpression": {"id": 1564, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "6804:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6792:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6765:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1567, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6825:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6834:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "6825:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6825:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1571, "nodeType": "ExpressionStatement", "src": "6825:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1572, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6857:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1574, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6866:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "6857:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6857:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1576, "nodeType": "ExpressionStatement", "src": "6857:25:9"}, {"assignments": [1578], "declarations": [{"constant": false, "id": 1578, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "6900:15:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6893:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1577, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6893:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1579, "nodeType": "VariableDeclarationStatement", "src": "6893:22:9"}, {"assignments": [1581], "declarations": [{"constant": false, "id": 1581, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6932:12:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6925:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1580, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6925:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1585, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "6947:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6954:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "6947:13:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6947:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6925:37:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1586, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "6977:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1587, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6987:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6977:11:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1589, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6992:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1590, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7001:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "6992:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1591, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7010:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "6992:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7020:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6992:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6977:44:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1602, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "7101:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7110:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7101:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1605, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7115:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7124:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7115:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1607, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7133:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7115:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1608, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7144:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7115:41:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7101:55:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1619, "nodeType": "Block", "src": "7219:53:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1616, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1741, "src": "7240:19:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7240:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "RevertStatement", "src": "7233:28:9"}]}, "id": 1620, "nodeType": "IfStatement", "src": "7097:175:9", "trueBody": {"id": 1615, "nodeType": "Block", "src": "7158:55:9", "statements": [{"expression": {"id": 1613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1611, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7172:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1612, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7190:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7172:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1614, "nodeType": "ExpressionStatement", "src": "7172:30:9"}]}}, "id": 1621, "nodeType": "IfStatement", "src": "6973:299:9", "trueBody": {"id": 1601, "nodeType": "Block", "src": "7023:68:9", "statements": [{"expression": {"id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1595, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7037:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1596, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1597, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7064:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7055:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1598, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7073:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7055:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7037:43:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1600, "nodeType": "ExpressionStatement", "src": "7037:43:9"}]}}, {"expression": {"id": 1628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1622, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7282:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7291:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7282:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1626, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7300:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7282:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1627, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7311:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7282:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1629, "nodeType": "ExpressionStatement", "src": "7282:44:9"}, {"expression": {"id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1630, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "7337:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1633, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7339:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "7337:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1634, "indexExpression": {"id": 1632, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "7349:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7337:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1635, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7363:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7337:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1637, "nodeType": "ExpressionStatement", "src": "7337:34:9"}, {"expression": {"arguments": [{"id": 1639, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "7413:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1640, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7425:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7441:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "7425:22:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7425:24:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1638, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1669, "src": "7382:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7382:68:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1644, "nodeType": "ExpressionStatement", "src": "7382:68:9"}]}, "id": 1646, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6635:25:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1547, "mutability": "mutable", "name": "operatorId", "nameLocation": "6668:10:9", "nodeType": "VariableDeclaration", "scope": 1646, "src": "6661:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1546, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6661:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1549, "mutability": "mutable", "name": "amount", "nameLocation": "6688:6:9", "nodeType": "VariableDeclaration", "scope": 1646, "src": "6680:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6680:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6660:35:9"}, "returnParameters": {"id": 1551, "nodeType": "ParameterList", "parameters": [], "src": "6704:0:9"}, "scope": 1670, "src": "6626:831:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1668, "nodeType": "Block", "src": "7546:124:9", "statements": [{"expression": {"arguments": [{"expression": {"id": 1656, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7580:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7584:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7580:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1658, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "7592:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1653, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2185, "src": "7556:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2185_$", "typeString": "type(library CoreLib)"}}, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7564:15:9", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2096, "src": "7556:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7556:43:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1660, "nodeType": "ExpressionStatement", "src": "7556:43:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1662, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7632:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7636:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7632:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1664, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1648, "src": "7644:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1665, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "7656:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1661, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "7614:17:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7614:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1667, "nodeType": "EmitStatement", "src": "7609:54:9"}]}, "id": 1669, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7472:30:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1648, "mutability": "mutable", "name": "operatorId", "nameLocation": "7510:10:9", "nodeType": "VariableDeclaration", "scope": 1669, "src": "7503:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1647, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7503:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1650, "mutability": "mutable", "name": "amount", "nameLocation": "7530:6:9", "nodeType": "VariableDeclaration", "scope": 1669, "src": "7522:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7522:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7502:35:9"}, "returnParameters": {"id": 1652, "nodeType": "ParameterList", "parameters": [], "src": "7546:0:9"}, "scope": 1670, "src": "7463:207:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1671, "src": "358:7314:9", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:7628:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2665]}, "id": 2666, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2589, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2590, "nodeType": "StructuredDocumentation", "src": "131:70:10", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2665, "linearizedBaseContracts": [2665], "name": "IERC20", "nameLocation": "212:6:10", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2591, "nodeType": "StructuredDocumentation", "src": "225:158:10", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2599, "name": "Transfer", "nameLocation": "394:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2593, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "403:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2592, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2595, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "425:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2594, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2597, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "445:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:10"}, "src": "388:72:10"}, {"anonymous": false, "documentation": {"id": 2600, "nodeType": "StructuredDocumentation", "src": "466:148:10", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2608, "name": "Approval", "nameLocation": "625:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2607, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2602, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "634:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2601, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2604, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "657:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2603, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2606, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "682:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2605, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:10"}, "src": "619:78:10"}, {"documentation": {"id": 2609, "nodeType": "StructuredDocumentation", "src": "703:66:10", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2614, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2610, "nodeType": "ParameterList", "parameters": [], "src": "794:2:10"}, "returnParameters": {"id": 2613, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2612, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2614, "src": "820:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:10"}, "scope": 2665, "src": "774:55:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2615, "nodeType": "StructuredDocumentation", "src": "835:72:10", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2622, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2618, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2617, "mutability": "mutable", "name": "account", "nameLocation": "939:7:10", "nodeType": "VariableDeclaration", "scope": 2622, "src": "931:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2616, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:10"}, "returnParameters": {"id": 2621, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2620, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2622, "src": "971:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2619, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:10"}, "scope": 2665, "src": "912:68:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2623, "nodeType": "StructuredDocumentation", "src": "986:202:10", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2632, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2628, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2625, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:10", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1211:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2624, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2627, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:10", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1223:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:10"}, "returnParameters": {"id": 2631, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2630, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1257:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2629, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:10"}, "scope": 2665, "src": "1193:70:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2633, "nodeType": "StructuredDocumentation", "src": "1269:264:10", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2642, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2635, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:10", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1557:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2634, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2637, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:10", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1572:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2636, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:10"}, "returnParameters": {"id": 2641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2640, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1612:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2639, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:10"}, "scope": 2665, "src": "1538:83:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2643, "nodeType": "StructuredDocumentation", "src": "1627:642:10", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2652, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2648, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2645, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:10", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2291:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2644, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2647, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:10", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2308:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:10"}, "returnParameters": {"id": 2651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2650, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2342:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2649, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:10"}, "scope": 2665, "src": "2274:74:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2653, "nodeType": "StructuredDocumentation", "src": "2354:287:10", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2664, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2660, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2655, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2668:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2654, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2657, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2682:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2656, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2659, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2694:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2658, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:10"}, "returnParameters": {"id": 2663, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2662, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2728:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2661, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:10"}, "scope": 2665, "src": "2646:88:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2666, "src": "202:2534:10", "usedErrors": []}], "src": "106:2631:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2587]}, "id": 2588, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2515, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2516, "nodeType": "StructuredDocumentation", "src": "112:311:11", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2587, "linearizedBaseContracts": [2587], "name": "Counters", "nameLocation": "432:8:11", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2519, "members": [{"constant": false, "id": 2518, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:11", "nodeType": "VariableDeclaration", "scope": 2519, "src": "786:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2517, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:11", "nodeType": "StructDefinition", "scope": 2587, "src": "447:374:11", "visibility": "public"}, {"body": {"id": 2530, "nodeType": "Block", "src": "901:38:11", "statements": [{"expression": {"expression": {"id": 2527, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2522, "src": "918:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2528, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "918:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2526, "id": 2529, "nodeType": "Return", "src": "911:21:11"}]}, "id": 2531, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2522, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:11", "nodeType": "VariableDeclaration", "scope": 2531, "src": "844:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2520, "name": "Counter", "nameLocations": ["844:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "844:7:11"}, "referencedDeclaration": 2519, "src": "844:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:11"}, "returnParameters": {"id": 2526, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2525, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2531, "src": "892:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2524, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:11"}, "scope": 2587, "src": "827:112:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2544, "nodeType": "Block", "src": "998:70:11", "statements": [{"id": 2543, "nodeType": "UncheckedBlock", "src": "1008:54:11", "statements": [{"expression": {"id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2537, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2534, "src": "1032:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2539, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1032:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2542, "nodeType": "ExpressionStatement", "src": "1032:19:11"}]}]}, "id": 2545, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2534, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:11", "nodeType": "VariableDeclaration", "scope": 2545, "src": "964:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2533, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2532, "name": "Counter", "nameLocations": ["964:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "964:7:11"}, "referencedDeclaration": 2519, "src": "964:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:11"}, "returnParameters": {"id": 2536, "nodeType": "ParameterList", "parameters": [], "src": "998:0:11"}, "scope": 2587, "src": "945:123:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2572, "nodeType": "Block", "src": "1127:176:11", "statements": [{"assignments": [2552], "declarations": [{"constant": false, "id": 2552, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:11", "nodeType": "VariableDeclaration", "scope": 2572, "src": "1137:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2551, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2555, "initialValue": {"expression": {"id": 2553, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2548, "src": "1153:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1153:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:11"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2557, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1185:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2560, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2556, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2562, "nodeType": "ExpressionStatement", "src": "1177:49:11"}, {"id": 2571, "nodeType": "UncheckedBlock", "src": "1236:61:11", "statements": [{"expression": {"id": 2569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2563, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2548, "src": "1260:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2565, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1260:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2566, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1277:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2570, "nodeType": "ExpressionStatement", "src": "1260:26:11"}]}]}, "id": 2573, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2549, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2548, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:11", "nodeType": "VariableDeclaration", "scope": 2573, "src": "1093:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2546, "name": "Counter", "nameLocations": ["1093:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1093:7:11"}, "referencedDeclaration": 2519, "src": "1093:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:11"}, "returnParameters": {"id": 2550, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:11"}, "scope": 2587, "src": "1074:229:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2585, "nodeType": "Block", "src": "1358:35:11", "statements": [{"expression": {"id": 2583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2579, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2576, "src": "1368:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2581, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1368:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2584, "nodeType": "ExpressionStatement", "src": "1368:18:11"}]}, "id": 2586, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2576, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:11", "nodeType": "VariableDeclaration", "scope": 2586, "src": "1324:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2575, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2574, "name": "Counter", "nameLocations": ["1324:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1324:7:11"}, "referencedDeclaration": 2519, "src": "1324:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:11"}, "returnParameters": {"id": 2578, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:11"}, "scope": 2587, "src": "1309:84:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2588, "src": "424:971:11", "usedErrors": []}], "src": "87:1309:11"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol:Operators": {"srcmap": "148:5672:0:-:0;;;713:526;;;;;;;;;;342:11;737:13;;:36;;;;;;;;;;;;;;;;;;783:26;812:25;:23;;;;;:25;;:::i;:::-;783:54;;883:6;847:2;:33;;;:42;;;;;;;;;;;;;;;;;;933:37;941:19;933:35;;;;;:37;;:::i;:::-;899:2;:31;;;:71;;;;;;;;;;;;;;;;;;1012:3;980:2;:29;;;:35;;;;;;;;;;;;;;;;;;1055:6;1025:2;:27;;;:36;;;;;;;;;;;;;;;;;;1101:6;1071:2;:27;;;:36;;;;;;;;;;;;;;;;;;1145:4;1117:2;:25;;;:32;;;;;;;;;;;;;;;;;;406:18;1159:2;:17;;;:40;;;;;;;;;;;;;;;;;;1210:22;1230:1;1210:2;:19;;;;;;:22;;;;:::i;:::-;727:512;148:5672;;1672:184:7;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;552:272:5:-;638:21;656:2;638:17;;;:21;;:::i;:::-;691:26;714:2;691:22;;;:26;;:::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;;;;;:12;;:::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;;;:24;;:::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;1111:215::-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:77:12:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:410::-;516:7;539:20;557:1;539:20;:::i;:::-;534:25;;573:20;591:1;573:20;:::i;:::-;568:25;;628:1;625;621:9;650:30;668:11;650:30;:::i;:::-;639:41;;829:1;820:7;816:15;813:1;810:22;790:1;783:9;763:83;740:139;;859:18;;:::i;:::-;740:139;524:362;476:410;;;;:::o;892:169::-;976:11;1010:6;1005:3;998:19;1050:4;1045:3;1041:14;1026:29;;892:169;;;;:::o;1067:168::-;1207:20;1203:1;1195:6;1191:14;1184:44;1067:168;:::o;1241:366::-;1383:3;1404:67;1468:2;1463:3;1404:67;:::i;:::-;1397:74;;1480:93;1569:3;1480:93;:::i;:::-;1598:2;1593:3;1589:12;1582:19;;1241:366;;;:::o;1613:419::-;1779:4;1817:2;1806:9;1802:18;1794:26;;1866:9;1860:4;1856:20;1852:1;1841:9;1837:17;1830:47;1894:131;2020:4;1894:131;:::i;:::-;1886:139;;1613:419;;;:::o;2038:180::-;2086:77;2083:1;2076:88;2183:4;2180:1;2173:15;2207:4;2204:1;2197:15;2224:185;2264:1;2281:20;2299:1;2281:20;:::i;:::-;2276:25;;2315:20;2333:1;2315:20;:::i;:::-;2310:25;;2354:1;2344:35;;2359:18;;:::i;:::-;2344:35;2401:1;2398;2394:9;2389:14;;2224:185;;;;:::o;2415:176::-;2447:1;2464:20;2482:1;2464:20;:::i;:::-;2459:25;;2498:20;2516:1;2498:20;:::i;:::-;2493:25;;2537:1;2527:35;;2542:18;;:::i;:::-;2527:35;2583:1;2580;2576:9;2571:14;;2415:176;;;;:::o;2597:172::-;2737:24;2733:1;2725:6;2721:14;2714:48;2597:172;:::o;2775:366::-;2917:3;2938:67;3002:2;2997:3;2938:67;:::i;:::-;2931:74;;3014:93;3103:3;3014:93;:::i;:::-;3132:2;3127:3;3123:12;3116:19;;2775:366;;;:::o;3147:419::-;3313:4;3351:2;3340:9;3336:18;3328:26;;3400:9;3394:4;3390:20;3386:1;3375:9;3371:17;3364:47;3428:131;3554:4;3428:131;:::i;:::-;3420:139;;3147:419;;;:::o;3572:101::-;3608:7;3648:18;3641:5;3637:30;3626:41;;3572:101;;;:::o;3679:275::-;3718:7;3741:19;3758:1;3741:19;:::i;:::-;3736:24;;3774:19;3791:1;3774:19;:::i;:::-;3769:24;;3828:1;3825;3821:9;3850:29;3867:11;3850:29;:::i;:::-;3839:40;;3911:11;3902:7;3899:24;3889:58;;3927:18;;:::i;:::-;3889:58;3726:228;3679:275;;;;:::o;3960:205::-;3999:3;4018:19;4035:1;4018:19;:::i;:::-;4013:24;;4051:19;4068:1;4051:19;:::i;:::-;4046:24;;4093:1;4090;4086:9;4079:16;;4116:18;4111:3;4108:27;4105:53;;;4138:18;;:::i;:::-;4105:53;3960:205;;;;:::o;4171:208::-;4210:4;4230:19;4247:1;4230:19;:::i;:::-;4225:24;;4263:19;4280:1;4263:19;:::i;:::-;4258:24;;4306:1;4303;4299:9;4291:17;;4330:18;4324:4;4321:28;4318:54;;;4352:18;;:::i;:::-;4318:54;4171:208;;;;:::o;148:5672:0:-;;;;;;;", "srcmap-runtime": "148:5672:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3365:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5706:597:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4293:348:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5295:405:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2671:474:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1782:708:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5440:378:0;;;:::i;:::-;;6309:149:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4072:162:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3896:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6464:131:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3151:208:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4298:991:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4647:506:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2988:1304:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1344:153:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:486:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1245:93:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5159:275;;;:::i;:::-;;485:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:998:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3365:525:0;3469:5;:12;;;;3449:10;:33;;;;:::i;:::-;3436:46;;3493:25;3521:17;:15;:17::i;:::-;:27;;:39;3549:10;3521:39;;;;;;;;;;;;;;;3493:67;;3605:1;3578:8;:17;;:23;;;;;;;;;;;;:28;;;3570:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3646:10;3659:8;:12;;;;;;;;;;;;3646:25;;3682:20;473:6;3732:25;:23;:25::i;:::-;:48;;;;;;;;;;;;473:6;3713:67;;;;:::i;:::-;3706:3;:75;;;;:::i;:::-;3705:108;;;;:::i;:::-;3682:131;;3824:4;:23;;;3848:10;3860:22;:13;:20;;;:22::i;:::-;3824:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3426:464;;;3365:525;:::o;5706:597:9:-;5793:21;5817:17;:15;:17::i;:::-;5793:41;;5844:24;5871:1;:11;;:23;5883:10;5871:23;;;;;;;;;;;;;;;5844:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:21;:8;:19;:21::i;:::-;5936:19;5958:12;:3;:10;:12::i;:::-;5936:34;;6000:8;:12;;;5984:28;;:12;:28;;;5980:64;;6021:23;;;;;;;;;;;;;;5980:64;6055:25;:8;:23;:25::i;:::-;6105:12;6090:8;:12;;:27;;;;;;;;;;;6153:8;6127:1;:11;;:23;6139:10;6127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6179:1;:27;;:39;6207:10;6179:39;;;;;;;;;;;;;;;;6172:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:10;6234:62;;6254:10;6234:62;;;6278:12;6292:3;6234:62;;;;;;;:::i;:::-;;;;;;;;5783:520;;;5706:597;;:::o;4293:348:0:-;4407:5;:12;;;;4387:10;:33;;;;:::i;:::-;4374:46;;4431:24;4458:17;:15;:17::i;:::-;:27;;:39;4486:10;4458:39;;;;;;;;;;;;;;;4431:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4540:1;4513:8;:17;;;:23;;;:28;;;4512:54;;;;;4546:8;:20;;;4512:54;4508:126;;;4585:49;4601:10;4613:8;:20;;;4585:49;;;;;;;:::i;:::-;;;;;;;;4508:126;4364:277;4293:348;:::o;5295:405:9:-;5377:21;5401:17;:15;:17::i;:::-;5377:41;;5428:36;:1;:11;;:23;5440:10;5428:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5540:1;5479;:27;;:39;5507:10;5479:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5475:90;;5550:15;;;;;;;;;;;;;;5475:90;5583:1;:27;;:39;5611:10;5583:39;;;;;;;;;;;;;;;;5576:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5682:10;5638:55;;5670:10;5638:55;;;;;;;;;;;;5367:333;5295:405;:::o;2671:474:0:-;2720:6;2738:12;2753:13;;;;;;;;;;;2738:28;;;;2776:12;2791:25;:23;:25::i;:::-;:40;;;;;;;;;;;;2776:55;;;;2842:22;2867:20;:18;:20::i;:::-;2842:45;;2897:11;2911:24;2924:4;2930;2911:12;:24::i;:::-;2897:38;;2950:4;:21;;;2972:9;2983:3;2950:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2946:193;;3122:5;3115:13;;;;:::i;:::-;;2946:193;;;3030:5;3041:10;3030:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:10;3066:17;;;;;;;;;2946:193;2728:417;;;;2671:474;;:::o;1782:708:9:-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2257:8;2231:1;:11;;:23;2243:10;2231:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:1;:20;;:32;2304:10;2283:32;;;;;;;;;;;;;;;;2276:39;;;;;;;;;;;2347:1;2330:14;:18;;;2326:116;;;2364:67;2395:10;2407:23;:14;:21;;;:23::i;:::-;2364:30;:67::i;:::-;2326:116;2472:10;2456:27;;;;;;;;;;;;1843:647;;;1782:708;:::o;5440:378:0:-;5502:25;5530;:23;:25::i;:::-;5502:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5565:15;5595:9;5590:179;5610:5;:12;;;;5606:1;:16;5590:179;;;5643:24;5670:17;:15;:17::i;:::-;:27;;:37;5698:5;5704:1;5698:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:37;;;;;;;;;;;;;;;5643:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5733:8;:17;;;:25;;;5721:37;;;;;:::i;:::-;;;5629:140;5624:3;;;;;:::i;:::-;;;;5590:179;;;;5802:8;5785:25;;:2;:13;;;:25;;;5778:33;;;;:::i;:::-;;5492:326;;5440:378::o;6309:149:9:-;6406:45;6432:10;6444:6;6406:25;:45::i;:::-;6309:149;;:::o;4072:162:0:-;4172:5;:12;;;;4152:10;:33;;;;:::i;:::-;4139:46;;4196:4;:19;;;4216:10;4196:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4072:162;:::o;3896:170::-;4000:5;:12;;;;3980:10;:33;;;;:::i;:::-;3967:46;;4024:4;:23;;;4048:10;4024:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:170;:::o;6464:131:9:-;6548:40;6574:10;6586:1;6548:25;:40::i;:::-;6464:131;:::o;3151:208:0:-;3278:5;:12;;;;3258:10;:33;;;;:::i;:::-;3245:46;;3302:4;:25;;;3328:10;3340:11;3302:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:208;;:::o;4298:991:9:-;4373:21;4397:17;:15;:17::i;:::-;4373:41;;4424:24;4451:1;:11;;:23;4463:10;4451:23;;;;;;;;;;;;;;;4424:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:21;:8;:19;:21::i;:::-;4516:48;4567:1;:27;;:39;4595:10;4567:39;;;;;;;;;;;;;;;4516:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:1;4621:16;:34;;;:39;;;4617:67;;4669:15;;;;;;;;;;;;;;4617:67;4730:16;:34;;;4712:52;;:15;:52;:106;;;;4786:16;:32;;;4768:50;;:15;:50;4712:106;4695:194;;;4850:28;;;;;;;;;;;;;;4695:194;4935:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4903:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4899:97;;;4984:12;;;;;;;;;;;;;;4899:97;5007:25;:8;:23;:25::i;:::-;5057:16;:20;;;5042:8;:12;;:35;;;;;;;;;;;5113:8;5087:1;:11;;:23;5099:10;5087:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:1;:27;;:39;5167:10;5139:39;;;;;;;;;;;;;;;;5132:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5226:10;5194:88;;5214:10;5194:88;;;5238:12;5252:29;:16;:20;;;:27;;;:29::i;:::-;5194:88;;;;;;;:::i;:::-;;;;;;;;4363:926;;;4298:991;:::o;4647:506:0:-;4760:5;:12;;;;4740:10;:33;;;;:::i;:::-;4727:46;;4784:24;4811:17;:15;:17::i;:::-;:27;;:39;4839:10;4811:39;;;;;;;;;;;;;;;4784:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4906:1;4879:8;:17;;;:23;;;:28;;;4878:126;;;;;5002:1;4925:17;:15;:17::i;:::-;:43;;:55;4969:10;4925:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;4878:126;4861:286;;;5034:102;5050:10;5062:17;:15;:17::i;:::-;:43;;:55;5106:10;5062:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;5034:102;;;;;;;:::i;:::-;;;;;;;;4861:286;4717:436;4647:506;:::o;2988:1304:9:-;3076:21;3100:17;:15;:17::i;:::-;3076:41;;3127:36;:1;:11;;:23;3139:10;3127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3174:26;3203:25;:23;:25::i;:::-;3174:54;;3250:1;3243:3;:8;;:38;;;;;450:11;3255:26;;:3;:26;3243:38;3239:62;;;3290:11;;;;;;;;;;;;;;3239:62;3321:2;:17;;;;;;;;;;;;3315:23;;:3;:23;3311:48;;;3347:12;;;;;;;;;;;;;;3311:48;3370:18;3391:1;:11;;:23;3403:10;3391:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3370:48;;3428:16;3447:12;:3;:10;:12::i;:::-;3428:31;;3489:9;3474:24;;:11;:24;;;3470:188;;3521:25;;;;;;;;;;;;;;3470:188;3580:1;3567:9;:14;;;;:34;;;;;3600:1;3585:11;:16;;;3567:34;3563:95;;;3624:23;;;;;;;;;;;;;;3563:95;3756:20;510:6;3814:2;:25;;;;;;;;;;;;510:6;3795:44;;;;:::i;:::-;3780:11;:60;;;;:::i;:::-;3779:81;;;;:::i;:::-;3756:104;;3887:13;3875:25;;:9;:25;;;3871:63;;;3909:25;;;;;;;;;;;;;;3871:63;3987:221;;;;;;;;4025:9;3987:221;;;;;;4074:2;:27;;;;;;;;;;;;4055:15;4048:53;;;;:::i;:::-;3987:221;;;;;;4171:2;:27;;;;;;;;;;;;4141:2;:27;;;;;;;;;;;;4122:15;4115:53;;;;:::i;:::-;:83;;;;:::i;:::-;3987:221;;;;;3945:1;:27;;:39;3973:10;3945:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:10;4223:62;;4243:10;4223:62;;;4267:12;4281:3;4223:62;;;;;;;:::i;:::-;;;;;;;;3066:1226;;;;;2988:1304;;:::o;1344:153:0:-;1410:7;1436:17;:15;:17::i;:::-;:27;;:39;1464:10;1436:39;;;;;;;;;;;;;;;:48;;:54;;;;;;;;;;;;1429:61;;;;1344:153;;;:::o;2496:486:9:-;2585:21;2609:17;:15;:17::i;:::-;2585:41;;2636:36;:1;:11;;:23;2648:10;2636:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2710:1;2687:25;;:11;:25;;;2683:172;;2766:5;2728:1;:11;;:23;2740:10;2728:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2683:172;;;2840:4;2802:1;:11;;:23;2814:10;2802:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2683:172;2900:11;2865:1;:20;;:32;2886:10;2865:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2951:10;2926:49;;;2963:11;2926:49;;;;;;:::i;:::-;;;;;;;;2575:407;2496:486;;:::o;1245:93:0:-;1292:15;1326:5;1319:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1245:93;:::o;5159:275::-;5222:9;5217:211;5237:5;:12;;;;5233:1;:16;5217:211;;;5270:24;5297:17;:15;:17::i;:::-;:27;;:37;5325:5;5331:1;5325:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5297:37;;;;;;;;;;;;;;;5270:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5381:1;5355:8;:23;;;:27;;;:61;;;;5415:1;5386:8;:17;;;:25;;;:30;;;5355:61;5348:69;;;;:::i;:::-;;5256:172;5251:3;;;;;:::i;:::-;;;;5217:211;;;;5159:275::o;485:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;778:998:9:-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;552:272:5:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;1503:368:0:-;1551:12;1575:24;1612:2;1602:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:40;;1630:6;1625:195;1646:2;1642:1;:6;1625:195;;;1791:3;1748:5;;1755:15;1772:10;1784:1;1731:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1721:66;;;;;;1716:72;;:78;;;;:::i;:::-;1686:123;;1669:11;1681:1;1669:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;1650:3;;;;;:::i;:::-;;;;1625:195;;;;1829:5;;:7;;;;;;;;;:::i;:::-;;;;;;1853:11;1846:18;;;1503:368;:::o;1877:788::-;1943:7;1976:3;1970;:9;1962:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2068:1;105:10:8;2043:3:0;:21;;;;:::i;:::-;:26;:56;;;;;2098:1;105:10:8;2073:3:0;:21;;;;:::i;:::-;:26;2043:56;2022:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:18;2235:5;;2242:15;2218:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2208:51;;;;;;2200:60;;2179:81;;2270:5;;:7;;;;;;;;;:::i;:::-;;;;;;2287:18;2315:10;2287:39;;2427:13;2475:1;105:10:8;2450:3:0;2444;:9;;;;:::i;:::-;2443:29;;;;:::i;:::-;:33;;;;:::i;:::-;2427:49;;2486:21;105:10:8;2525:5:0;2511:11;:19;;;;;;:::i;:::-;2510:39;;;;:::i;:::-;2486:63;;2559:11;2579:13;2573:3;:19;;;;:::i;:::-;2559:33;;105:10:8;2615:3:0;:21;;;;:::i;:::-;2608:3;:29;;;;:::i;:::-;2602:35;;2655:3;2648:10;;;;;;;1877:788;;;;:::o;7463:207:9:-;7556:43;7580:10;7592:6;7556:23;:43::i;:::-;7644:10;7614:49;;7632:10;7614:49;;;7656:6;7614:49;;;;;;:::i;:::-;;;;;;;;7463:207;;:::o;6626:831::-;6714:21;6738:17;:15;:17::i;:::-;6714:41;;6765:24;6792:1;:11;;:23;6804:10;6792:23;;;;;;;;;;;;;;;6765:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6825:21;:8;:19;:21::i;:::-;6857:25;:8;:23;:25::i;:::-;6893:22;6925:19;6947:15;:6;:13;:15::i;:::-;6925:37;;6987:1;6977:6;:11;:44;;;;;7020:1;6992:8;:17;;;:25;;;:29;;;6977:44;6973:299;;;7055:8;:17;;;:25;;;7037:43;;6973:299;;;7110:1;7101:6;:10;:55;;;;;7144:12;7115:41;;:8;:17;;;:25;;;:41;;;;7101:55;7097:175;;;7190:12;7172:30;;7097:175;;;7240:21;;;;;;;;;;;;;;7097:175;6973:299;7311:15;7282:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7363:8;7337:1;:11;;:23;7349:10;7337:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:68;7413:10;7425:24;:15;:22;;;:24::i;:::-;7382:30;:68::i;:::-;6704:753;;;;6626:831;;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:327::-;768:6;817:2;805:9;796:7;792:23;788:32;785:119;;;823:79;;:::i;:::-;785:119;943:1;968:52;1012:7;1003:6;992:9;988:22;968:52;:::i;:::-;958:62;;914:116;710:327;;;;:::o;1043:77::-;1080:7;1109:5;1098:16;;1043:77;;;:::o;1126:122::-;1199:24;1217:5;1199:24;:::i;:::-;1192:5;1189:35;1179:63;;1238:1;1235;1228:12;1179:63;1126:122;:::o;1254:139::-;1300:5;1338:6;1325:20;1316:29;;1354:33;1381:5;1354:33;:::i;:::-;1254:139;;;;:::o;1399:472::-;1466:6;1474;1523:2;1511:9;1502:7;1498:23;1494:32;1491:119;;;1529:79;;:::i;:::-;1491:119;1649:1;1674:52;1718:7;1709:6;1698:9;1694:22;1674:52;:::i;:::-;1664:62;;1620:116;1775:2;1801:53;1846:7;1837:6;1826:9;1822:22;1801:53;:::i;:::-;1791:63;;1746:118;1399:472;;;;;:::o;1877:115::-;1962:23;1979:5;1962:23;:::i;:::-;1957:3;1950:36;1877:115;;:::o;1998:218::-;2089:4;2127:2;2116:9;2112:18;2104:26;;2140:69;2206:1;2195:9;2191:17;2182:6;2140:69;:::i;:::-;1998:218;;;;:::o;2222:126::-;2259:7;2299:42;2292:5;2288:54;2277:65;;2222:126;;;:::o;2354:96::-;2391:7;2420:24;2438:5;2420:24;:::i;:::-;2409:35;;2354:96;;;:::o;2456:122::-;2529:24;2547:5;2529:24;:::i;:::-;2522:5;2519:35;2509:63;;2568:1;2565;2558:12;2509:63;2456:122;:::o;2584:139::-;2630:5;2668:6;2655:20;2646:29;;2684:33;2711:5;2684:33;:::i;:::-;2584:139;;;;:::o;2729:472::-;2796:6;2804;2853:2;2841:9;2832:7;2828:23;2824:32;2821:119;;;2859:79;;:::i;:::-;2821:119;2979:1;3004:52;3048:7;3039:6;3028:9;3024:22;3004:52;:::i;:::-;2994:62;;2950:116;3105:2;3131:53;3176:7;3167:6;3156:9;3152:22;3131:53;:::i;:::-;3121:63;;3076:118;2729:472;;;;;:::o;3207:118::-;3294:24;3312:5;3294:24;:::i;:::-;3289:3;3282:37;3207:118;;:::o;3331:222::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:71;3543:1;3532:9;3528:17;3519:6;3475:71;:::i;:::-;3331:222;;;;:::o;3559:113::-;3625:6;3659:5;3653:12;3643:22;;3559:113;;;:::o;3678:183::-;3776:11;3810:6;3805:3;3798:19;3850:4;3845:3;3841:14;3826:29;;3678:183;;;;:::o;3867:131::-;3933:4;3956:3;3948:11;;3986:4;3981:3;3977:14;3969:22;;3867:131;;;:::o;4004:105::-;4079:23;4096:5;4079:23;:::i;:::-;4074:3;4067:36;4004:105;;:::o;4115:175::-;4182:10;4203:44;4243:3;4235:6;4203:44;:::i;:::-;4279:4;4274:3;4270:14;4256:28;;4115:175;;;;:::o;4296:112::-;4365:4;4397;4392:3;4388:14;4380:22;;4296:112;;;:::o;4442:724::-;4559:3;4588:53;4635:5;4588:53;:::i;:::-;4657:85;4735:6;4730:3;4657:85;:::i;:::-;4650:92;;4766:55;4815:5;4766:55;:::i;:::-;4844:7;4875:1;4860:281;4885:6;4882:1;4879:13;4860:281;;;4961:6;4955:13;4988:61;5045:3;5030:13;4988:61;:::i;:::-;4981:68;;5072:59;5124:6;5072:59;:::i;:::-;5062:69;;4920:221;4907:1;4904;4900:9;4895:14;;4860:281;;;4864:14;5157:3;5150:10;;4564:602;;;4442:724;;;;:::o;5172:369::-;5313:4;5351:2;5340:9;5336:18;5328:26;;5400:9;5394:4;5390:20;5386:1;5375:9;5371:17;5364:47;5428:106;5529:4;5520:6;5428:106;:::i;:::-;5420:114;;5172:369;;;;:::o;5547:329::-;5606:6;5655:2;5643:9;5634:7;5630:23;5626:32;5623:119;;;5661:79;;:::i;:::-;5623:119;5781:1;5806:53;5851:7;5842:6;5831:9;5827:22;5806:53;:::i;:::-;5796:63;;5752:117;5547:329;;;;:::o;5882:117::-;5991:1;5988;5981:12;6005:117;6114:1;6111;6104:12;6128:117;6237:1;6234;6227:12;6264:552;6321:8;6331:6;6381:3;6374:4;6366:6;6362:17;6358:27;6348:122;;6389:79;;:::i;:::-;6348:122;6502:6;6489:20;6479:30;;6532:18;6524:6;6521:30;6518:117;;;6554:79;;:::i;:::-;6518:117;6668:4;6660:6;6656:17;6644:29;;6722:3;6714:4;6706:6;6702:17;6692:8;6688:32;6685:41;6682:128;;;6729:79;;:::i;:::-;6682:128;6264:552;;;;;:::o;6822:672::-;6901:6;6909;6917;6966:2;6954:9;6945:7;6941:23;6937:32;6934:119;;;6972:79;;:::i;:::-;6934:119;7120:1;7109:9;7105:17;7092:31;7150:18;7142:6;7139:30;7136:117;;;7172:79;;:::i;:::-;7136:117;7285:64;7341:7;7332:6;7321:9;7317:22;7285:64;:::i;:::-;7267:82;;;;7063:296;7398:2;7424:53;7469:7;7460:6;7449:9;7445:22;7424:53;:::i;:::-;7414:63;;7369:118;6822:672;;;;;:::o;7500:180::-;7548:77;7545:1;7538:88;7645:4;7642:1;7635:15;7669:4;7666:1;7659:15;7686:173;7717:1;7734:19;7751:1;7734:19;:::i;:::-;7729:24;;7767:19;7784:1;7767:19;:::i;:::-;7762:24;;7805:1;7795:35;;7810:18;;:::i;:::-;7795:35;7851:1;7848;7844:9;7839:14;;7686:173;;;;:::o;7865:169::-;7949:11;7983:6;7978:3;7971:19;8023:4;8018:3;8014:14;7999:29;;7865:169;;;;:::o;8040:174::-;8180:26;8176:1;8168:6;8164:14;8157:50;8040:174;:::o;8220:366::-;8362:3;8383:67;8447:2;8442:3;8383:67;:::i;:::-;8376:74;;8459:93;8548:3;8459:93;:::i;:::-;8577:2;8572:3;8568:12;8561:19;;8220:366;;;:::o;8592:419::-;8758:4;8796:2;8785:9;8781:18;8773:26;;8845:9;8839:4;8835:20;8831:1;8820:9;8816:17;8809:47;8873:131;8999:4;8873:131;:::i;:::-;8865:139;;8592:419;;;:::o;9017:180::-;9065:77;9062:1;9055:88;9162:4;9159:1;9152:15;9186:4;9183:1;9176:15;9203:205;9242:3;9261:19;9278:1;9261:19;:::i;:::-;9256:24;;9294:19;9311:1;9294:19;:::i;:::-;9289:24;;9336:1;9333;9329:9;9322:16;;9359:18;9354:3;9351:27;9348:53;;;9381:18;;:::i;:::-;9348:53;9203:205;;;;:::o;9414:275::-;9453:7;9476:19;9493:1;9476:19;:::i;:::-;9471:24;;9509:19;9526:1;9509:19;:::i;:::-;9504:24;;9563:1;9560;9556:9;9585:29;9602:11;9585:29;:::i;:::-;9574:40;;9646:11;9637:7;9634:24;9624:58;;9662:18;;:::i;:::-;9624:58;9461:228;9414:275;;;;:::o;9695:182::-;9734:1;9751:19;9768:1;9751:19;:::i;:::-;9746:24;;9784:19;9801:1;9784:19;:::i;:::-;9779:24;;9822:1;9812:35;;9827:18;;:::i;:::-;9812:35;9869:1;9866;9862:9;9857:14;;9695:182;;;;:::o;9883:328::-;10002:4;10040:2;10029:9;10025:18;10017:26;;10053:69;10119:1;10108:9;10104:17;10095:6;10053:69;:::i;:::-;10132:72;10200:2;10189:9;10185:18;10176:6;10132:72;:::i;:::-;9883:328;;;;;:::o;10217:332::-;10338:4;10376:2;10365:9;10361:18;10353:26;;10389:71;10457:1;10446:9;10442:17;10433:6;10389:71;:::i;:::-;10470:72;10538:2;10527:9;10523:18;10514:6;10470:72;:::i;:::-;10217:332;;;;;:::o;10555:90::-;10589:7;10632:5;10625:13;10618:21;10607:32;;10555:90;;;:::o;10651:109::-;10732:21;10747:5;10732:21;:::i;:::-;10727:3;10720:34;10651:109;;:::o;10766:316::-;10879:4;10917:2;10906:9;10902:18;10894:26;;10930:69;10996:1;10985:9;10981:17;10972:6;10930:69;:::i;:::-;11009:66;11071:2;11060:9;11056:18;11047:6;11009:66;:::i;:::-;10766:316;;;;;:::o;11088:98::-;11139:6;11173:5;11167:12;11157:22;;11088:98;;;:::o;11192:168::-;11275:11;11309:6;11304:3;11297:19;11349:4;11344:3;11340:14;11325:29;;11192:168;;;;:::o;11366:246::-;11447:1;11457:113;11471:6;11468:1;11465:13;11457:113;;;11556:1;11551:3;11547:11;11541:18;11537:1;11532:3;11528:11;11521:39;11493:2;11490:1;11486:10;11481:15;;11457:113;;;11604:1;11595:6;11590:3;11586:16;11579:27;11428:184;11366:246;;;:::o;11618:102::-;11659:6;11710:2;11706:7;11701:2;11694:5;11690:14;11686:28;11676:38;;11618:102;;;:::o;11726:373::-;11812:3;11840:38;11872:5;11840:38;:::i;:::-;11894:70;11957:6;11952:3;11894:70;:::i;:::-;11887:77;;11973:65;12031:6;12026:3;12019:4;12012:5;12008:16;11973:65;:::i;:::-;12063:29;12085:6;12063:29;:::i;:::-;12058:3;12054:39;12047:46;;11816:283;11726:373;;;;:::o;12105:419::-;12244:4;12282:2;12271:9;12267:18;12259:26;;12331:9;12325:4;12321:20;12317:1;12306:9;12302:17;12295:47;12359:76;12430:4;12421:6;12359:76;:::i;:::-;12351:84;;12445:72;12513:2;12502:9;12498:18;12489:6;12445:72;:::i;:::-;12105:419;;;;;:::o;12530:141::-;12586:5;12617:6;12611:13;12602:22;;12633:32;12659:5;12633:32;:::i;:::-;12530:141;;;;:::o;12677:349::-;12746:6;12795:2;12783:9;12774:7;12770:23;12766:32;12763:119;;;12801:79;;:::i;:::-;12763:119;12921:1;12946:63;13001:7;12992:6;12981:9;12977:22;12946:63;:::i;:::-;12936:73;;12892:127;12677:349;;;;:::o;13032:180::-;13080:77;13077:1;13070:88;13177:4;13174:1;13167:15;13201:4;13198:1;13191:15;13218:180;13266:77;13263:1;13256:88;13363:4;13360:1;13353:15;13387:4;13384:1;13377:15;13404:233;13443:3;13466:24;13484:5;13466:24;:::i;:::-;13457:33;;13512:66;13505:5;13502:77;13499:103;;13582:18;;:::i;:::-;13499:103;13629:1;13622:5;13618:13;13611:20;;13404:233;;;:::o;13643:118::-;13730:24;13748:5;13730:24;:::i;:::-;13725:3;13718:37;13643:118;;:::o;13767:328::-;13886:4;13924:2;13913:9;13909:18;13901:26;;13937:69;14003:1;13992:9;13988:17;13979:6;13937:69;:::i;:::-;14016:72;14084:2;14073:9;14069:18;14060:6;14016:72;:::i;:::-;13767:328;;;;;:::o;14101:324::-;14218:4;14256:2;14245:9;14241:18;14233:26;;14269:69;14335:1;14324:9;14320:17;14311:6;14269:69;:::i;:::-;14348:70;14414:2;14403:9;14399:18;14390:6;14348:70;:::i;:::-;14101:324;;;;;:::o;14431:222::-;14524:4;14562:2;14551:9;14547:18;14539:26;;14575:71;14643:1;14632:9;14628:17;14619:6;14575:71;:::i;:::-;14431:222;;;;:::o;14659:147::-;14760:11;14797:3;14782:18;;14659:147;;;;:::o;14812:146::-;14909:6;14904:3;14899;14886:30;14950:1;14941:6;14936:3;14932:16;14925:27;14812:146;;;:::o;14986:327::-;15100:3;15121:88;15202:6;15197:3;15121:88;:::i;:::-;15114:95;;15219:56;15268:6;15263:3;15256:5;15219:56;:::i;:::-;15300:6;15295:3;15291:16;15284:23;;14986:327;;;;;:::o;15319:291::-;15459:3;15481:103;15580:3;15571:6;15563;15481:103;:::i;:::-;15474:110;;15601:3;15594:10;;15319:291;;;;;:::o;15638:314::-;15734:3;15755:70;15818:6;15813:3;15755:70;:::i;:::-;15748:77;;15835:56;15884:6;15879:3;15872:5;15835:56;:::i;:::-;15916:29;15938:6;15916:29;:::i;:::-;15911:3;15907:39;15900:46;;15638:314;;;;;:::o;15958:439::-;16107:4;16145:2;16134:9;16130:18;16122:26;;16194:9;16188:4;16184:20;16180:1;16169:9;16165:17;16158:47;16222:86;16303:4;16294:6;16286;16222:86;:::i;:::-;16214:94;;16318:72;16386:2;16375:9;16371:18;16362:6;16318:72;:::i;:::-;15958:439;;;;;;:::o;16403:194::-;16443:4;16463:20;16481:1;16463:20;:::i;:::-;16458:25;;16497:20;16515:1;16497:20;:::i;:::-;16492:25;;16541:1;16538;16534:9;16526:17;;16565:1;16559:4;16556:11;16553:37;;;16570:18;;:::i;:::-;16553:37;16403:194;;;;:::o;16603:410::-;16643:7;16666:20;16684:1;16666:20;:::i;:::-;16661:25;;16700:20;16718:1;16700:20;:::i;:::-;16695:25;;16755:1;16752;16748:9;16777:30;16795:11;16777:30;:::i;:::-;16766:41;;16956:1;16947:7;16943:15;16940:1;16937:22;16917:1;16910:9;16890:83;16867:139;;16986:18;;:::i;:::-;16867:139;16651:362;16603:410;;;;:::o;17019:168::-;17159:20;17155:1;17147:6;17143:14;17136:44;17019:168;:::o;17193:366::-;17335:3;17356:67;17420:2;17415:3;17356:67;:::i;:::-;17349:74;;17432:93;17521:3;17432:93;:::i;:::-;17550:2;17545:3;17541:12;17534:19;;17193:366;;;:::o;17565:419::-;17731:4;17769:2;17758:9;17754:18;17746:26;;17818:9;17812:4;17808:20;17804:1;17793:9;17789:17;17782:47;17846:131;17972:4;17846:131;:::i;:::-;17838:139;;17565:419;;;:::o;17990:185::-;18030:1;18047:20;18065:1;18047:20;:::i;:::-;18042:25;;18081:20;18099:1;18081:20;:::i;:::-;18076:25;;18120:1;18110:35;;18125:18;;:::i;:::-;18110:35;18167:1;18164;18160:9;18155:14;;17990:185;;;;:::o;18181:93::-;18217:7;18257:10;18250:5;18246:22;18235:33;;18181:93;;;:::o;18280:200::-;18319:4;18339:19;18356:1;18339:19;:::i;:::-;18334:24;;18372:19;18389:1;18372:19;:::i;:::-;18367:24;;18415:1;18412;18408:9;18400:17;;18439:10;18433:4;18430:20;18427:46;;;18453:18;;:::i;:::-;18427:46;18280:200;;;;:::o;18486:180::-;18534:77;18531:1;18524:88;18631:4;18628:1;18621:15;18655:4;18652:1;18645:15;18672:79;18711:7;18740:5;18729:16;;18672:79;;;:::o;18757:157::-;18862:45;18882:24;18900:5;18882:24;:::i;:::-;18862:45;:::i;:::-;18857:3;18850:58;18757:157;;:::o;18920:94::-;18953:8;19001:5;18997:2;18993:14;18972:35;;18920:94;;;:::o;19020:::-;19059:7;19088:20;19102:5;19088:20;:::i;:::-;19077:31;;19020:94;;;:::o;19120:100::-;19159:7;19188:26;19208:5;19188:26;:::i;:::-;19177:37;;19120:100;;;:::o;19226:157::-;19331:45;19351:24;19369:5;19351:24;:::i;:::-;19331:45;:::i;:::-;19326:3;19319:58;19226:157;;:::o;19389:679::-;19585:3;19600:75;19671:3;19662:6;19600:75;:::i;:::-;19700:2;19695:3;19691:12;19684:19;;19713:75;19784:3;19775:6;19713:75;:::i;:::-;19813:2;19808:3;19804:12;19797:19;;19826:75;19897:3;19888:6;19826:75;:::i;:::-;19926:2;19921:3;19917:12;19910:19;;19939:75;20010:3;20001:6;19939:75;:::i;:::-;20039:2;20034:3;20030:12;20023:19;;20059:3;20052:10;;19389:679;;;;;;;:::o;20074:176::-;20106:1;20123:20;20141:1;20123:20;:::i;:::-;20118:25;;20157:20;20175:1;20157:20;:::i;:::-;20152:25;;20196:1;20186:35;;20201:18;;:::i;:::-;20186:35;20242:1;20239;20235:9;20230:14;;20074:176;;;;:::o;20256:178::-;20396:30;20392:1;20384:6;20380:14;20373:54;20256:178;:::o;20440:366::-;20582:3;20603:67;20667:2;20662:3;20603:67;:::i;:::-;20596:74;;20679:93;20768:3;20679:93;:::i;:::-;20797:2;20792:3;20788:12;20781:19;;20440:366;;;:::o;20812:419::-;20978:4;21016:2;21005:9;21001:18;20993:26;;21065:9;21059:4;21055:20;21051:1;21040:9;21036:17;21029:47;21093:131;21219:4;21093:131;:::i;:::-;21085:139;;20812:419;;;:::o;21237:230::-;21377:34;21373:1;21365:6;21361:14;21354:58;21446:13;21441:2;21433:6;21429:15;21422:38;21237:230;:::o;21473:366::-;21615:3;21636:67;21700:2;21695:3;21636:67;:::i;:::-;21629:74;;21712:93;21801:3;21712:93;:::i;:::-;21830:2;21825:3;21821:12;21814:19;;21473:366;;;:::o;21845:419::-;22011:4;22049:2;22038:9;22034:18;22026:26;;22098:9;22092:4;22088:20;22084:1;22073:9;22069:17;22062:47;22126:131;22252:4;22126:131;:::i;:::-;22118:139;;21845:419;;;:::o;22270:397::-;22410:3;22425:75;22496:3;22487:6;22425:75;:::i;:::-;22525:2;22520:3;22516:12;22509:19;;22538:75;22609:3;22600:6;22538:75;:::i;:::-;22638:2;22633:3;22629:12;22622:19;;22658:3;22651:10;;22270:397;;;;;:::o;22673:191::-;22713:3;22732:20;22750:1;22732:20;:::i;:::-;22727:25;;22766:20;22784:1;22766:20;:::i;:::-;22761:25;;22809:1;22806;22802:9;22795:16;;22830:3;22827:1;22824:10;22821:36;;;22837:18;;:::i;:::-;22821:36;22673:191;;;;:::o;22870:208::-;22909:4;22929:19;22946:1;22929:19;:::i;:::-;22924:24;;22962:19;22979:1;22962:19;:::i;:::-;22957:24;;23005:1;23002;22998:9;22990:17;;23029:18;23023:4;23020:28;23017:54;;;23051:18;;:::i;:::-;23017:54;22870:208;;;;:::o;23084:172::-;23224:24;23220:1;23212:6;23208:14;23201:48;23084:172;:::o;23262:366::-;23404:3;23425:67;23489:2;23484:3;23425:67;:::i;:::-;23418:74;;23501:93;23590:3;23501:93;:::i;:::-;23619:2;23614:3;23610:12;23603:19;;23262:366;;;:::o;23634:419::-;23800:4;23838:2;23827:9;23823:18;23815:26;;23887:9;23881:4;23877:20;23873:1;23862:9;23858:17;23851:47;23915:131;24041:4;23915:131;:::i;:::-;23907:139;;23634:419;;;:::o;24059:332::-;24180:4;24218:2;24207:9;24203:18;24195:26;;24231:71;24299:1;24288:9;24284:17;24275:6;24231:71;:::i;:::-;24312:72;24380:2;24369:9;24365:18;24356:6;24312:72;:::i;:::-;24059:332;;;;;:::o;24397:116::-;24467:21;24482:5;24467:21;:::i;:::-;24460:5;24457:32;24447:60;;24503:1;24500;24493:12;24447:60;24397:116;:::o;24519:137::-;24573:5;24604:6;24598:13;24589:22;;24620:30;24644:5;24620:30;:::i;:::-;24519:137;;;;:::o;24662:345::-;24729:6;24778:2;24766:9;24757:7;24753:23;24749:32;24746:119;;;24784:79;;:::i;:::-;24746:119;24904:1;24929:61;24982:7;24973:6;24962:9;24958:22;24929:61;:::i;:::-;24919:71;;24875:125;24662:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_operatorEarningsWithBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorIds\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helper_createOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"opIds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506305f5e100600260006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600062000056620001cf60201b620034661760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620000a4670de0b6b3a76400006200020d60201b620034a21760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555065459a36ff96808160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620001c86000826200029560201b6200351b1790919060201c565b5062000858565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6200020491906200055e565b90508091505090565b6000629896806801000000000000000062000229919062000599565b82106200026d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002649062000645565b60405180910390fd5b6298968062000282836200034860201b60201c565b6200028e919062000696565b9050919050565b620002a682620003a760201b60201c565b620002b7826200040860201b60201c565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506200031a816200020d60201b620034a21760201c565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008062989680836200035c9190620006ce565b146200039f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003969062000756565b60405180910390fd5b819050919050565b620003b8816200048360201b60201c565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436200044b91906200055e565b6200045791906200078c565b8260000160189054906101000a900467ffffffffffffffff166200047c9190620007d2565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643620004e1919062000815565b620004ed91906200078c565b620004f991906200078c565b8260010160009054906101000a900467ffffffffffffffff166200051e9190620007d2565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200056b8262000525565b9150620005788362000525565b92508282039050818111156200059357620005926200052f565b5b92915050565b6000620005a68262000525565b9150620005b38362000525565b9250828202620005c38162000525565b91508282048414831517620005dd57620005dc6200052f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006200062d601283620005e4565b91506200063a82620005f5565b602082019050919050565b6000602082019050818103600083015262000660816200061e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006a38262000525565b9150620006b08362000525565b925082620006c357620006c262000667565b5b828204905092915050565b6000620006db8262000525565b9150620006e88362000525565b925082620006fb57620006fa62000667565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006200073e601683620005e4565b91506200074b8262000706565b602082019050919050565b6000602082019050818103600083015262000771816200072f565b9050919050565b600067ffffffffffffffff82169050919050565b6000620007998262000778565b9150620007a68362000778565b9250828202620007b68162000778565b9150808214620007cb57620007ca6200052f565b5b5092915050565b6000620007df8262000778565b9150620007ec8362000778565b9250828201905067ffffffffffffffff8111156200080f576200080e6200052f565b5b92915050565b6000620008228262000778565b91506200082f8362000778565b9250828203905067ffffffffffffffff8111156200085257620008516200052f565b5b92915050565b614fa380620008686000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80634bc93b64116100b8578063ba2fee511161007c578063ba2fee51146102d0578063c90a7eab14610300578063e1d95a2e1461031c578063e7780e001461033a578063ef3e65f714610344578063ff212c5c1461037457610137565b80634bc93b641461024457806360e7474e146102605780638932cee01461027c5780639d5ceb9114610298578063b317c35f146102b457610137565b80632e168e0e116100ff5780632e168e0e146101ca57806330eab391146101e657806335f63767146101f057806336058dc41461020c57806345a5605a1461022857610137565b80630f5baea81461013c578063190d82e41461015857806322ca0bed1461017457806323d68a6d14610190578063249eaafa146101ac575b600080fd5b610156600480360381019061015191906141e5565b6103a4565b005b610172600480360381019061016d9190614248565b610536565b005b61018e600480360381019061018991906141e5565b6109ca565b005b6101aa60048036038101906101a591906141e5565b610be9565b005b6101b4610eeb565b6040516101c19190614297565b60405180910390f35b6101e460048036038101906101df91906141e5565b611053565b005b6101ee6114cc565b005b61020a60048036038101906102059190614248565b611988565b005b610226600480360381019061022191906141e5565b611996565b005b610242600480360381019061023d91906141e5565b611a17565b005b61025e600480360381019061025991906141e5565b611a98565b005b61027a60048036038101906102759190614310565b611aa6565b005b610296600480360381019061029191906141e5565b611b2a565b005b6102b260048036038101906102ad91906141e5565b612168565b005b6102ce60048036038101906102c99190614248565b61241b565b005b6102ea60048036038101906102e591906141e5565b6129d1565b6040516102f7919061435f565b60405180910390f35b61031a60048036038101906103159190614310565b612a27565b005b610324612d49565b6040516103319190614438565b60405180910390f35b610342612dd5565b005b61035e6004803603810190610359919061445a565b613016565b60405161036b9190614297565b60405180910390f35b61038e600480360381019061038991906144ec565b613054565b60405161039b9190614297565b60405180910390f35b600080549050816103b5919061457b565b905060006103c16135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff160361044b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044290614609565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff1690506000612710610475613466565b60020160089054906101000a900467ffffffffffffffff1661271061049a9190614658565b836104a59190614694565b6104af91906146d1565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104e18467ffffffffffffffff166135ed565b6040518363ffffffff1660e01b81526004016104fe929190614702565b600060405180830381600087803b15801561051857600080fd5b505af115801561052c573d6000803e3d6000fd5b5050505050505050565b60006105406135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506106ea8161360f565b60006106f5846134a2565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610748576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610751826136c3565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43876040516109bb92919061472b565b60405180910390a35050505050565b600080549050816109db919061457b565b905060006109e76135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015610ba2575080606001515b15610be5577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260600151604051610bdc92919061476f565b60405180910390a15b5050565b6000610bf36135b1565b9050610d988160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610e1c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600080600260009054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f1b613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f4961378b565b90506000610f5784846138a2565b90503073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c83836040518363ffffffff1660e01b8152600401610f94929190614828565b6020604051808303816000875af1925050508015610fd057506040513d601f19601f82011682018060405250810190610fcd919061486d565b60015b610fe8576000610fe357610fe261489a565b5b61104b565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050611050565b505050505b90565b600061105d6135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506112078161360f565b611210816136c3565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff16111561148f5761148e846114898367ffffffffffffffff166135ed565b613a2c565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b60006114d6613466565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b60008054905081101561195b5760006117596135b1565b6006016000808481548110611771576117706148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050806080015160400151836119459190614658565b9250508080611953906148f8565b915050611742565b508067ffffffffffffffff168260c0015167ffffffffffffffff16146119845761198361489a565b5b5050565b6119928282613a93565b5050565b600080549050816119a7919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016119e29190614297565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b60008054905081611a28919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611a639190614297565b600060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b5050505050565b611aa3816000613a93565b50565b60008054905082611ab7919061457b565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611af492919061494f565b600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050505050565b6000611b346135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050611cde8161360f565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611df4576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff16421080611e1d5750806040015167ffffffffffffffff1642115b15611e54576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e5c613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16611e95826000015167ffffffffffffffff166135ed565b1115611ecd576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ed6826136c3565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361214c856000015167ffffffffffffffff166135ed565b60405161215a92919061472b565b60405180910390a350505050565b60008054905081612179919061457b565b905060006121856135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015612391575060006123446135b1565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15612417577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826123c06135b1565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1660405161240e929190614978565b60405180910390a15b5050565b60006124256135b1565b90506125ca8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60006125d4613466565b9050600083141580156125f457506305f5e10067ffffffffffffffff1683105b1561262b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115612687576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006126d7856134a2565b90508067ffffffffffffffff168267ffffffffffffffff1603612726576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561274b575060008267ffffffffffffffff16145b15612782576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106127ad9190614658565b846127b89190614694565b6127c291906146d1565b90508067ffffffffffffffff168267ffffffffffffffff161115612812576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426128519190614658565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff164261289d9190614658565b6128a79190614658565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516129c092919061472b565b60405180910390a350505050505050565b60006129db6135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160000160009054906101000a900463ffffffff1663ffffffff169050919050565b6000612a316135b1565b9050612bd68160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c545760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612c9a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612d3c91906149a1565b60405180910390a2505050565b60606000805480602002602001604051908101604052809291908181526020018280548015612dcb57602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411612d865790505b5050505050905090565b60005b600080549050811015613013576000612def6135b1565b6006016000808481548110612e0757612e066148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff161180612ff25750600081608001516040015167ffffffffffffffff16145b612fff57612ffe61489a565b5b50808061300b906148f8565b915050612dd8565b50565b6000818154811061302657600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080821415801561307357506305f5e10067ffffffffffffffff1682105b156130aa576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130b2613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561310d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131176135b1565b90506000858560405161312b9291906149fb565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146131a2576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131ae82600801613ed2565b6131ba82600801613ee8565b92506040518060a00160405280600063ffffffff1681526020016131dd866134a2565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161345593929190614a41565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6134999190614a73565b90508091505090565b600062989680680100000000000000006134bc9190614aa7565b82106134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490614b35565b60405180910390fd5b6298968061350a83613ef6565b6135149190614b55565b9050919050565b61352482613f50565b61352d82613fa9565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550613583816134a2565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6135e49190614a73565b90508091505090565b6000629896808267ffffffffffffffff166136089190614aa7565b9050919050565b600081608001516000015163ffffffff1603613657576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146136c0576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008160200151826080015160000151436136de9190614b96565b63ffffffff166136ee9190614694565b90508082608001516020018181516137069190614658565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816137399190614694565b826080015160400181815161374e9190614658565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156137aa576137a9614bce565b5b6040519080825280601f01601f1916602001820160405280156137dc5781602001600182028036833780820191505090505b50905060005b6030811015613882576101006001544233846040516020016138079493929190614c66565b6040516020818303038152906040528051906020012060001c61382a9190614cb4565b60f81b8282815181106138405761383f6148c9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061387a906148f8565b9150506137e2565b5060016000815480929190613896906148f8565b91905055508091505090565b60008282116138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138dd90614d31565b60405180910390fd5b600062989680846138f79190614cb4565b1480156139125750600062989680836139109190614cb4565b145b613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dc3565b60405180910390fd5b600060015442604051602001613968929190614de3565b6040516020818303038152906040528051906020012060001c905060016000815480929190613996906148f8565b91905055506000819050600060016298968087876139b49190614a73565b6139be9190614b55565b6139c89190614e0f565b9050600062989680828467ffffffffffffffff166139e69190614cb4565b6139f09190614aa7565b905060008188613a009190614e0f565b90506298968081613a119190614cb4565b81613a1c9190614a73565b9050809550505050505092915050565b613a36338261401e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051613a87919061435f565b60405180910390a35050565b6000613a9d6135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050613c478161360f565b613c50816136c3565b600080613c5c856134a2565b9050600085148015613c805750600083608001516040015167ffffffffffffffff16115b15613c95578260800151604001519150613d01565b600085118015613cc157508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b15613cce57809150613d00565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b818360800151604001818151613d179190614e43565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613eca86613ec58467ffffffffffffffff166135ed565b613a2c565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b6000806298968083613f089190614cb4565b14613f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3f90614ecb565b60405180910390fd5b819050919050565b613f5981614101565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613fea9190614a73565b613ff49190614694565b8260000160189054906101000a900467ffffffffffffffff166140179190614658565b9050919050565b6140266135b1565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401614084929190614eeb565b6020604051808303816000875af11580156140a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c79190614f40565b6140fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361415d9190614e43565b6141679190614694565b6141719190614694565b8260010160009054906101000a900467ffffffffffffffff166141949190614658565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6141c2816141a5565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61419b565b5b6000614209848285016141d0565b91505092915050565b6000819050919050565b61422581614212565b811461423057600080fd5b50565b6000813590506142428161421c565b92915050565b6000806040838503121561425f5761425e61419b565b5b600061426d858286016141d0565b925050602061427e85828601614233565b9150509250929050565b614291816141a5565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142dd826142b2565b9050919050565b6142ed816142d2565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b600080604083850312156143275761432661419b565b5b6000614335858286016141d0565b9250506020614346858286016142fb565b9150509250929050565b61435981614212565b82525050565b60006020820190506143746000830184614350565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143af816141a5565b82525050565b60006143c183836143a6565b60208301905092915050565b6000602082019050919050565b60006143e58261437a565b6143ef8185614385565b93506143fa83614396565b8060005b8381101561442b57815161441288826143b5565b975061441d836143cd565b9250506001810190506143fe565b5085935050505092915050565b6000602082019050818103600083015261445281846143da565b905092915050565b6000602082840312156144705761446f61419b565b5b600061447e84828501614233565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126144ac576144ab614487565b5b8235905067ffffffffffffffff8111156144c9576144c861448c565b5b6020830191508360018202830111156144e5576144e4614491565b5b9250929050565b6000806000604084860312156145055761450461419b565b5b600084013567ffffffffffffffff811115614523576145226141a0565b5b61452f86828701614496565b9350935050602061454286828701614233565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614586826141a5565b9150614591836141a5565b9250826145a1576145a061454c565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b60006145f36018836145ac565b91506145fe826145bd565b602082019050919050565b60006020820190508181036000830152614622816145e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614663826141a5565b915061466e836141a5565b9250828201905067ffffffffffffffff81111561468e5761468d614629565b5b92915050565b600061469f826141a5565b91506146aa836141a5565b92508282026146b8816141a5565b91508082146146ca576146c9614629565b5b5092915050565b60006146dc826141a5565b91506146e7836141a5565b9250826146f7576146f661454c565b5b828204905092915050565b60006040820190506147176000830185614288565b6147246020830184614350565b9392505050565b60006040820190506147406000830185614350565b61474d6020830184614350565b9392505050565b60008115159050919050565b61476981614754565b82525050565b60006040820190506147846000830185614288565b6147916020830184614760565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156147d25780820151818401526020810190506147b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006147fa82614798565b61480481856147a3565b93506148148185602086016147b4565b61481d816147de565b840191505092915050565b6000604082019050818103600083015261484281856147ef565b90506148516020830184614350565b9392505050565b600081519050614867816141b9565b92915050565b6000602082840312156148835761488261419b565b5b600061489184828501614858565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490382614212565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361493557614934614629565b5b600182019050919050565b614949816142d2565b82525050565b60006040820190506149646000830185614288565b6149716020830184614940565b9392505050565b600060408201905061498d6000830185614288565b61499a6020830184614288565b9392505050565b60006020820190506149b66000830184614940565b92915050565b600081905092915050565b82818337600083830152505050565b60006149e283856149bc565b93506149ef8385846149c7565b82840190509392505050565b6000614a088284866149d6565b91508190509392505050565b6000614a2083856147a3565b9350614a2d8385846149c7565b614a36836147de565b840190509392505050565b60006040820190508181036000830152614a5c818587614a14565b9050614a6b6020830184614350565b949350505050565b6000614a7e82614212565b9150614a8983614212565b9250828203905081811115614aa157614aa0614629565b5b92915050565b6000614ab282614212565b9150614abd83614212565b9250828202614acb81614212565b91508282048414831517614ae257614ae1614629565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000614b1f6012836145ac565b9150614b2a82614ae9565b602082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b6000614b6082614212565b9150614b6b83614212565b925082614b7b57614b7a61454c565b5b828204905092915050565b600063ffffffff82169050919050565b6000614ba182614b86565b9150614bac83614b86565b9250828203905063ffffffff811115614bc857614bc7614629565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b614c18614c1382614212565b614bfd565b82525050565b60008160601b9050919050565b6000614c3682614c1e565b9050919050565b6000614c4882614c2b565b9050919050565b614c60614c5b826142d2565b614c3d565b82525050565b6000614c728287614c07565b602082019150614c828286614c07565b602082019150614c928285614c4f565b601482019150614ca28284614c07565b60208201915081905095945050505050565b6000614cbf82614212565b9150614cca83614212565b925082614cda57614cd961454c565b5b828206905092915050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b6000614d1b601c836145ac565b9150614d2682614ce5565b602082019050919050565b60006020820190508181036000830152614d4a81614d0e565b9050919050565b7f4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f6660008201527f2031302c3030302c303030000000000000000000000000000000000000000000602082015250565b6000614dad602b836145ac565b9150614db882614d51565b604082019050919050565b60006020820190508181036000830152614ddc81614da0565b9050919050565b6000614def8285614c07565b602082019150614dff8284614c07565b6020820191508190509392505050565b6000614e1a82614212565b9150614e2583614212565b9250828201905080821115614e3d57614e3c614629565b5b92915050565b6000614e4e826141a5565b9150614e59836141a5565b9250828203905067ffffffffffffffff811115614e7957614e78614629565b5b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000614eb56016836145ac565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b6000604082019050614f006000830185614940565b614f0d6020830184614350565b9392505050565b614f1d81614754565b8114614f2857600080fd5b50565b600081519050614f3a81614f14565b92915050565b600060208284031215614f5657614f5561419b565b5b6000614f6484828501614f2b565b9150509291505056fea26469706673582212206b149165daf0833944656a4ab803c88eeb55c63258283b4c8bb3ead1bd8548b664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101375760003560e01c80634bc93b64116100b8578063ba2fee511161007c578063ba2fee51146102d0578063c90a7eab14610300578063e1d95a2e1461031c578063e7780e001461033a578063ef3e65f714610344578063ff212c5c1461037457610137565b80634bc93b641461024457806360e7474e146102605780638932cee01461027c5780639d5ceb9114610298578063b317c35f146102b457610137565b80632e168e0e116100ff5780632e168e0e146101ca57806330eab391146101e657806335f63767146101f057806336058dc41461020c57806345a5605a1461022857610137565b80630f5baea81461013c578063190d82e41461015857806322ca0bed1461017457806323d68a6d14610190578063249eaafa146101ac575b600080fd5b610156600480360381019061015191906141e5565b6103a4565b005b610172600480360381019061016d9190614248565b610536565b005b61018e600480360381019061018991906141e5565b6109ca565b005b6101aa60048036038101906101a591906141e5565b610be9565b005b6101b4610eeb565b6040516101c19190614297565b60405180910390f35b6101e460048036038101906101df91906141e5565b611053565b005b6101ee6114cc565b005b61020a60048036038101906102059190614248565b611988565b005b610226600480360381019061022191906141e5565b611996565b005b610242600480360381019061023d91906141e5565b611a17565b005b61025e600480360381019061025991906141e5565b611a98565b005b61027a60048036038101906102759190614310565b611aa6565b005b610296600480360381019061029191906141e5565b611b2a565b005b6102b260048036038101906102ad91906141e5565b612168565b005b6102ce60048036038101906102c99190614248565b61241b565b005b6102ea60048036038101906102e591906141e5565b6129d1565b6040516102f7919061435f565b60405180910390f35b61031a60048036038101906103159190614310565b612a27565b005b610324612d49565b6040516103319190614438565b60405180910390f35b610342612dd5565b005b61035e6004803603810190610359919061445a565b613016565b60405161036b9190614297565b60405180910390f35b61038e600480360381019061038991906144ec565b613054565b60405161039b9190614297565b60405180910390f35b600080549050816103b5919061457b565b905060006103c16135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff160361044b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044290614609565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff1690506000612710610475613466565b60020160089054906101000a900467ffffffffffffffff1661271061049a9190614658565b836104a59190614694565b6104af91906146d1565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104e18467ffffffffffffffff166135ed565b6040518363ffffffff1660e01b81526004016104fe929190614702565b600060405180830381600087803b15801561051857600080fd5b505af115801561052c573d6000803e3d6000fd5b5050505050505050565b60006105406135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506106ea8161360f565b60006106f5846134a2565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610748576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610751826136c3565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43876040516109bb92919061472b565b60405180910390a35050505050565b600080549050816109db919061457b565b905060006109e76135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015610ba2575080606001515b15610be5577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260600151604051610bdc92919061476f565b60405180910390a15b5050565b6000610bf36135b1565b9050610d988160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610e1c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600080600260009054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f1b613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f4961378b565b90506000610f5784846138a2565b90503073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c83836040518363ffffffff1660e01b8152600401610f94929190614828565b6020604051808303816000875af1925050508015610fd057506040513d601f19601f82011682018060405250810190610fcd919061486d565b60015b610fe8576000610fe357610fe261489a565b5b61104b565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050611050565b505050505b90565b600061105d6135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506112078161360f565b611210816136c3565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff16111561148f5761148e846114898367ffffffffffffffff166135ed565b613a2c565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b60006114d6613466565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b60008054905081101561195b5760006117596135b1565b6006016000808481548110611771576117706148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050806080015160400151836119459190614658565b9250508080611953906148f8565b915050611742565b508067ffffffffffffffff168260c0015167ffffffffffffffff16146119845761198361489a565b5b5050565b6119928282613a93565b5050565b600080549050816119a7919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016119e29190614297565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b60008054905081611a28919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611a639190614297565b600060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b5050505050565b611aa3816000613a93565b50565b60008054905082611ab7919061457b565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611af492919061494f565b600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050505050565b6000611b346135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050611cde8161360f565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611df4576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff16421080611e1d5750806040015167ffffffffffffffff1642115b15611e54576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e5c613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16611e95826000015167ffffffffffffffff166135ed565b1115611ecd576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ed6826136c3565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361214c856000015167ffffffffffffffff166135ed565b60405161215a92919061472b565b60405180910390a350505050565b60008054905081612179919061457b565b905060006121856135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015612391575060006123446135b1565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15612417577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826123c06135b1565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1660405161240e929190614978565b60405180910390a15b5050565b60006124256135b1565b90506125ca8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60006125d4613466565b9050600083141580156125f457506305f5e10067ffffffffffffffff1683105b1561262b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115612687576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006126d7856134a2565b90508067ffffffffffffffff168267ffffffffffffffff1603612726576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561274b575060008267ffffffffffffffff16145b15612782576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106127ad9190614658565b846127b89190614694565b6127c291906146d1565b90508067ffffffffffffffff168267ffffffffffffffff161115612812576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426128519190614658565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff164261289d9190614658565b6128a79190614658565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516129c092919061472b565b60405180910390a350505050505050565b60006129db6135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160000160009054906101000a900463ffffffff1663ffffffff169050919050565b6000612a316135b1565b9050612bd68160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c545760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612c9a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612d3c91906149a1565b60405180910390a2505050565b60606000805480602002602001604051908101604052809291908181526020018280548015612dcb57602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411612d865790505b5050505050905090565b60005b600080549050811015613013576000612def6135b1565b6006016000808481548110612e0757612e066148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff161180612ff25750600081608001516040015167ffffffffffffffff16145b612fff57612ffe61489a565b5b50808061300b906148f8565b915050612dd8565b50565b6000818154811061302657600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080821415801561307357506305f5e10067ffffffffffffffff1682105b156130aa576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130b2613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561310d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131176135b1565b90506000858560405161312b9291906149fb565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146131a2576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131ae82600801613ed2565b6131ba82600801613ee8565b92506040518060a00160405280600063ffffffff1681526020016131dd866134a2565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161345593929190614a41565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6134999190614a73565b90508091505090565b600062989680680100000000000000006134bc9190614aa7565b82106134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490614b35565b60405180910390fd5b6298968061350a83613ef6565b6135149190614b55565b9050919050565b61352482613f50565b61352d82613fa9565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550613583816134a2565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6135e49190614a73565b90508091505090565b6000629896808267ffffffffffffffff166136089190614aa7565b9050919050565b600081608001516000015163ffffffff1603613657576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146136c0576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008160200151826080015160000151436136de9190614b96565b63ffffffff166136ee9190614694565b90508082608001516020018181516137069190614658565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816137399190614694565b826080015160400181815161374e9190614658565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156137aa576137a9614bce565b5b6040519080825280601f01601f1916602001820160405280156137dc5781602001600182028036833780820191505090505b50905060005b6030811015613882576101006001544233846040516020016138079493929190614c66565b6040516020818303038152906040528051906020012060001c61382a9190614cb4565b60f81b8282815181106138405761383f6148c9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061387a906148f8565b9150506137e2565b5060016000815480929190613896906148f8565b91905055508091505090565b60008282116138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138dd90614d31565b60405180910390fd5b600062989680846138f79190614cb4565b1480156139125750600062989680836139109190614cb4565b145b613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dc3565b60405180910390fd5b600060015442604051602001613968929190614de3565b6040516020818303038152906040528051906020012060001c905060016000815480929190613996906148f8565b91905055506000819050600060016298968087876139b49190614a73565b6139be9190614b55565b6139c89190614e0f565b9050600062989680828467ffffffffffffffff166139e69190614cb4565b6139f09190614aa7565b905060008188613a009190614e0f565b90506298968081613a119190614cb4565b81613a1c9190614a73565b9050809550505050505092915050565b613a36338261401e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051613a87919061435f565b60405180910390a35050565b6000613a9d6135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050613c478161360f565b613c50816136c3565b600080613c5c856134a2565b9050600085148015613c805750600083608001516040015167ffffffffffffffff16115b15613c95578260800151604001519150613d01565b600085118015613cc157508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b15613cce57809150613d00565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b818360800151604001818151613d179190614e43565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613eca86613ec58467ffffffffffffffff166135ed565b613a2c565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b6000806298968083613f089190614cb4565b14613f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3f90614ecb565b60405180910390fd5b819050919050565b613f5981614101565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613fea9190614a73565b613ff49190614694565b8260000160189054906101000a900467ffffffffffffffff166140179190614658565b9050919050565b6140266135b1565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401614084929190614eeb565b6020604051808303816000875af11580156140a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c79190614f40565b6140fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361415d9190614e43565b6141679190614694565b6141719190614694565b8260010160009054906101000a900467ffffffffffffffff166141949190614658565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6141c2816141a5565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61419b565b5b6000614209848285016141d0565b91505092915050565b6000819050919050565b61422581614212565b811461423057600080fd5b50565b6000813590506142428161421c565b92915050565b6000806040838503121561425f5761425e61419b565b5b600061426d858286016141d0565b925050602061427e85828601614233565b9150509250929050565b614291816141a5565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142dd826142b2565b9050919050565b6142ed816142d2565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b600080604083850312156143275761432661419b565b5b6000614335858286016141d0565b9250506020614346858286016142fb565b9150509250929050565b61435981614212565b82525050565b60006020820190506143746000830184614350565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143af816141a5565b82525050565b60006143c183836143a6565b60208301905092915050565b6000602082019050919050565b60006143e58261437a565b6143ef8185614385565b93506143fa83614396565b8060005b8381101561442b57815161441288826143b5565b975061441d836143cd565b9250506001810190506143fe565b5085935050505092915050565b6000602082019050818103600083015261445281846143da565b905092915050565b6000602082840312156144705761446f61419b565b5b600061447e84828501614233565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126144ac576144ab614487565b5b8235905067ffffffffffffffff8111156144c9576144c861448c565b5b6020830191508360018202830111156144e5576144e4614491565b5b9250929050565b6000806000604084860312156145055761450461419b565b5b600084013567ffffffffffffffff811115614523576145226141a0565b5b61452f86828701614496565b9350935050602061454286828701614233565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614586826141a5565b9150614591836141a5565b9250826145a1576145a061454c565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b60006145f36018836145ac565b91506145fe826145bd565b602082019050919050565b60006020820190508181036000830152614622816145e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614663826141a5565b915061466e836141a5565b9250828201905067ffffffffffffffff81111561468e5761468d614629565b5b92915050565b600061469f826141a5565b91506146aa836141a5565b92508282026146b8816141a5565b91508082146146ca576146c9614629565b5b5092915050565b60006146dc826141a5565b91506146e7836141a5565b9250826146f7576146f661454c565b5b828204905092915050565b60006040820190506147176000830185614288565b6147246020830184614350565b9392505050565b60006040820190506147406000830185614350565b61474d6020830184614350565b9392505050565b60008115159050919050565b61476981614754565b82525050565b60006040820190506147846000830185614288565b6147916020830184614760565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156147d25780820151818401526020810190506147b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006147fa82614798565b61480481856147a3565b93506148148185602086016147b4565b61481d816147de565b840191505092915050565b6000604082019050818103600083015261484281856147ef565b90506148516020830184614350565b9392505050565b600081519050614867816141b9565b92915050565b6000602082840312156148835761488261419b565b5b600061489184828501614858565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490382614212565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361493557614934614629565b5b600182019050919050565b614949816142d2565b82525050565b60006040820190506149646000830185614288565b6149716020830184614940565b9392505050565b600060408201905061498d6000830185614288565b61499a6020830184614288565b9392505050565b60006020820190506149b66000830184614940565b92915050565b600081905092915050565b82818337600083830152505050565b60006149e283856149bc565b93506149ef8385846149c7565b82840190509392505050565b6000614a088284866149d6565b91508190509392505050565b6000614a2083856147a3565b9350614a2d8385846149c7565b614a36836147de565b840190509392505050565b60006040820190508181036000830152614a5c818587614a14565b9050614a6b6020830184614350565b949350505050565b6000614a7e82614212565b9150614a8983614212565b9250828203905081811115614aa157614aa0614629565b5b92915050565b6000614ab282614212565b9150614abd83614212565b9250828202614acb81614212565b91508282048414831517614ae257614ae1614629565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000614b1f6012836145ac565b9150614b2a82614ae9565b602082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b6000614b6082614212565b9150614b6b83614212565b925082614b7b57614b7a61454c565b5b828204905092915050565b600063ffffffff82169050919050565b6000614ba182614b86565b9150614bac83614b86565b9250828203905063ffffffff811115614bc857614bc7614629565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b614c18614c1382614212565b614bfd565b82525050565b60008160601b9050919050565b6000614c3682614c1e565b9050919050565b6000614c4882614c2b565b9050919050565b614c60614c5b826142d2565b614c3d565b82525050565b6000614c728287614c07565b602082019150614c828286614c07565b602082019150614c928285614c4f565b601482019150614ca28284614c07565b60208201915081905095945050505050565b6000614cbf82614212565b9150614cca83614212565b925082614cda57614cd961454c565b5b828206905092915050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b6000614d1b601c836145ac565b9150614d2682614ce5565b602082019050919050565b60006020820190508181036000830152614d4a81614d0e565b9050919050565b7f4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f6660008201527f2031302c3030302c303030000000000000000000000000000000000000000000602082015250565b6000614dad602b836145ac565b9150614db882614d51565b604082019050919050565b60006020820190508181036000830152614ddc81614da0565b9050919050565b6000614def8285614c07565b602082019150614dff8284614c07565b6020820191508190509392505050565b6000614e1a82614212565b9150614e2583614212565b9250828201905080821115614e3d57614e3c614629565b5b92915050565b6000614e4e826141a5565b9150614e59836141a5565b9250828203905067ffffffffffffffff811115614e7957614e78614629565b5b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000614eb56016836145ac565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b6000604082019050614f006000830185614940565b614f0d6020830184614350565b9392505050565b614f1d81614754565b8114614f2857600080fd5b50565b600081519050614f3a81614f14565b92915050565b600060208284031215614f5657614f5561419b565b5b6000614f6484828501614f2b565b9150509291505056fea26469706673582212206b149165daf0833944656a4ab803c88eeb55c63258283b4c8bb3ead1bd8548b664736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:1998:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:1998:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2146:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2146:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba1ab76862fb7dc63a7293523bf1a4ced5f35265d149a13de47a2a846709756c64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba1ab76862fb7dc63a7293523bf1a4ced5f35265d149a13de47a2a846709756c64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:405:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:405:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7314:9:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7314:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5706:597;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5295:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:708;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6309:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6464:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4298:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2988:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2496:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:998;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5706:597;5793:21;5817:17;:15;:17::i;:::-;5793:41;;5844:24;5871:1;:11;;:23;5883:10;5871:23;;;;;;;;;;;;;;;5844:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:21;:8;:19;:21::i;:::-;5936:19;5958:12;:3;:10;:12::i;:::-;5936:34;;6000:8;:12;;;5984:28;;:12;:28;;;5980:64;;6021:23;;;;;;;;;;;;;;5980:64;6055:25;:8;:23;:25::i;:::-;6105:12;6090:8;:12;;:27;;;;;;;;;;;6153:8;6127:1;:11;;:23;6139:10;6127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6179:1;:27;;:39;6207:10;6179:39;;;;;;;;;;;;;;;;6172:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:10;6234:62;;6254:10;6234:62;;;6278:12;6292:3;6234:62;;;;;;;:::i;:::-;;;;;;;;5783:520;;;5706:597;;:::o;5295:405::-;5377:21;5401:17;:15;:17::i;:::-;5377:41;;5428:36;:1;:11;;:23;5440:10;5428:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5540:1;5479;:27;;:39;5507:10;5479:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5475:90;;5550:15;;;;;;;;;;;;;;5475:90;5583:1;:27;;:39;5611:10;5583:39;;;;;;;;;;;;;;;;5576:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5682:10;5638:55;;5670:10;5638:55;;;;;;;;;;;;5367:333;5295:405;:::o;1782:708::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2257:8;2231:1;:11;;:23;2243:10;2231:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:1;:20;;:32;2304:10;2283:32;;;;;;;;;;;;;;;;2276:39;;;;;;;;;;;2347:1;2330:14;:18;;;2326:116;;;2364:67;2395:10;2407:23;:14;:21;;;:23::i;:::-;2364:30;:67::i;:::-;2326:116;2472:10;2456:27;;;;;;;;;;;;1843:647;;;1782:708;:::o;6309:149::-;6406:45;6432:10;6444:6;6406:25;:45::i;:::-;6309:149;;:::o;6464:131::-;6548:40;6574:10;6586:1;6548:25;:40::i;:::-;6464:131;:::o;4298:991::-;4373:21;4397:17;:15;:17::i;:::-;4373:41;;4424:24;4451:1;:11;;:23;4463:10;4451:23;;;;;;;;;;;;;;;4424:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:21;:8;:19;:21::i;:::-;4516:48;4567:1;:27;;:39;4595:10;4567:39;;;;;;;;;;;;;;;4516:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:1;4621:16;:34;;;:39;;;4617:67;;4669:15;;;;;;;;;;;;;;4617:67;4730:16;:34;;;4712:52;;:15;:52;:106;;;;4786:16;:32;;;4768:50;;:15;:50;4712:106;4695:194;;;4850:28;;;;;;;;;;;;;;4695:194;4935:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4903:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4899:97;;;4984:12;;;;;;;;;;;;;;4899:97;5007:25;:8;:23;:25::i;:::-;5057:16;:20;;;5042:8;:12;;:35;;;;;;;;;;;5113:8;5087:1;:11;;:23;5099:10;5087:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:1;:27;;:39;5167:10;5139:39;;;;;;;;;;;;;;;;5132:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5226:10;5194:88;;5214:10;5194:88;;;5238:12;5252:29;:16;:20;;;:27;;;:29::i;:::-;5194:88;;;;;;;:::i;:::-;;;;;;;;4363:926;;;4298:991;:::o;2988:1304::-;3076:21;3100:17;:15;:17::i;:::-;3076:41;;3127:36;:1;:11;;:23;3139:10;3127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3174:26;3203:25;:23;:25::i;:::-;3174:54;;3250:1;3243:3;:8;;:38;;;;;450:11;3255:26;;:3;:26;3243:38;3239:62;;;3290:11;;;;;;;;;;;;;;3239:62;3321:2;:17;;;;;;;;;;;;3315:23;;:3;:23;3311:48;;;3347:12;;;;;;;;;;;;;;3311:48;3370:18;3391:1;:11;;:23;3403:10;3391:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3370:48;;3428:16;3447:12;:3;:10;:12::i;:::-;3428:31;;3489:9;3474:24;;:11;:24;;;3470:188;;3521:25;;;;;;;;;;;;;;3470:188;3580:1;3567:9;:14;;;;:34;;;;;3600:1;3585:11;:16;;;3567:34;3563:95;;;3624:23;;;;;;;;;;;;;;3563:95;3756:20;510:6;3814:2;:25;;;;;;;;;;;;510:6;3795:44;;;;:::i;:::-;3780:11;:60;;;;:::i;:::-;3779:81;;;;:::i;:::-;3756:104;;3887:13;3875:25;;:9;:25;;;3871:63;;;3909:25;;;;;;;;;;;;;;3871:63;3987:221;;;;;;;;4025:9;3987:221;;;;;;4074:2;:27;;;;;;;;;;;;4055:15;4048:53;;;;:::i;:::-;3987:221;;;;;;4171:2;:27;;;;;;;;;;;;4141:2;:27;;;;;;;;;;;;4122:15;4115:53;;;;:::i;:::-;:83;;;;:::i;:::-;3987:221;;;;;3945:1;:27;;:39;3973:10;3945:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:10;4223:62;;4243:10;4223:62;;;4267:12;4281:3;4223:62;;;;;;;:::i;:::-;;;;;;;;3066:1226;;;;;2988:1304;;:::o;2496:486::-;2585:21;2609:17;:15;:17::i;:::-;2585:41;;2636:36;:1;:11;;:23;2648:10;2636:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2710:1;2687:25;;:11;:25;;;2683:172;;2766:5;2728:1;:11;;:23;2740:10;2728:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2683:172;;;2840:4;2802:1;:11;;:23;2814:10;2802:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2683:172;2900:11;2865:1;:20;;:32;2886:10;2865:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2951:10;2926:49;;;2963:11;2926:49;;;;;;:::i;:::-;;;;;;;;2575:407;2496:486;;:::o;778:998::-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7463:207:9:-;7556:43;7580:10;7592:6;7556:23;:43::i;:::-;7644:10;7614:49;;7632:10;7614:49;;;7656:6;7614:49;;;;;;:::i;:::-;;;;;;;;7463:207;;:::o;6626:831::-;6714:21;6738:17;:15;:17::i;:::-;6714:41;;6765:24;6792:1;:11;;:23;6804:10;6792:23;;;;;;;;;;;;;;;6765:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6825:21;:8;:19;:21::i;:::-;6857:25;:8;:23;:25::i;:::-;6893:22;6925:19;6947:15;:6;:13;:15::i;:::-;6925:37;;6987:1;6977:6;:11;:44;;;;;7020:1;6992:8;:17;;;:25;;;:29;;;6977:44;6973:299;;;7055:8;:17;;;:25;;;7037:43;;6973:299;;;7110:1;7101:6;:10;:55;;;;;7144:12;7115:41;;:8;:17;;;:25;;;:41;;;;7101:55;7097:175;;;7190:12;7172:30;;7097:175;;;7240:21;;;;;;;;;;;;;;7097:175;6973:299;7311:15;7282:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7363:8;7337:1;:11;;:23;7349:10;7337:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:68;7413:10;7425:24;:15;:22;;;:24::i;:::-;7382:30;:68::i;:::-;6704:753;;;;6626:831;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:77::-;747:7;776:5;765:16;;710:77;;;:::o;793:122::-;866:24;884:5;866:24;:::i;:::-;859:5;856:35;846:63;;905:1;902;895:12;846:63;793:122;:::o;921:139::-;967:5;1005:6;992:20;983:29;;1021:33;1048:5;1021:33;:::i;:::-;921:139;;;;:::o;1066:472::-;1133:6;1141;1190:2;1178:9;1169:7;1165:23;1161:32;1158:119;;;1196:79;;:::i;:::-;1158:119;1316:1;1341:52;1385:7;1376:6;1365:9;1361:22;1341:52;:::i;:::-;1331:62;;1287:116;1442:2;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1413:118;1066:472;;;;;:::o;1544:327::-;1602:6;1651:2;1639:9;1630:7;1626:23;1622:32;1619:119;;;1657:79;;:::i;:::-;1619:119;1777:1;1802:52;1846:7;1837:6;1826:9;1822:22;1802:52;:::i;:::-;1792:62;;1748:116;1544:327;;;;:::o;1877:126::-;1914:7;1954:42;1947:5;1943:54;1932:65;;1877:126;;;:::o;2009:96::-;2046:7;2075:24;2093:5;2075:24;:::i;:::-;2064:35;;2009:96;;;:::o;2111:122::-;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:472::-;2451:6;2459;2508:2;2496:9;2487:7;2483:23;2479:32;2476:119;;;2514:79;;:::i;:::-;2476:119;2634:1;2659:52;2703:7;2694:6;2683:9;2679:22;2659:52;:::i;:::-;2649:62;;2605:116;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2384:472;;;;;:::o;2862:117::-;2971:1;2968;2961:12;2985:117;3094:1;3091;3084:12;3108:117;3217:1;3214;3207:12;3244:552;3301:8;3311:6;3361:3;3354:4;3346:6;3342:17;3338:27;3328:122;;3369:79;;:::i;:::-;3328:122;3482:6;3469:20;3459:30;;3512:18;3504:6;3501:30;3498:117;;;3534:79;;:::i;:::-;3498:117;3648:4;3640:6;3636:17;3624:29;;3702:3;3694:4;3686:6;3682:17;3672:8;3668:32;3665:41;3662:128;;;3709:79;;:::i;:::-;3662:128;3244:552;;;;;:::o;3802:672::-;3881:6;3889;3897;3946:2;3934:9;3925:7;3921:23;3917:32;3914:119;;;3952:79;;:::i;:::-;3914:119;4100:1;4089:9;4085:17;4072:31;4130:18;4122:6;4119:30;4116:117;;;4152:79;;:::i;:::-;4116:117;4265:64;4321:7;4312:6;4301:9;4297:22;4265:64;:::i;:::-;4247:82;;;;4043:296;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;3802:672;;;;;:::o;4480:115::-;4565:23;4582:5;4565:23;:::i;:::-;4560:3;4553:36;4480:115;;:::o;4601:218::-;4692:4;4730:2;4719:9;4715:18;4707:26;;4743:69;4809:1;4798:9;4794:17;4785:6;4743:69;:::i;:::-;4601:218;;;;:::o;4825:118::-;4912:24;4930:5;4912:24;:::i;:::-;4907:3;4900:37;4825:118;;:::o;4949:332::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;5202:72;5270:2;5259:9;5255:18;5246:6;5202:72;:::i;:::-;4949:332;;;;;:::o;5287:180::-;5335:77;5332:1;5325:88;5432:4;5429:1;5422:15;5456:4;5453:1;5446:15;5473:205;5512:3;5531:19;5548:1;5531:19;:::i;:::-;5526:24;;5564:19;5581:1;5564:19;:::i;:::-;5559:24;;5606:1;5603;5599:9;5592:16;;5629:18;5624:3;5621:27;5618:53;;;5651:18;;:::i;:::-;5618:53;5473:205;;;;:::o;5684:275::-;5723:7;5746:19;5763:1;5746:19;:::i;:::-;5741:24;;5779:19;5796:1;5779:19;:::i;:::-;5774:24;;5833:1;5830;5826:9;5855:29;5872:11;5855:29;:::i;:::-;5844:40;;5916:11;5907:7;5904:24;5894:58;;5932:18;;:::i;:::-;5894:58;5731:228;5684:275;;;;:::o;5965:180::-;6013:77;6010:1;6003:88;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6151:182;6190:1;6207:19;6224:1;6207:19;:::i;:::-;6202:24;;6240:19;6257:1;6240:19;:::i;:::-;6235:24;;6278:1;6268:35;;6283:18;;:::i;:::-;6268:35;6325:1;6322;6318:9;6313:14;;6151:182;;;;:::o;6339:118::-;6426:24;6444:5;6426:24;:::i;:::-;6421:3;6414:37;6339:118;;:::o;6463:222::-;6556:4;6594:2;6583:9;6579:18;6571:26;;6607:71;6675:1;6664:9;6660:17;6651:6;6607:71;:::i;:::-;6463:222;;;;:::o;6691:147::-;6792:11;6829:3;6814:18;;6691:147;;;;:::o;6844:146::-;6941:6;6936:3;6931;6918:30;6982:1;6973:6;6968:3;6964:16;6957:27;6844:146;;;:::o;7018:327::-;7132:3;7153:88;7234:6;7229:3;7153:88;:::i;:::-;7146:95;;7251:56;7300:6;7295:3;7288:5;7251:56;:::i;:::-;7332:6;7327:3;7323:16;7316:23;;7018:327;;;;;:::o;7351:291::-;7491:3;7513:103;7612:3;7603:6;7595;7513:103;:::i;:::-;7506:110;;7633:3;7626:10;;7351:291;;;;;:::o;7648:168::-;7731:11;7765:6;7760:3;7753:19;7805:4;7800:3;7796:14;7781:29;;7648:168;;;;:::o;7822:102::-;7863:6;7914:2;7910:7;7905:2;7898:5;7894:14;7890:28;7880:38;;7822:102;;;:::o;7952:314::-;8048:3;8069:70;8132:6;8127:3;8069:70;:::i;:::-;8062:77;;8149:56;8198:6;8193:3;8186:5;8149:56;:::i;:::-;8230:29;8252:6;8230:29;:::i;:::-;8225:3;8221:39;8214:46;;7952:314;;;;;:::o;8272:439::-;8421:4;8459:2;8448:9;8444:18;8436:26;;8508:9;8502:4;8498:20;8494:1;8483:9;8479:17;8472:47;8536:86;8617:4;8608:6;8600;8536:86;:::i;:::-;8528:94;;8632:72;8700:2;8689:9;8685:18;8676:6;8632:72;:::i;:::-;8272:439;;;;;;:::o;8717:194::-;8757:4;8777:20;8795:1;8777:20;:::i;:::-;8772:25;;8811:20;8829:1;8811:20;:::i;:::-;8806:25;;8855:1;8852;8848:9;8840:17;;8879:1;8873:4;8870:11;8867:37;;;8884:18;;:::i;:::-;8867:37;8717:194;;;;:::o;8917:410::-;8957:7;8980:20;8998:1;8980:20;:::i;:::-;8975:25;;9014:20;9032:1;9014:20;:::i;:::-;9009:25;;9069:1;9066;9062:9;9091:30;9109:11;9091:30;:::i;:::-;9080:41;;9270:1;9261:7;9257:15;9254:1;9251:22;9231:1;9224:9;9204:83;9181:139;;9300:18;;:::i;:::-;9181:139;8965:362;8917:410;;;;:::o;9333:169::-;9417:11;9451:6;9446:3;9439:19;9491:4;9486:3;9482:14;9467:29;;9333:169;;;;:::o;9508:168::-;9648:20;9644:1;9636:6;9632:14;9625:44;9508:168;:::o;9682:366::-;9824:3;9845:67;9909:2;9904:3;9845:67;:::i;:::-;9838:74;;9921:93;10010:3;9921:93;:::i;:::-;10039:2;10034:3;10030:12;10023:19;;9682:366;;;:::o;10054:419::-;10220:4;10258:2;10247:9;10243:18;10235:26;;10307:9;10301:4;10297:20;10293:1;10282:9;10278:17;10271:47;10335:131;10461:4;10335:131;:::i;:::-;10327:139;;10054:419;;;:::o;10479:185::-;10519:1;10536:20;10554:1;10536:20;:::i;:::-;10531:25;;10570:20;10588:1;10570:20;:::i;:::-;10565:25;;10609:1;10599:35;;10614:18;;:::i;:::-;10599:35;10656:1;10653;10649:9;10644:14;;10479:185;;;;:::o;10670:93::-;10706:7;10746:10;10739:5;10735:22;10724:33;;10670:93;;;:::o;10769:200::-;10808:4;10828:19;10845:1;10828:19;:::i;:::-;10823:24;;10861:19;10878:1;10861:19;:::i;:::-;10856:24;;10904:1;10901;10897:9;10889:17;;10928:10;10922:4;10919:20;10916:46;;;10942:18;;:::i;:::-;10916:46;10769:200;;;;:::o;10975:222::-;11068:4;11106:2;11095:9;11091:18;11083:26;;11119:71;11187:1;11176:9;11172:17;11163:6;11119:71;:::i;:::-;10975:222;;;;:::o;11203:208::-;11242:4;11262:19;11279:1;11262:19;:::i;:::-;11257:24;;11295:19;11312:1;11295:19;:::i;:::-;11290:24;;11338:1;11335;11331:9;11323:17;;11362:18;11356:4;11353:28;11350:54;;;11384:18;;:::i;:::-;11350:54;11203:208;;;;:::o;11417:176::-;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11585:1;11582;11578:9;11573:14;;11417:176;;;;:::o;11599:172::-;11739:24;11735:1;11727:6;11723:14;11716:48;11599:172;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:332::-;12695:4;12733:2;12722:9;12718:18;12710:26;;12746:71;12814:1;12803:9;12799:17;12790:6;12746:71;:::i;:::-;12827:72;12895:2;12884:9;12880:18;12871:6;12827:72;:::i;:::-;12574:332;;;;;:::o;12912:90::-;12946:7;12989:5;12982:13;12975:21;12964:32;;12912:90;;;:::o;13008:116::-;13078:21;13093:5;13078:21;:::i;:::-;13071:5;13068:32;13058:60;;13114:1;13111;13104:12;13058:60;13008:116;:::o;13130:137::-;13184:5;13215:6;13209:13;13200:22;;13231:30;13255:5;13231:30;:::i;:::-;13130:137;;;;:::o;13273:345::-;13340:6;13389:2;13377:9;13368:7;13364:23;13360:32;13357:119;;;13395:79;;:::i;:::-;13357:119;13515:1;13540:61;13593:7;13584:6;13573:9;13569:22;13540:61;:::i;:::-;13530:71;;13486:125;13273:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613172806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a11565b6101a8565b005b6100ce60048036038101906100c99190612a51565b61063c565b005b6100ea60048036038101906100e59190612a51565b61093e565b005b61010660048036038101906101019190612a11565b610db7565b005b610122600480360381019061011d9190612a51565b610dc5565b005b61013e60048036038101906101399190612a51565b610dd3565b005b61015a60048036038101906101559190612a11565b611411565b005b61017660048036038101906101719190612adc565b6119c7565b005b610192600480360381019061018d9190612b81565b611ce9565b60405161019f9190612bf0565b60405180910390f35b60006101b26120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c81612137565b6000610367846121eb565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c382612264565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef438760405161062d929190612c1a565b60405180910390a35050505050565b60006106466120fb565b90506107eb8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff160361086f576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b60006109486120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610af281612137565b610afb81612264565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff161115610d7a57610d7984610d748367ffffffffffffffff1661232c565b61234e565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610dc182826123b5565b5050565b610dd08160006123b5565b50565b6000610ddd6120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f8781612137565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361109d576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806110c65750806040015167ffffffffffffffff1642115b156110fd576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111056127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1661113e826000015167ffffffffffffffff1661232c565b1115611176576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f82612264565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436113f5856000015167ffffffffffffffff1661232c565b604051611403929190612c1a565b60405180910390a350505050565b600061141b6120fb565b90506115c08160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60006115ca6127f4565b9050600083141580156115ea57506305f5e10067ffffffffffffffff1683105b15611621576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561167d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006116cd856121eb565b90508067ffffffffffffffff168267ffffffffffffffff160361171c576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611741575060008267ffffffffffffffff16145b15611778576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106117a39190612c72565b846117ae9190612cae565b6117b89190612d1a565b90508067ffffffffffffffff168267ffffffffffffffff161115611808576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118479190612c72565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426118939190612c72565b61189d9190612c72565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516119b6929190612c1a565b60405180910390a350505050505050565b60006119d16120fb565b9050611b768160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf45760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611c3a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611cdc9190612d5a565b60405180910390a2505050565b6000808214158015611d0857506305f5e10067ffffffffffffffff1682105b15611d3f576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d476127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611da2576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611dac6120fb565b905060008585604051611dc0929190612db4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611e37576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e4382600801612830565b611e4f82600801612846565b92506040518060a00160405280600063ffffffff168152602001611e72866121eb565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516120ea93929190612e1c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61212e9190612e4e565b90508091505090565b600081608001516000015163ffffffff160361217f576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122059190612e82565b8210612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90612f21565b60405180910390fd5b6298968061225383612854565b61225d9190612f41565b9050919050565b600081602001518260800151600001514361227f9190612f82565b63ffffffff1661228f9190612cae565b90508082608001516020018181516122a79190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816122da9190612cae565b82608001516040018181516122ef9190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123479190612e82565b9050919050565b61235833826128ae565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516123a99190612fba565b60405180910390a35050565b60006123bf6120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061256981612137565b61257281612264565b60008061257e856121eb565b90506000851480156125a25750600083608001516040015167ffffffffffffffff16115b156125b7578260800151604001519150612623565b6000851180156125e357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156125f057809150612622565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126399190612fd5565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506127ec866127e78467ffffffffffffffff1661232c565b61234e565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128279190612e4e565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128669190613011565b146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061308e565b60405180910390fd5b819050919050565b6128b66120fb565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016129149291906130ae565b6020604051808303816000875af1158015612933573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612957919061310f565b61298d576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6129b88161299b565b81146129c357600080fd5b50565b6000813590506129d5816129af565b92915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612991565b5b6000612a36858286016129c6565b9250506020612a47858286016129fc565b9150509250929050565b600060208284031215612a6757612a66612991565b5b6000612a75848285016129c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aa982612a7e565b9050919050565b612ab981612a9e565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b60008060408385031215612af357612af2612991565b5b6000612b01858286016129c6565b9250506020612b1285828601612ac7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b4157612b40612b1c565b5b8235905067ffffffffffffffff811115612b5e57612b5d612b21565b5b602083019150836001820283011115612b7a57612b79612b26565b5b9250929050565b600080600060408486031215612b9a57612b99612991565b5b600084013567ffffffffffffffff811115612bb857612bb7612996565b5b612bc486828701612b2b565b93509350506020612bd7868287016129fc565b9150509250925092565b612bea8161299b565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129db565b82525050565b6000604082019050612c2f6000830185612c0b565b612c3c6020830184612c0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7d8261299b565b9150612c888361299b565b9250828201905067ffffffffffffffff811115612ca857612ca7612c43565b5b92915050565b6000612cb98261299b565b9150612cc48361299b565b9250828202612cd28161299b565b9150808214612ce457612ce3612c43565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d258261299b565b9150612d308361299b565b925082612d4057612d3f612ceb565b5b828204905092915050565b612d5481612a9e565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600081905092915050565b82818337600083830152505050565b6000612d9b8385612d75565b9350612da8838584612d80565b82840190509392505050565b6000612dc1828486612d8f565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612dfb8385612dcd565b9350612e08838584612d80565b612e1183612dde565b840190509392505050565b60006040820190508181036000830152612e37818587612def565b9050612e466020830184612c0b565b949350505050565b6000612e59826129db565b9150612e64836129db565b9250828203905081811115612e7c57612e7b612c43565b5b92915050565b6000612e8d826129db565b9150612e98836129db565b9250828202612ea6816129db565b91508282048414831517612ebd57612ebc612c43565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f0b601283612ec4565b9150612f1682612ed5565b602082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b6000612f4c826129db565b9150612f57836129db565b925082612f6757612f66612ceb565b5b828204905092915050565b600063ffffffff82169050919050565b6000612f8d82612f72565b9150612f9883612f72565b9250828203905063ffffffff811115612fb457612fb3612c43565b5b92915050565b6000602082019050612fcf6000830184612c0b565b92915050565b6000612fe08261299b565b9150612feb8361299b565b9250828203905067ffffffffffffffff81111561300b5761300a612c43565b5b92915050565b600061301c826129db565b9150613027836129db565b92508261303757613036612ceb565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613078601683612ec4565b915061308382613042565b602082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b60006040820190506130c36000830185612d4b565b6130d06020830184612c0b565b9392505050565b60008115159050919050565b6130ec816130d7565b81146130f757600080fd5b50565b600081519050613109816130e3565b92915050565b60006020828403121561312557613124612991565b5b6000613133848285016130fa565b9150509291505056fea26469706673582212204df5620f3b3037b05438f0141e8b7ab83c168781b707d6e912910aba93d5075f64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a11565b6101a8565b005b6100ce60048036038101906100c99190612a51565b61063c565b005b6100ea60048036038101906100e59190612a51565b61093e565b005b61010660048036038101906101019190612a11565b610db7565b005b610122600480360381019061011d9190612a51565b610dc5565b005b61013e60048036038101906101399190612a51565b610dd3565b005b61015a60048036038101906101559190612a11565b611411565b005b61017660048036038101906101719190612adc565b6119c7565b005b610192600480360381019061018d9190612b81565b611ce9565b60405161019f9190612bf0565b60405180910390f35b60006101b26120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c81612137565b6000610367846121eb565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c382612264565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef438760405161062d929190612c1a565b60405180910390a35050505050565b60006106466120fb565b90506107eb8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff160361086f576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b60006109486120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610af281612137565b610afb81612264565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff161115610d7a57610d7984610d748367ffffffffffffffff1661232c565b61234e565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610dc182826123b5565b5050565b610dd08160006123b5565b50565b6000610ddd6120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f8781612137565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361109d576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806110c65750806040015167ffffffffffffffff1642115b156110fd576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111056127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1661113e826000015167ffffffffffffffff1661232c565b1115611176576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f82612264565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436113f5856000015167ffffffffffffffff1661232c565b604051611403929190612c1a565b60405180910390a350505050565b600061141b6120fb565b90506115c08160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60006115ca6127f4565b9050600083141580156115ea57506305f5e10067ffffffffffffffff1683105b15611621576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561167d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006116cd856121eb565b90508067ffffffffffffffff168267ffffffffffffffff160361171c576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611741575060008267ffffffffffffffff16145b15611778576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106117a39190612c72565b846117ae9190612cae565b6117b89190612d1a565b90508067ffffffffffffffff168267ffffffffffffffff161115611808576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118479190612c72565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426118939190612c72565b61189d9190612c72565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516119b6929190612c1a565b60405180910390a350505050505050565b60006119d16120fb565b9050611b768160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf45760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611c3a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611cdc9190612d5a565b60405180910390a2505050565b6000808214158015611d0857506305f5e10067ffffffffffffffff1682105b15611d3f576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d476127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611da2576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611dac6120fb565b905060008585604051611dc0929190612db4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611e37576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e4382600801612830565b611e4f82600801612846565b92506040518060a00160405280600063ffffffff168152602001611e72866121eb565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516120ea93929190612e1c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61212e9190612e4e565b90508091505090565b600081608001516000015163ffffffff160361217f576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122059190612e82565b8210612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90612f21565b60405180910390fd5b6298968061225383612854565b61225d9190612f41565b9050919050565b600081602001518260800151600001514361227f9190612f82565b63ffffffff1661228f9190612cae565b90508082608001516020018181516122a79190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816122da9190612cae565b82608001516040018181516122ef9190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123479190612e82565b9050919050565b61235833826128ae565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516123a99190612fba565b60405180910390a35050565b60006123bf6120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061256981612137565b61257281612264565b60008061257e856121eb565b90506000851480156125a25750600083608001516040015167ffffffffffffffff16115b156125b7578260800151604001519150612623565b6000851180156125e357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156125f057809150612622565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126399190612fd5565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506127ec866127e78467ffffffffffffffff1661232c565b61234e565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128279190612e4e565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128669190613011565b146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061308e565b60405180910390fd5b819050919050565b6128b66120fb565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016129149291906130ae565b6020604051808303816000875af1158015612933573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612957919061310f565b61298d576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6129b88161299b565b81146129c357600080fd5b50565b6000813590506129d5816129af565b92915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612991565b5b6000612a36858286016129c6565b9250506020612a47858286016129fc565b9150509250929050565b600060208284031215612a6757612a66612991565b5b6000612a75848285016129c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aa982612a7e565b9050919050565b612ab981612a9e565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b60008060408385031215612af357612af2612991565b5b6000612b01858286016129c6565b9250506020612b1285828601612ac7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b4157612b40612b1c565b5b8235905067ffffffffffffffff811115612b5e57612b5d612b21565b5b602083019150836001820283011115612b7a57612b79612b26565b5b9250929050565b600080600060408486031215612b9a57612b99612991565b5b600084013567ffffffffffffffff811115612bb857612bb7612996565b5b612bc486828701612b2b565b93509350506020612bd7868287016129fc565b9150509250925092565b612bea8161299b565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129db565b82525050565b6000604082019050612c2f6000830185612c0b565b612c3c6020830184612c0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7d8261299b565b9150612c888361299b565b9250828201905067ffffffffffffffff811115612ca857612ca7612c43565b5b92915050565b6000612cb98261299b565b9150612cc48361299b565b9250828202612cd28161299b565b9150808214612ce457612ce3612c43565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d258261299b565b9150612d308361299b565b925082612d4057612d3f612ceb565b5b828204905092915050565b612d5481612a9e565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600081905092915050565b82818337600083830152505050565b6000612d9b8385612d75565b9350612da8838584612d80565b82840190509392505050565b6000612dc1828486612d8f565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612dfb8385612dcd565b9350612e08838584612d80565b612e1183612dde565b840190509392505050565b60006040820190508181036000830152612e37818587612def565b9050612e466020830184612c0b565b949350505050565b6000612e59826129db565b9150612e64836129db565b9250828203905081811115612e7c57612e7b612c43565b5b92915050565b6000612e8d826129db565b9150612e98836129db565b9250828202612ea6816129db565b91508282048414831517612ebd57612ebc612c43565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f0b601283612ec4565b9150612f1682612ed5565b602082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b6000612f4c826129db565b9150612f57836129db565b925082612f6757612f66612ceb565b5b828204905092915050565b600063ffffffff82169050919050565b6000612f8d82612f72565b9150612f9883612f72565b9250828203905063ffffffff811115612fb457612fb3612c43565b5b92915050565b6000602082019050612fcf6000830184612c0b565b92915050565b6000612fe08261299b565b9150612feb8361299b565b9250828203905067ffffffffffffffff81111561300b5761300a612c43565b5b92915050565b600061301c826129db565b9150613027836129db565b92508261303757613036612ceb565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613078601683612ec4565b915061308382613042565b602082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b60006040820190506130c36000830185612d4b565b6130d06020830184612c0b565b9392505050565b60008115159050919050565b6130ec816130d7565b81146130f757600080fd5b50565b600081519050613109816130e3565b92915050565b60006020828403121561312557613124612991565b5b6000613133848285016130fa565b9150509291505056fea26469706673582212204df5620f3b3037b05438f0141e8b7ab83c168781b707d6e912910aba93d5075f64736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file From d8605a94c3eb6acd39c50ad0e42094c387c4e031 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 19 Feb 2024 17:40:00 +0100 Subject: [PATCH 15/19] fix: sync with main --- abis/SSVNetwork.json | 155 + abis/SSVNetworkViews.json | 27 + contracts/SSVNetwork.sol | 287 + contracts/interfaces/ISSVClusters.sol | 153 + contracts/libraries/CoreLib.sol | 65 + contracts/libraries/OperatorLib.sol | 96 + contracts/libraries/ValidatorLib.sol | 49 + contracts/modules/SSVClusters.sol | 371 + contracts/modules/SSVOperators.sol | 213 + contracts/test/SSVNetworkUpgrade.sol | 412 + contracts/test/libraries/CoreLibT.sol | 17 + contracts/token/SSVToken.sol | 24 + crytic-export/combined_solc.json | 1 - docs/setup.md | 34 + hardhat.config.ts | 145 + package-lock.json | 25909 ++++++++++++++++++++++++ package.json | 4 +- slither.config.json | 4 - test/account/withdraw.ts | 215 + test/dao/network-fee-withdraw.ts | 100 + test/dao/operational.ts | 77 + test/deployment/deploy.ts | 157 + test/deployment/version.ts | 26 + test/helpers/contract-helpers.ts | 392 + test/helpers/gas-usage.ts | 205 + test/liquidate/liquidated-cluster.ts | 196 + test/operators/remove.ts | 94 + test/sanity/balances.ts | 514 + test/validators/others.ts | 154 - test/validators/register.ts | 1104 + test/validators/remove.ts | 447 + 31 files changed, 31485 insertions(+), 162 deletions(-) create mode 100644 contracts/SSVNetwork.sol create mode 100644 contracts/interfaces/ISSVClusters.sol create mode 100644 contracts/libraries/CoreLib.sol create mode 100644 contracts/libraries/OperatorLib.sol create mode 100644 contracts/libraries/ValidatorLib.sol create mode 100644 contracts/modules/SSVClusters.sol create mode 100644 contracts/modules/SSVOperators.sol create mode 100644 contracts/test/SSVNetworkUpgrade.sol create mode 100644 contracts/test/libraries/CoreLibT.sol create mode 100644 contracts/token/SSVToken.sol delete mode 100644 crytic-export/combined_solc.json create mode 100644 docs/setup.md create mode 100644 hardhat.config.ts create mode 100644 package-lock.json delete mode 100644 slither.config.json create mode 100644 test/account/withdraw.ts create mode 100644 test/dao/network-fee-withdraw.ts create mode 100644 test/dao/operational.ts create mode 100644 test/deployment/deploy.ts create mode 100644 test/deployment/version.ts create mode 100644 test/helpers/contract-helpers.ts create mode 100644 test/helpers/gas-usage.ts create mode 100644 test/liquidate/liquidated-cluster.ts create mode 100644 test/operators/remove.ts create mode 100644 test/sanity/balances.ts delete mode 100644 test/validators/others.ts create mode 100644 test/validators/register.ts create mode 100644 test/validators/remove.ts diff --git a/abis/SSVNetwork.json b/abis/SSVNetwork.json index 9a017710..695c2a84 100644 --- a/abis/SSVNetwork.json +++ b/abis/SSVNetwork.json @@ -74,6 +74,17 @@ "name": "IncorrectValidatorState", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "IncorrectValidatorStateWithData", + "type": "error" + }, { "inputs": [], "name": "InsufficientBalance", @@ -124,6 +135,11 @@ "name": "OperatorsListNotUnique", "type": "error" }, + { + "inputs": [], + "name": "PublicKeysSharesLengthMismatch", + "type": "error" + }, { "inputs": [], "name": "SameFeeChangeNotAllowed", @@ -149,6 +165,17 @@ "name": "ValidatorAlreadyExists", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "ValidatorAlreadyExistsWithData", + "type": "error" + }, { "inputs": [], "name": "ValidatorDoesNotExist", @@ -932,6 +959,134 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "publicKeys", + "type": "bytes[]" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + } + ], + "name": "bulkExitValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "publicKeys", + "type": "bytes[]" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "internalType": "bytes[]", + "name": "sharesData", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "bulkRegisterValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "publicKeys", + "type": "bytes[]" + }, + { + "internalType": "uint64[]", + "name": "operatorIds", + "type": "uint64[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "validatorCount", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "networkFeeIndex", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "index", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ISSVNetworkCore.Cluster", + "name": "cluster", + "type": "tuple" + } + ], + "name": "bulkRemoveValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/abis/SSVNetworkViews.json b/abis/SSVNetworkViews.json index 64cc9826..0000be13 100644 --- a/abis/SSVNetworkViews.json +++ b/abis/SSVNetworkViews.json @@ -74,6 +74,17 @@ "name": "IncorrectValidatorState", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "IncorrectValidatorStateWithData", + "type": "error" + }, { "inputs": [], "name": "InsufficientBalance", @@ -124,6 +135,11 @@ "name": "OperatorsListNotUnique", "type": "error" }, + { + "inputs": [], + "name": "PublicKeysSharesLengthMismatch", + "type": "error" + }, { "inputs": [], "name": "SameFeeChangeNotAllowed", @@ -149,6 +165,17 @@ "name": "ValidatorAlreadyExists", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "publicKey", + "type": "bytes" + } + ], + "name": "ValidatorAlreadyExistsWithData", + "type": "error" + }, { "inputs": [], "name": "ValidatorDoesNotExist", diff --git a/contracts/SSVNetwork.sol b/contracts/SSVNetwork.sol new file mode 100644 index 00000000..d570c199 --- /dev/null +++ b/contracts/SSVNetwork.sol @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./interfaces/ISSVNetwork.sol"; + +import "./interfaces/ISSVClusters.sol"; +import "./interfaces/ISSVOperators.sol"; +import "./interfaces/ISSVDAO.sol"; +import "./interfaces/ISSVViews.sol"; + +import "./libraries/Types.sol"; +import "./libraries/CoreLib.sol"; +import "./libraries/SSVStorage.sol"; +import "./libraries/SSVStorageProtocol.sol"; + +import "./SSVProxy.sol"; + +import {SSVModules} from "./libraries/SSVStorage.sol"; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; + +contract SSVNetwork is + UUPSUpgradeable, + Ownable2StepUpgradeable, + ISSVNetwork, + ISSVOperators, + ISSVClusters, + ISSVDAO, + SSVProxy +{ + using Types256 for uint256; + + /****************/ + /* Initializers */ + /****************/ + + function initialize( + IERC20 token_, + ISSVOperators ssvOperators_, + ISSVClusters ssvClusters_, + ISSVDAO ssvDAO_, + ISSVViews ssvViews_, + uint64 minimumBlocksBeforeLiquidation_, + uint256 minimumLiquidationCollateral_, + uint32 validatorsPerOperatorLimit_, + uint64 declareOperatorFeePeriod_, + uint64 executeOperatorFeePeriod_, + uint64 operatorMaxFeeIncrease_ + ) external override initializer onlyProxy { + __UUPSUpgradeable_init(); + __Ownable_init_unchained(); + __SSVNetwork_init_unchained( + token_, + ssvOperators_, + ssvClusters_, + ssvDAO_, + ssvViews_, + minimumBlocksBeforeLiquidation_, + minimumLiquidationCollateral_, + validatorsPerOperatorLimit_, + declareOperatorFeePeriod_, + executeOperatorFeePeriod_, + operatorMaxFeeIncrease_ + ); + } + + function __SSVNetwork_init_unchained( + IERC20 token_, + ISSVOperators ssvOperators_, + ISSVClusters ssvClusters_, + ISSVDAO ssvDAO_, + ISSVViews ssvViews_, + uint64 minimumBlocksBeforeLiquidation_, + uint256 minimumLiquidationCollateral_, + uint32 validatorsPerOperatorLimit_, + uint64 declareOperatorFeePeriod_, + uint64 executeOperatorFeePeriod_, + uint64 operatorMaxFeeIncrease_ + ) internal onlyInitializing { + StorageData storage s = SSVStorage.load(); + StorageProtocol storage sp = SSVStorageProtocol.load(); + s.token = token_; + s.ssvContracts[SSVModules.SSV_OPERATORS] = address(ssvOperators_); + s.ssvContracts[SSVModules.SSV_CLUSTERS] = address(ssvClusters_); + s.ssvContracts[SSVModules.SSV_DAO] = address(ssvDAO_); + s.ssvContracts[SSVModules.SSV_VIEWS] = address(ssvViews_); + sp.minimumBlocksBeforeLiquidation = minimumBlocksBeforeLiquidation_; + sp.minimumLiquidationCollateral = minimumLiquidationCollateral_.shrink(); + sp.validatorsPerOperatorLimit = validatorsPerOperatorLimit_; + sp.declareOperatorFeePeriod = declareOperatorFeePeriod_; + sp.executeOperatorFeePeriod = executeOperatorFeePeriod_; + sp.operatorMaxFeeIncrease = operatorMaxFeeIncrease_; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /*****************/ + /* UUPS required */ + /*****************/ + + function _authorizeUpgrade(address) internal override onlyOwner {} + + /*********************/ + /* Fallback function */ + /*********************/ + fallback() external { + // Delegates the call to the address of the SSV Views module + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_VIEWS]); + } + + /*******************************/ + /* Operator External Functions */ + /*******************************/ + + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function removeOperator(uint64 operatorId) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function setOperatorWhitelist(uint64 operatorId, address whitelisted) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function declareOperatorFee(uint64 operatorId, uint256 fee) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function executeOperatorFee(uint64 operatorId) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function cancelDeclaredOperatorFee(uint64 operatorId) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function reduceOperatorFee(uint64 operatorId, uint256 fee) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function withdrawOperatorEarnings(uint64 operatorId, uint256 amount) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + function withdrawAllOperatorEarnings(uint64 operatorId) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS]); + } + + /*******************************/ + /* Address External Functions */ + /*******************************/ + + function setFeeRecipientAddress(address recipientAddress) external override { + emit FeeRecipientAddressUpdated(msg.sender, recipientAddress); + } + + /*******************************/ + /* Validator External Functions */ + /*******************************/ + + function registerValidator( + bytes calldata publicKey, + uint64[] calldata operatorIds, + bytes calldata sharesData, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function bulkRegisterValidator( + bytes[] calldata publicKeys, + uint64[] calldata operatorIds, + bytes[] calldata sharesData, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function removeValidator( + bytes calldata publicKey, + uint64[] calldata operatorIds, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function bulkRemoveValidator( + bytes[] calldata publicKeys, + uint64[] calldata operatorIds, + Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function liquidate( + address clusterOwner, + uint64[] calldata operatorIds, + ISSVNetworkCore.Cluster memory cluster + ) external { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function reactivate( + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function deposit( + address clusterOwner, + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function withdraw( + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function bulkExitValidator(bytes[] calldata publicKeys, uint64[] calldata operatorIds) external override { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS]); + } + + function updateNetworkFee(uint256 fee) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function withdrawNetworkEarnings(uint256 amount) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateOperatorFeeIncreaseLimit(uint64 percentage) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateDeclareOperatorFeePeriod(uint64 timeInSeconds) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateExecuteOperatorFeePeriod(uint64 timeInSeconds) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateLiquidationThresholdPeriod(uint64 blocks) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateMinimumLiquidationCollateral(uint256 amount) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function updateMaximumOperatorFee(uint64 maxFee) external override onlyOwner { + _delegate(SSVStorage.load().ssvContracts[SSVModules.SSV_DAO]); + } + + function getVersion() external pure override returns (string memory version) { + return CoreLib.getVersion(); + } + + /*******************************/ + /* Upgrade Modules Function */ + /*******************************/ + function updateModule(SSVModules moduleId, address moduleAddress) external onlyOwner { + CoreLib.setModuleContract(moduleId, moduleAddress); + } +} diff --git a/contracts/interfaces/ISSVClusters.sol b/contracts/interfaces/ISSVClusters.sol new file mode 100644 index 00000000..3784aa17 --- /dev/null +++ b/contracts/interfaces/ISSVClusters.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./ISSVNetworkCore.sol"; + +interface ISSVClusters is ISSVNetworkCore { + /// @notice Registers a new validator on the SSV Network + /// @param publicKey The public key of the new validator + /// @param operatorIds Array of IDs of operators managing this validator + /// @param sharesData Encrypted shares related to the new validator + /// @param amount Amount of SSV tokens to be deposited + /// @param cluster Cluster to be used with the new validator + function registerValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + bytes calldata sharesData, + uint256 amount, + Cluster memory cluster + ) external; + + /// @notice Registers new validators on the SSV Network + /// @param publicKeys The public keys of the new validators + /// @param operatorIds Array of IDs of operators managing this validator + /// @param sharesData Encrypted shares related to the new validators + /// @param amount Amount of SSV tokens to be deposited + /// @param cluster Cluster to be used with the new validator + function bulkRegisterValidator( + bytes[] calldata publicKeys, + uint64[] memory operatorIds, + bytes[] calldata sharesData, + uint256 amount, + Cluster memory cluster + ) external; + + /// @notice Removes an existing validator from the SSV Network + /// @param publicKey The public key of the validator to be removed + /// @param operatorIds Array of IDs of operators managing the validator + /// @param cluster Cluster associated with the validator + function removeValidator(bytes calldata publicKey, uint64[] memory operatorIds, Cluster memory cluster) external; + + /// @notice Bulk removes a set of existing validators in the same cluster from the SSV Network + /// @notice Reverts if publicKeys contains duplicates or non-existent validators + /// @param publicKeys The public keys of the validators to be removed + /// @param operatorIds Array of IDs of operators managing the validator + /// @param cluster Cluster associated with the validator + function bulkRemoveValidator( + bytes[] calldata publicKeys, + uint64[] memory operatorIds, + Cluster memory cluster + ) external; + + /**************************/ + /* Cluster External Functions */ + /**************************/ + + /// @notice Liquidates a cluster + /// @param owner The owner of the cluster + /// @param operatorIds Array of IDs of operators managing the cluster + /// @param cluster Cluster to be liquidated + function liquidate(address owner, uint64[] memory operatorIds, Cluster memory cluster) external; + + /// @notice Reactivates a cluster + /// @param operatorIds Array of IDs of operators managing the cluster + /// @param amount Amount of SSV tokens to be deposited for reactivation + /// @param cluster Cluster to be reactivated + function reactivate(uint64[] memory operatorIds, uint256 amount, Cluster memory cluster) external; + + /******************************/ + /* Balance External Functions */ + /******************************/ + + /// @notice Deposits tokens into a cluster + /// @param owner The owner of the cluster + /// @param operatorIds Array of IDs of operators managing the cluster + /// @param amount Amount of SSV tokens to be deposited + /// @param cluster Cluster where the deposit will be made + function deposit(address owner, uint64[] memory operatorIds, uint256 amount, Cluster memory cluster) external; + + /// @notice Withdraws tokens from a cluster + /// @param operatorIds Array of IDs of operators managing the cluster + /// @param tokenAmount Amount of SSV tokens to be withdrawn + /// @param cluster Cluster where the withdrawal will be made + function withdraw(uint64[] memory operatorIds, uint256 tokenAmount, Cluster memory cluster) external; + + /// @notice Fires the exit event for a validator + /// @param publicKey The public key of the validator to be exited + /// @param operatorIds Array of IDs of operators managing the validator + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external; + + /// @notice Fires the exit event for a set of validators + /// @param publicKeys The public keys of the validators to be exited + /// @param operatorIds Array of IDs of operators managing the validators + function bulkExitValidator(bytes[] calldata publicKeys, uint64[] calldata operatorIds) external; + + /** + * @dev Emitted when the validator has been added. + * @param publicKey The public key of a validator. + * @param operatorIds The operator ids list. + * @param shares snappy compressed shares(a set of encrypted and public shares). + * @param cluster All the cluster data. + */ + event ValidatorAdded(address indexed owner, uint64[] operatorIds, bytes publicKey, bytes shares, Cluster cluster); + + /** + * @dev Emitted when the validator is removed. + * @param publicKey The public key of a validator. + * @param operatorIds The operator ids list. + * @param cluster All the cluster data. + */ + event ValidatorRemoved(address indexed owner, uint64[] operatorIds, bytes publicKey, Cluster cluster); + + /** + * @dev Emitted when a cluster is liquidated. + * @param owner The owner of the liquidated cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param cluster The liquidated cluster data. + */ + event ClusterLiquidated(address indexed owner, uint64[] operatorIds, Cluster cluster); + + /** + * @dev Emitted when a cluster is reactivated. + * @param owner The owner of the reactivated cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param cluster The reactivated cluster data. + */ + event ClusterReactivated(address indexed owner, uint64[] operatorIds, Cluster cluster); + + /** + * @dev Emitted when tokens are withdrawn from a cluster. + * @param owner The owner of the cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param value The amount of tokens withdrawn. + * @param cluster The cluster from which tokens were withdrawn. + */ + event ClusterWithdrawn(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster); + + /** + * @dev Emitted when tokens are deposited into a cluster. + * @param owner The owner of the cluster. + * @param operatorIds The operator IDs managing the cluster. + * @param value The amount of SSV tokens deposited. + * @param cluster The cluster into which SSV tokens were deposited. + */ + event ClusterDeposited(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster); + + /** + * @dev Emitted when a validator begins the exit process. + * @param owner The owner of the exiting validator. + * @param operatorIds The operator IDs managing the validator. + * @param publicKey The public key of the exiting validator. + */ + event ValidatorExited(address indexed owner, uint64[] operatorIds, bytes publicKey); +} diff --git a/contracts/libraries/CoreLib.sol b/contracts/libraries/CoreLib.sol new file mode 100644 index 00000000..c2b7cbe7 --- /dev/null +++ b/contracts/libraries/CoreLib.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./SSVStorage.sol"; + +library CoreLib { + event ModuleUpgraded(SSVModules indexed moduleId, address moduleAddress); + + function getVersion() internal pure returns (string memory) { + return "v1.1.0"; + } + + function transferBalance(address to, uint256 amount) internal { + if (!SSVStorage.load().token.transfer(to, amount)) { + revert ISSVNetworkCore.TokenTransferFailed(); + } + } + + function deposit(uint256 amount) internal { + if (!SSVStorage.load().token.transferFrom(msg.sender, address(this), amount)) { + revert ISSVNetworkCore.TokenTransferFailed(); + } + } + + /** + * @dev Returns true if `account` is a contract. + * + * [IMPORTANT] + * ==== + * It is unsafe to assume that an address for which this function returns + * false is an externally-owned account (EOA) and not a contract. + * + * Among others, `isContract` will return false for the following + * types of addresses: + * + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * ==== + */ + function isContract(address account) internal view returns (bool) { + if (account == address(0)) { + return false; + } + // This method relies on extcodesize, which returns 0 for contracts in + // construction, since the code is only stored at the end of the + // constructor execution. + + uint256 size; + // solhint-disable-next-line no-inline-assembly + assembly { + size := extcodesize(account) + } + return size > 0; + } + + + function setModuleContract(SSVModules moduleId, address moduleAddress) internal { + if (!isContract(moduleAddress)) revert ISSVNetworkCore.TargetModuleDoesNotExist(); + + SSVStorage.load().ssvContracts[moduleId] = moduleAddress; + emit ModuleUpgraded(moduleId, moduleAddress); + } +} diff --git a/contracts/libraries/OperatorLib.sol b/contracts/libraries/OperatorLib.sol new file mode 100644 index 00000000..cf2adcd4 --- /dev/null +++ b/contracts/libraries/OperatorLib.sol @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../interfaces/ISSVNetworkCore.sol"; +import "./SSVStorage.sol"; +import "./SSVStorageProtocol.sol"; +import "./Types.sol"; + +library OperatorLib { + using Types64 for uint64; + + function updateSnapshot(ISSVNetworkCore.Operator memory operator) internal view { + uint64 blockDiffFee = (uint32(block.number) - operator.snapshot.block) * operator.fee; + + operator.snapshot.index += blockDiffFee; + operator.snapshot.balance += blockDiffFee * operator.validatorCount; + operator.snapshot.block = uint32(block.number); + } + + function updateSnapshotSt(ISSVNetworkCore.Operator storage operator) internal { + uint64 blockDiffFee = (uint32(block.number) - operator.snapshot.block) * operator.fee; + + operator.snapshot.index += blockDiffFee; + operator.snapshot.balance += blockDiffFee * operator.validatorCount; + operator.snapshot.block = uint32(block.number); + } + + function checkOwner(ISSVNetworkCore.Operator memory operator) internal view { + if (operator.snapshot.block == 0) revert ISSVNetworkCore.OperatorDoesNotExist(); + if (operator.owner != msg.sender) revert ISSVNetworkCore.CallerNotOwner(); + } + + function updateClusterOperators( + uint64[] memory operatorIds, + bool isRegisteringValidator, + bool increaseValidatorCount, + uint32 deltaValidatorCount, + StorageData storage s, + StorageProtocol storage sp + ) internal returns (uint64 cumulativeIndex, uint64 cumulativeFee) { + uint256 operatorsLength = operatorIds.length; + + for (uint256 i; i < operatorsLength; ) { + uint64 operatorId = operatorIds[i]; + + if (!isRegisteringValidator) { + ISSVNetworkCore.Operator storage operator = s.operators[operatorId]; + + if (operator.snapshot.block != 0) { + updateSnapshotSt(operator); + if (!increaseValidatorCount) { + operator.validatorCount -= deltaValidatorCount; + } else if ((operator.validatorCount += deltaValidatorCount) > sp.validatorsPerOperatorLimit) { + revert ISSVNetworkCore.ExceedValidatorLimit(); + } + + cumulativeFee += operator.fee; + } + cumulativeIndex += operator.snapshot.index; + } else { + if (i + 1 < operatorsLength) { + if (operatorId > operatorIds[i + 1]) { + revert ISSVNetworkCore.UnsortedOperatorsList(); + } else if (operatorId == operatorIds[i + 1]) { + revert ISSVNetworkCore.OperatorsListNotUnique(); + } + } + ISSVNetworkCore.Operator memory operator = s.operators[operatorId]; + + if (operator.snapshot.block == 0) { + revert ISSVNetworkCore.OperatorDoesNotExist(); + } + if (operator.whitelisted) { + address whitelisted = s.operatorsWhitelist[operatorId]; + if (whitelisted != address(0) && whitelisted != msg.sender) { + revert ISSVNetworkCore.CallerNotWhitelisted(); + } + } + + updateSnapshot(operator); + if ((operator.validatorCount += deltaValidatorCount) > sp.validatorsPerOperatorLimit) { + revert ISSVNetworkCore.ExceedValidatorLimit(); + } + + cumulativeFee += operator.fee; + cumulativeIndex += operator.snapshot.index; + + s.operators[operatorId] = operator; + } + + unchecked { + ++i; + } + } + } +} diff --git a/contracts/libraries/ValidatorLib.sol b/contracts/libraries/ValidatorLib.sol new file mode 100644 index 00000000..5539719c --- /dev/null +++ b/contracts/libraries/ValidatorLib.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../interfaces/ISSVNetworkCore.sol"; +import "./SSVStorage.sol"; + +library ValidatorLib { + uint64 private constant MIN_OPERATORS_LENGTH = 4; + uint64 private constant MAX_OPERATORS_LENGTH = 13; + uint64 private constant MODULO_OPERATORS_LENGTH = 3; + uint64 private constant PUBLIC_KEY_LENGTH = 48; + + function validateOperatorsLength(uint64[] memory operatorIds) internal pure { + uint256 operatorsLength = operatorIds.length; + + if ( + operatorsLength < MIN_OPERATORS_LENGTH || + operatorsLength > MAX_OPERATORS_LENGTH || + operatorsLength % MODULO_OPERATORS_LENGTH != 1 + ) { + revert ISSVNetworkCore.InvalidOperatorIdsLength(); + } + } + + function registerPublicKey(bytes memory publicKey, uint64[] memory operatorIds, StorageData storage s) internal { + if (publicKey.length != PUBLIC_KEY_LENGTH) { + revert ISSVNetworkCore.InvalidPublicKeyLength(); + } + + bytes32 hashedPk = keccak256(abi.encodePacked(publicKey, msg.sender)); + + if (s.validatorPKs[hashedPk] != bytes32(0)) { + revert ISSVNetworkCore.ValidatorAlreadyExistsWithData(publicKey); + } + + s.validatorPKs[hashedPk] = bytes32(uint256(keccak256(abi.encodePacked(operatorIds))) | uint256(0x01)); // set LSB to 1 + } + + function hashOperatorIds(uint64[] memory operatorIds) internal pure returns (bytes32) { + bytes32 mask = ~bytes32(uint256(1)); // All bits set to 1 except LSB + return keccak256(abi.encodePacked(operatorIds)) & mask; // Clear LSB of provided operator ids + } + + function validateCorrectState(bytes32 validatorData, bytes32 hashedOperatorIds) internal pure returns (bool) { + // All bits set to 1 except LSB + // Clear LSB of stored validator data and compare + return (validatorData & ~bytes32(uint256(1))) == hashedOperatorIds; + } +} diff --git a/contracts/modules/SSVClusters.sol b/contracts/modules/SSVClusters.sol new file mode 100644 index 00000000..f4b6fd4f --- /dev/null +++ b/contracts/modules/SSVClusters.sol @@ -0,0 +1,371 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../interfaces/ISSVClusters.sol"; +import "../libraries/ClusterLib.sol"; +import "../libraries/OperatorLib.sol"; +import "../libraries/ProtocolLib.sol"; +import "../libraries/CoreLib.sol"; +import "../libraries/ValidatorLib.sol"; +import "../libraries/SSVStorage.sol"; +import "../libraries/SSVStorageProtocol.sol"; + +contract SSVClusters is ISSVClusters { + using ClusterLib for Cluster; + using OperatorLib for Operator; + using ProtocolLib for StorageProtocol; + + function registerValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + bytes calldata sharesData, + uint256 amount, + Cluster memory cluster + ) external override { + StorageData storage s = SSVStorage.load(); + StorageProtocol storage sp = SSVStorageProtocol.load(); + + ValidatorLib.validateOperatorsLength(operatorIds); + + ValidatorLib.registerPublicKey(publicKey, operatorIds, s); + + bytes32 hashedCluster = cluster.validateClusterOnRegistration(operatorIds, s); + + cluster.balance += amount; + + cluster.updateClusterOnRegistration(operatorIds, hashedCluster, 1, s, sp); + + if (amount != 0) { + CoreLib.deposit(amount); + } + + emit ValidatorAdded(msg.sender, operatorIds, publicKey, sharesData, cluster); + } + + function bulkRegisterValidator( + bytes[] memory publicKeys, + uint64[] memory operatorIds, + bytes[] calldata sharesData, + uint256 amount, + Cluster memory cluster + ) external override { + if (publicKeys.length != sharesData.length) revert PublicKeysSharesLengthMismatch(); + + StorageData storage s = SSVStorage.load(); + StorageProtocol storage sp = SSVStorageProtocol.load(); + + uint256 validatorsLength = publicKeys.length; + + ValidatorLib.validateOperatorsLength(operatorIds); + + for (uint i; i < validatorsLength; ++i) { + ValidatorLib.registerPublicKey(publicKeys[i], operatorIds, s); + } + bytes32 hashedCluster = cluster.validateClusterOnRegistration(operatorIds, s); + + cluster.balance += amount; + + cluster.updateClusterOnRegistration(operatorIds, hashedCluster, uint32(validatorsLength), s, sp); + + if (amount != 0) { + CoreLib.deposit(amount); + } + + for (uint i; i < validatorsLength; ++i) { + bytes memory pk = publicKeys[i]; + bytes memory sh = sharesData[i]; + + emit ValidatorAdded(msg.sender, operatorIds, pk, sh, cluster); + } + } + + function removeValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + Cluster memory cluster + ) external override { + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(msg.sender, operatorIds, s); + bytes32 hashedOperatorIds = ValidatorLib.hashOperatorIds(operatorIds); + + bytes32 hashedValidator = keccak256(abi.encodePacked(publicKey, msg.sender)); + bytes32 validatorData = s.validatorPKs[hashedValidator]; + + if (validatorData == bytes32(0)) { + revert ISSVNetworkCore.ValidatorDoesNotExist(); + } + + if (!ValidatorLib.validateCorrectState(validatorData, hashedOperatorIds)) + revert ISSVNetworkCore.IncorrectValidatorStateWithData(publicKey); + + delete s.validatorPKs[hashedValidator]; + + if (cluster.active) { + StorageProtocol storage sp = SSVStorageProtocol.load(); + (uint64 clusterIndex, ) = OperatorLib.updateClusterOperators(operatorIds, false, false, 1, s, sp); + + cluster.updateClusterData(clusterIndex, sp.currentNetworkFeeIndex()); + + sp.updateDAO(false, 1); + } + + --cluster.validatorCount; + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + emit ValidatorRemoved(msg.sender, operatorIds, publicKey, cluster); + } + + function bulkRemoveValidator( + bytes[] calldata publicKeys, + uint64[] memory operatorIds, + Cluster memory cluster + ) external override { + uint256 validatorsLength = publicKeys.length; + + if (validatorsLength == 0) { + revert ISSVNetworkCore.ValidatorDoesNotExist(); + } + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(msg.sender, operatorIds, s); + bytes32 hashedOperatorIds = ValidatorLib.hashOperatorIds(operatorIds); + + bytes32 hashedValidator; + bytes32 validatorData; + + uint32 validatorsRemoved; + + for (uint i; i < validatorsLength; ++i) { + hashedValidator = keccak256(abi.encodePacked(publicKeys[i], msg.sender)); + validatorData = s.validatorPKs[hashedValidator]; + + if (!ValidatorLib.validateCorrectState(validatorData, hashedOperatorIds)) + revert ISSVNetworkCore.IncorrectValidatorStateWithData(publicKeys[i]); + + delete s.validatorPKs[hashedValidator]; + validatorsRemoved++; + } + + if (cluster.active) { + StorageProtocol storage sp = SSVStorageProtocol.load(); + (uint64 clusterIndex, ) = OperatorLib.updateClusterOperators( + operatorIds, + false, + false, + validatorsRemoved, + s, + sp + ); + + cluster.updateClusterData(clusterIndex, sp.currentNetworkFeeIndex()); + + sp.updateDAO(false, validatorsRemoved); + } + + cluster.validatorCount -= validatorsRemoved; + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + for (uint i; i < validatorsLength; ++i) { + emit ValidatorRemoved(msg.sender, operatorIds, publicKeys[i], cluster); + } + } + + function liquidate(address clusterOwner, uint64[] calldata operatorIds, Cluster memory cluster) external override { + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(clusterOwner, operatorIds, s); + cluster.validateClusterIsNotLiquidated(); + + StorageProtocol storage sp = SSVStorageProtocol.load(); + + (uint64 clusterIndex, uint64 burnRate) = OperatorLib.updateClusterOperators( + operatorIds, + false, + false, + cluster.validatorCount, + s, + sp + ); + + cluster.updateBalance(clusterIndex, sp.currentNetworkFeeIndex()); + + uint256 balanceLiquidatable; + + if ( + clusterOwner != msg.sender && + !cluster.isLiquidatable( + burnRate, + sp.networkFee, + sp.minimumBlocksBeforeLiquidation, + sp.minimumLiquidationCollateral + ) + ) { + revert ClusterNotLiquidatable(); + } + + sp.updateDAO(false, cluster.validatorCount); + + if (cluster.balance != 0) { + balanceLiquidatable = cluster.balance; + cluster.balance = 0; + } + cluster.index = 0; + cluster.networkFeeIndex = 0; + cluster.active = false; + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + if (balanceLiquidatable != 0) { + CoreLib.transferBalance(msg.sender, balanceLiquidatable); + } + + emit ClusterLiquidated(clusterOwner, operatorIds, cluster); + } + + function reactivate(uint64[] calldata operatorIds, uint256 amount, Cluster memory cluster) external override { + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(msg.sender, operatorIds, s); + if (cluster.active) revert ClusterAlreadyEnabled(); + + StorageProtocol storage sp = SSVStorageProtocol.load(); + + (uint64 clusterIndex, uint64 burnRate) = OperatorLib.updateClusterOperators( + operatorIds, + false, + true, + cluster.validatorCount, + s, + sp + ); + + cluster.balance += amount; + cluster.active = true; + cluster.index = clusterIndex; + cluster.networkFeeIndex = sp.currentNetworkFeeIndex(); + + sp.updateDAO(true, cluster.validatorCount); + + if ( + cluster.isLiquidatable( + burnRate, + sp.networkFee, + sp.minimumBlocksBeforeLiquidation, + sp.minimumLiquidationCollateral + ) + ) { + revert InsufficientBalance(); + } + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + if (amount > 0) { + CoreLib.deposit(amount); + } + + emit ClusterReactivated(msg.sender, operatorIds, cluster); + } + + function deposit( + address clusterOwner, + uint64[] calldata operatorIds, + uint256 amount, + Cluster memory cluster + ) external override { + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(clusterOwner, operatorIds, s); + + cluster.balance += amount; + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + CoreLib.deposit(amount); + + emit ClusterDeposited(clusterOwner, operatorIds, amount, cluster); + } + + function withdraw(uint64[] calldata operatorIds, uint256 amount, Cluster memory cluster) external override { + StorageData storage s = SSVStorage.load(); + + bytes32 hashedCluster = cluster.validateHashedCluster(msg.sender, operatorIds, s); + cluster.validateClusterIsNotLiquidated(); + + StorageProtocol storage sp = SSVStorageProtocol.load(); + + uint64 burnRate; + if (cluster.active) { + uint64 clusterIndex; + { + uint256 operatorsLength = operatorIds.length; + for (uint256 i; i < operatorsLength; ) { + Operator storage operator = SSVStorage.load().operators[operatorIds[i]]; + clusterIndex += + operator.snapshot.index + + (uint64(block.number) - operator.snapshot.block) * + operator.fee; + burnRate += operator.fee; + unchecked { + ++i; + } + } + } + + cluster.updateClusterData(clusterIndex, sp.currentNetworkFeeIndex()); + } + if (cluster.balance < amount) revert InsufficientBalance(); + + cluster.balance -= amount; + + if ( + cluster.active && + cluster.validatorCount != 0 && + cluster.isLiquidatable( + burnRate, + sp.networkFee, + sp.minimumBlocksBeforeLiquidation, + sp.minimumLiquidationCollateral + ) + ) { + revert InsufficientBalance(); + } + + s.clusters[hashedCluster] = cluster.hashClusterData(); + + CoreLib.transferBalance(msg.sender, amount); + + emit ClusterWithdrawn(msg.sender, operatorIds, amount, cluster); + } + + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + if ( + !ValidatorLib.validateCorrectState( + SSVStorage.load().validatorPKs[keccak256(abi.encodePacked(publicKey, msg.sender))], + ValidatorLib.hashOperatorIds(operatorIds) + ) + ) revert ISSVNetworkCore.IncorrectValidatorStateWithData(publicKey); + + emit ValidatorExited(msg.sender, operatorIds, publicKey); + } + + function bulkExitValidator(bytes[] calldata publicKeys, uint64[] calldata operatorIds) external override { + if (publicKeys.length == 0) { + revert ISSVNetworkCore.ValidatorDoesNotExist(); + } + bytes32 hashedOperatorIds = ValidatorLib.hashOperatorIds(operatorIds); + + for (uint i; i < publicKeys.length; ++i) { + if ( + !ValidatorLib.validateCorrectState( + SSVStorage.load().validatorPKs[keccak256(abi.encodePacked(publicKeys[i], msg.sender))], + hashedOperatorIds + ) + ) revert ISSVNetworkCore.IncorrectValidatorStateWithData(publicKeys[i]); + + emit ValidatorExited(msg.sender, operatorIds, publicKeys[i]); + } + } +} diff --git a/contracts/modules/SSVOperators.sol b/contracts/modules/SSVOperators.sol new file mode 100644 index 00000000..b27455f7 --- /dev/null +++ b/contracts/modules/SSVOperators.sol @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../interfaces/ISSVOperators.sol"; +import "../libraries/Types.sol"; +import "../libraries/SSVStorage.sol"; +import "../libraries/SSVStorageProtocol.sol"; +import "../libraries/OperatorLib.sol"; +import "../libraries/CoreLib.sol"; + +import "@openzeppelin/contracts/utils/Counters.sol"; + +contract SSVOperators is ISSVOperators { + uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; + uint64 private constant PRECISION_FACTOR = 10_000; + + using Types256 for uint256; + using Types64 for uint64; + using Counters for Counters.Counter; + using OperatorLib for Operator; + + /*******************************/ + /* Operator External Functions */ + /*******************************/ + + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) { + revert ISSVNetworkCore.FeeTooLow(); + } + if (fee > SSVStorageProtocol.load().operatorMaxFee) { + revert ISSVNetworkCore.FeeTooHigh(); + } + + StorageData storage s = SSVStorage.load(); + + bytes32 hashedPk = keccak256(publicKey); + if (s.operatorsPKs[hashedPk] != 0) revert ISSVNetworkCore.OperatorAlreadyExists(); + + s.lastOperatorId.increment(); + id = uint64(s.lastOperatorId.current()); + s.operators[id] = Operator({ + owner: msg.sender, + snapshot: ISSVNetworkCore.Snapshot({block: uint32(block.number), index: 0, balance: 0}), + validatorCount: 0, + fee: fee.shrink(), + whitelisted: false + }); + s.operatorsPKs[hashedPk] = id; + + emit OperatorAdded(id, msg.sender, publicKey, fee); + } + + function removeOperator(uint64 operatorId) external override { + StorageData storage s = SSVStorage.load(); + Operator memory operator = s.operators[operatorId]; + operator.checkOwner(); + + operator.updateSnapshot(); + uint64 currentBalance = operator.snapshot.balance; + + operator.snapshot.block = 0; + operator.snapshot.balance = 0; + operator.validatorCount = 0; + operator.fee = 0; + + s.operators[operatorId] = operator; + + delete s.operatorsWhitelist[operatorId]; + + if (currentBalance > 0) { + _transferOperatorBalanceUnsafe(operatorId, currentBalance.expand()); + } + emit OperatorRemoved(operatorId); + } + + function setOperatorWhitelist(uint64 operatorId, address whitelisted) external { + StorageData storage s = SSVStorage.load(); + s.operators[operatorId].checkOwner(); + + if (whitelisted == address(0)) { + s.operators[operatorId].whitelisted = false; + } else { + s.operators[operatorId].whitelisted = true; + } + + s.operatorsWhitelist[operatorId] = whitelisted; + emit OperatorWhitelistUpdated(operatorId, whitelisted); + } + + function declareOperatorFee(uint64 operatorId, uint256 fee) external override { + StorageData storage s = SSVStorage.load(); + s.operators[operatorId].checkOwner(); + + StorageProtocol storage sp = SSVStorageProtocol.load(); + + if (fee != 0 && fee < MINIMAL_OPERATOR_FEE) revert FeeTooLow(); + if (fee > sp.operatorMaxFee) revert FeeTooHigh(); + + uint64 operatorFee = s.operators[operatorId].fee; + uint64 shrunkFee = fee.shrink(); + + if (operatorFee == shrunkFee) { + revert SameFeeChangeNotAllowed(); + } else if (shrunkFee != 0 && operatorFee == 0) { + revert FeeIncreaseNotAllowed(); + } + + // @dev 100% = 10000, 10% = 1000 - using 10000 to represent 2 digit precision + uint64 maxAllowedFee = (operatorFee * (PRECISION_FACTOR + sp.operatorMaxFeeIncrease)) / PRECISION_FACTOR; + + if (shrunkFee > maxAllowedFee) revert FeeExceedsIncreaseLimit(); + + s.operatorFeeChangeRequests[operatorId] = OperatorFeeChangeRequest( + shrunkFee, + uint64(block.timestamp) + sp.declareOperatorFeePeriod, + uint64(block.timestamp) + sp.declareOperatorFeePeriod + sp.executeOperatorFeePeriod + ); + emit OperatorFeeDeclared(msg.sender, operatorId, block.number, fee); + } + + function executeOperatorFee(uint64 operatorId) external override { + StorageData storage s = SSVStorage.load(); + Operator memory operator = s.operators[operatorId]; + operator.checkOwner(); + + OperatorFeeChangeRequest memory feeChangeRequest = s.operatorFeeChangeRequests[operatorId]; + + if (feeChangeRequest.approvalBeginTime == 0) revert NoFeeDeclared(); + + if ( + block.timestamp < feeChangeRequest.approvalBeginTime || block.timestamp > feeChangeRequest.approvalEndTime + ) { + revert ApprovalNotWithinTimeframe(); + } + + if (feeChangeRequest.fee.expand() > SSVStorageProtocol.load().operatorMaxFee) revert FeeTooHigh(); + + operator.updateSnapshot(); + operator.fee = feeChangeRequest.fee; + s.operators[operatorId] = operator; + + delete s.operatorFeeChangeRequests[operatorId]; + + emit OperatorFeeExecuted(msg.sender, operatorId, block.number, feeChangeRequest.fee.expand()); + } + + function cancelDeclaredOperatorFee(uint64 operatorId) external override { + StorageData storage s = SSVStorage.load(); + s.operators[operatorId].checkOwner(); + + if (s.operatorFeeChangeRequests[operatorId].approvalBeginTime == 0) revert NoFeeDeclared(); + + delete s.operatorFeeChangeRequests[operatorId]; + + emit OperatorFeeDeclarationCancelled(msg.sender, operatorId); + } + + function reduceOperatorFee(uint64 operatorId, uint256 fee) external override { + StorageData storage s = SSVStorage.load(); + Operator memory operator = s.operators[operatorId]; + operator.checkOwner(); + + uint64 shrunkAmount = fee.shrink(); + if (shrunkAmount >= operator.fee) revert FeeIncreaseNotAllowed(); + + operator.updateSnapshot(); + operator.fee = shrunkAmount; + s.operators[operatorId] = operator; + + delete s.operatorFeeChangeRequests[operatorId]; + + emit OperatorFeeExecuted(msg.sender, operatorId, block.number, fee); + } + + function withdrawOperatorEarnings(uint64 operatorId, uint256 amount) external override { + _withdrawOperatorEarnings(operatorId, amount); + } + + function withdrawAllOperatorEarnings(uint64 operatorId) external override { + _withdrawOperatorEarnings(operatorId, 0); + } + + // private functions + function _withdrawOperatorEarnings(uint64 operatorId, uint256 amount) private { + StorageData storage s = SSVStorage.load(); + Operator memory operator = s.operators[operatorId]; + operator.checkOwner(); + + operator.updateSnapshot(); + + uint64 shrunkWithdrawn; + uint64 shrunkAmount = amount.shrink(); + + if (amount == 0 && operator.snapshot.balance > 0) { + shrunkWithdrawn = operator.snapshot.balance; + } else if (amount > 0 && operator.snapshot.balance >= shrunkAmount) { + shrunkWithdrawn = shrunkAmount; + } else { + revert InsufficientBalance(); + } + + operator.snapshot.balance -= shrunkWithdrawn; + + s.operators[operatorId] = operator; + + _transferOperatorBalanceUnsafe(operatorId, shrunkWithdrawn.expand()); + } + + function _transferOperatorBalanceUnsafe(uint64 operatorId, uint256 amount) private { + CoreLib.transferBalance(msg.sender, amount); + emit OperatorWithdrawn(msg.sender, operatorId, amount); + } +} diff --git a/contracts/test/SSVNetworkUpgrade.sol b/contracts/test/SSVNetworkUpgrade.sol new file mode 100644 index 00000000..c92edfd3 --- /dev/null +++ b/contracts/test/SSVNetworkUpgrade.sol @@ -0,0 +1,412 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "./interfaces/ISSVNetworkT.sol"; + +import "../interfaces/ISSVClusters.sol"; +import "../interfaces/ISSVOperators.sol"; +import "../interfaces/ISSVDAO.sol"; +import "../interfaces/ISSVViews.sol"; + +import "../libraries/Types.sol"; +import "../libraries/CoreLib.sol"; +import "../libraries/SSVStorage.sol"; +import "../libraries/SSVStorageProtocol.sol"; +import "../libraries/OperatorLib.sol"; +import "../libraries/ClusterLib.sol"; + +import {SSVModules} from "../libraries/SSVStorage.sol"; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; + +contract SSVNetworkUpgrade is + UUPSUpgradeable, + Ownable2StepUpgradeable, + ISSVNetworkT, + ISSVOperators, + ISSVClusters, + ISSVDAO +{ + using Types256 for uint256; + using ClusterLib for Cluster; + + /****************/ + /* Initializers */ + /****************/ + + function initialize( + IERC20 token_, + ISSVOperators ssvOperators_, + ISSVClusters ssvClusters_, + ISSVDAO ssvDAO_, + ISSVViews ssvViews_, + uint64 minimumBlocksBeforeLiquidation_, + uint256 minimumLiquidationCollateral_, + uint32 validatorsPerOperatorLimit_, + uint64 declareOperatorFeePeriod_, + uint64 executeOperatorFeePeriod_, + uint64 operatorMaxFeeIncrease_ + ) external override initializer onlyProxy { + __UUPSUpgradeable_init(); + __Ownable_init_unchained(); + __SSVNetwork_init_unchained( + token_, + ssvOperators_, + ssvClusters_, + ssvDAO_, + ssvViews_, + minimumBlocksBeforeLiquidation_, + minimumLiquidationCollateral_, + validatorsPerOperatorLimit_, + declareOperatorFeePeriod_, + executeOperatorFeePeriod_, + operatorMaxFeeIncrease_ + ); + } + + function __SSVNetwork_init_unchained( + IERC20 token_, + ISSVOperators ssvOperators_, + ISSVClusters ssvClusters_, + ISSVDAO ssvDAO_, + ISSVViews ssvViews_, + uint64 minimumBlocksBeforeLiquidation_, + uint256 minimumLiquidationCollateral_, + uint32 validatorsPerOperatorLimit_, + uint64 declareOperatorFeePeriod_, + uint64 executeOperatorFeePeriod_, + uint64 operatorMaxFeeIncrease_ + ) internal onlyInitializing { + StorageData storage s = SSVStorage.load(); + StorageProtocol storage sp = SSVStorageProtocol.load(); + s.token = token_; + s.ssvContracts[SSVModules.SSV_OPERATORS] = address(ssvOperators_); + s.ssvContracts[SSVModules.SSV_CLUSTERS] = address(ssvClusters_); + s.ssvContracts[SSVModules.SSV_DAO] = address(ssvDAO_); + s.ssvContracts[SSVModules.SSV_VIEWS] = address(ssvViews_); + sp.minimumBlocksBeforeLiquidation = minimumBlocksBeforeLiquidation_; + sp.minimumLiquidationCollateral = minimumLiquidationCollateral_.shrink(); + sp.validatorsPerOperatorLimit = validatorsPerOperatorLimit_; + sp.declareOperatorFeePeriod = declareOperatorFeePeriod_; + sp.executeOperatorFeePeriod = executeOperatorFeePeriod_; + sp.operatorMaxFeeIncrease = operatorMaxFeeIncrease_; + } + + /*****************/ + /* UUPS required */ + /*****************/ + + function _authorizeUpgrade(address) internal override onlyOwner {} + + fallback() external { + address ssvViews = SSVStorage.load().ssvContracts[SSVModules.SSV_VIEWS]; + assembly { + calldatacopy(0, 0, calldatasize()) + let result := delegatecall(gas(), ssvViews, 0, calldatasize(), 0, 0) + returndatacopy(0, 0, returndatasize()) + if eq(result, 0) { + revert(0, returndatasize()) + } + return(0, returndatasize()) + } + } + + /*******************************/ + /* Operator External Functions */ + /*******************************/ + + function registerOperator(bytes calldata publicKey, uint256 fee) external override returns (uint64 id) { + bytes memory result = _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("registerOperator(bytes,uint256)", publicKey, fee) + ); + return abi.decode(result, (uint64)); + } + + function removeOperator(uint64 operatorId) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("removeOperator(uint64)", operatorId) + ); + } + + function setOperatorWhitelist(uint64 operatorId, address whitelisted) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("setOperatorWhitelist(uint64,address)", operatorId, whitelisted) + ); + } + + function declareOperatorFee(uint64 operatorId, uint256 fee) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("declareOperatorFee(uint64,uint256)", operatorId, fee) + ); + } + + function executeOperatorFee(uint64 operatorId) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("executeOperatorFee(uint64)", operatorId) + ); + } + + function cancelDeclaredOperatorFee(uint64 operatorId) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("cancelDeclaredOperatorFee(uint64)", operatorId) + ); + } + + function reduceOperatorFee(uint64 operatorId, uint256 fee) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("reduceOperatorFee(uint64,uint256)", operatorId, fee) + ); + } + + function setFeeRecipientAddress(address recipientAddress) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("setFeeRecipientAddress(address)", recipientAddress) + ); + } + + function withdrawOperatorEarnings(uint64 operatorId, uint256 amount) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("withdrawOperatorEarnings(uint64,uint256)", operatorId, amount) + ); + } + + function withdrawAllOperatorEarnings(uint64 operatorId) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_OPERATORS], + abi.encodeWithSignature("withdrawOperatorEarnings(uint64)", operatorId) + ); + } + + function registerValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + bytes calldata shares, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "registerValidator(bytes[],uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))", + publicKey, + operatorIds, + shares, + amount, + cluster + ) + ); + } + + function bulkRegisterValidator( + bytes[] calldata publicKey, + uint64[] memory operatorIds, + bytes[] calldata shares, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "registerValidator(bytes[],uint64[],bytes,uint256,(uint32,uint64,uint64,bool,uint256))", + publicKey, + operatorIds, + shares, + amount, + cluster + ) + ); + } + + function removeValidator( + bytes calldata publicKey, + uint64[] calldata operatorIds, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "removeValidator(bytes,uint64[],(uint32,uint64,uint64,bool,uint256))", + publicKey, + operatorIds, + cluster + ) + ); + } + + function bulkRemoveValidator( + bytes[] calldata publicKeys, + uint64[] calldata operatorIds, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "bulkRemoveValidator(bytes[],uint64[],(uint32,uint64,uint64,bool,uint256))", + publicKeys, + operatorIds, + cluster + ) + ); + } + + function liquidate(address owner, uint64[] calldata operatorIds, ISSVNetworkCore.Cluster memory cluster) external { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "liquidate(address,uint64[],(uint32,uint64,uint64,bool,uint256))", + owner, + operatorIds, + cluster + ) + ); + } + + function reactivate( + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "reactivate(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))", + operatorIds, + amount, + cluster + ) + ); + } + + function deposit( + address owner, + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "deposit(address,uint64[],uint256,(uint32,uint64,uint64,bool,uint256))", + owner, + operatorIds, + amount, + cluster + ) + ); + } + + function withdraw( + uint64[] calldata operatorIds, + uint256 amount, + ISSVNetworkCore.Cluster memory cluster + ) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature( + "withdraw(uint64[],uint256,(uint32,uint64,uint64,bool,uint256))", + operatorIds, + amount, + cluster + ) + ); + } + + function exitValidator(bytes calldata publicKey, uint64[] calldata operatorIds) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature("exitValidator(bytes,uint64[]))", publicKey, operatorIds) + ); + } + + function bulkExitValidator(bytes[] calldata publicKeys, uint64[] calldata operatorIds) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_CLUSTERS], + abi.encodeWithSignature("bulkExitValidator(bytes[],uint64[]))", publicKeys, operatorIds) + ); + } + + function updateNetworkFee(uint256 fee) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateNetworkFee(uint256)", fee) + ); + } + + function withdrawNetworkEarnings(uint256 amount) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("withdrawNetworkEarnings(uint256)", amount) + ); + } + + function updateOperatorFeeIncreaseLimit(uint64 percentage) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateOperatorFeeIncreaseLimit(uint64)", percentage) + ); + } + + function updateDeclareOperatorFeePeriod(uint64 timeInSeconds) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateDeclareOperatorFeePeriod(uint64)", timeInSeconds) + ); + } + + function updateExecuteOperatorFeePeriod(uint64 timeInSeconds) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateExecuteOperatorFeePeriod(uint64)", timeInSeconds) + ); + } + + function updateLiquidationThresholdPeriod(uint64 blocks) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateLiquidationThresholdPeriod(uint64)", blocks) + ); + } + + function updateMinimumLiquidationCollateral(uint256 amount) external override onlyOwner { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateMinimumLiquidationCollateral(uint256)", amount) + ); + } + + function updateMaximumOperatorFee(uint64 maxFee) external override { + _delegateCall( + SSVStorage.load().ssvContracts[SSVModules.SSV_DAO], + abi.encodeWithSignature("updateMaximumOperatorFee(uint64)", maxFee) + ); + } + + function _delegateCall(address ssvModule, bytes memory callMessage) internal returns (bytes memory) { + /// @custom:oz-upgrades-unsafe-allow delegatecall + (bool success, bytes memory result) = ssvModule.delegatecall(callMessage); + if (!success && result.length > 0) { + // solhint-disable-next-line no-inline-assembly + assembly { + let returndata_size := mload(result) + revert(add(32, result), returndata_size) + } + } + return result; + } + + // Upgrade functions + function updateModule(SSVModules moduleId, address moduleAddress) external onlyOwner { + CoreLib.setModuleContract(moduleId, moduleAddress); + } +} diff --git a/contracts/test/libraries/CoreLibT.sol b/contracts/test/libraries/CoreLibT.sol new file mode 100644 index 00000000..285b1365 --- /dev/null +++ b/contracts/test/libraries/CoreLibT.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../../libraries/SSVStorage.sol"; + +library CoreLibT { + + function getVersion() internal pure returns (string memory) { + return "v1.1.0"; + } + + function transfer(address to, uint256 amount) internal { + if (!SSVStorage.load().token.transfer(to, amount)) { + revert ISSVNetworkCore.TokenTransferFailed(); + } + } +} \ No newline at end of file diff --git a/contracts/token/SSVToken.sol b/contracts/token/SSVToken.sol new file mode 100644 index 00000000..48165768 --- /dev/null +++ b/contracts/token/SSVToken.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.4; + +import "@openzeppelin/contracts/utils/Context.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; + +/** + * @title SSV Token + */ +contract SSVToken is Ownable, ERC20, ERC20Burnable { + constructor() ERC20("SSV Token", "SSV") { + _mint(msg.sender, 1000000000000000000000); + } + + /** + * @dev Mint tokens + * @param to The target address + * @param amount The amount of token to mint + */ + function mint(address to, uint256 amount) external onlyOwner { + _mint(to, amount); + } +} diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json deleted file mode 100644 index ea844460..00000000 --- a/crytic-export/combined_solc.json +++ /dev/null @@ -1 +0,0 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol": {"AST": {"absolutePath": "contracts/echidna/Operators.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "ISSVOperators": [2054], "OperatorLib": [2433], "Operators": [665], "ProtocolLib": [833], "SSVModules": [2443], "SSVOperators": [1670], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 666, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/modules/SSVOperators.sol", "file": "../modules/SSVOperators.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 666, "sourceUnit": 1671, "src": "70:37:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 666, "sourceUnit": 834, "src": "108:38:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "SSVOperators", "nameLocations": ["170:12:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1670, "src": "170:12:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "170:12:0"}], "canonicalName": "Operators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 665, "linearizedBaseContracts": [665, 1670, 2054, 1786], "name": "Operators", "nameLocation": "157:9:0", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8, "libraryName": {"id": 6, "name": "Types64", "nameLocations": ["195:7:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "195:7:0"}, "nodeType": "UsingForDirective", "src": "189:25:0", "typeName": {"id": 7, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "207:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 11, "libraryName": {"id": 9, "name": "Types256", "nameLocations": ["225:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "225:8:0"}, "nodeType": "UsingForDirective", "src": "219:27:0", "typeName": {"id": 10, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "238:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 15, "libraryName": {"id": 12, "name": "ProtocolLib", "nameLocations": ["257:11:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 833, "src": "257:11:0"}, "nodeType": "UsingForDirective", "src": "251:38:0", "typeName": {"id": 14, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 13, "name": "StorageProtocol", "nameLocations": ["273:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "273:15:0"}, "referencedDeclaration": 1828, "src": "273:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 18, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "319:20:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "295:58:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 16, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "295:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "342:11:0", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 21, "mutability": "constant", "name": "MAXIMUM_OPERATOR_FEE", "nameLocation": "383:20:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "359:65:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 19, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "359:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "37365f3532385f3635305f3030305f303030", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "406:18:0", "typeDescriptions": {"typeIdentifier": "t_rational_76528650000000_by_1", "typeString": "int_const 76528650000000"}, "value": "76_528_650_000_000"}, "visibility": "private"}, {"constant": true, "id": 24, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "454:16:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "430:49:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 22, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "430:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "473:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"constant": false, "functionSelector": "ef3e65f7", "id": 27, "mutability": "mutable", "name": "opIds", "nameLocation": "501:5:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "485:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 25, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "485:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 26, "nodeType": "ArrayTypeName", "src": "485:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "public"}, {"constant": false, "id": 29, "mutability": "mutable", "name": "sault", "nameLocation": "528:5:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "512:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 28, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "512:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 31, "mutability": "mutable", "name": "minNetworkFee", "nameLocation": "554:13:0", "nodeType": "VariableDeclaration", "scope": 665, "src": "539:28:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 30, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "539:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909", "id": 37, "name": "AssertionFailed", "nameLocation": "580:15:0", "nodeType": "EventDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "603:10:0", "nodeType": "VariableDeclaration", "scope": 37, "src": "596:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 32, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "596:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 35, "indexed": false, "mutability": "mutable", "name": "isWhitelisted", "nameLocation": "620:13:0", "nodeType": "VariableDeclaration", "scope": 37, "src": "615:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 34, "name": "bool", "nodeType": "ElementaryTypeName", "src": "615:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "595:39:0"}, "src": "574:61:0"}, {"anonymous": false, "eventSelector": "6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7", "id": 43, "name": "AssertionFailed", "nameLocation": "646:15:0", "nodeType": "EventDefinition", "parameters": {"id": 42, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 39, "indexed": false, "mutability": "mutable", "name": "operatorId", "nameLocation": "669:10:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "662:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 38, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "662:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 41, "indexed": false, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "688:17:0", "nodeType": "VariableDeclaration", "scope": 43, "src": "681:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 40, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "681:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "661:45:0"}, "src": "640:67:0"}, {"body": {"id": 110, "nodeType": "Block", "src": "727:512:0", "statements": [{"expression": {"id": 48, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 46, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "737:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 47, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "753:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 49, "nodeType": "ExpressionStatement", "src": "737:36:0"}, {"assignments": [52], "declarations": [{"constant": false, "id": 52, "mutability": "mutable", "name": "sp", "nameLocation": "807:2:0", "nodeType": "VariableDeclaration", "scope": 110, "src": "783:26:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 51, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 50, "name": "StorageProtocol", "nameLocations": ["783:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "783:15:0"}, "referencedDeclaration": 1828, "src": "783:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 56, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 53, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "812:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 54, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "831:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "812:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 55, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "812:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "783:54:0"}, {"expression": {"id": 61, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 57, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "847:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 59, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "850:30:0", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 1812, "src": "847:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "323134383030", "id": 60, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "883:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_214800_by_1", "typeString": "int_const 214800"}, "value": "214800"}, "src": "847:42:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 62, "nodeType": "ExpressionStatement", "src": "847:42:0"}, {"expression": {"id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 63, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "899:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 65, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "902:28:0", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 1815, "src": "899:31:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"arguments": [{"hexValue": "31303030303030303030303030303030303030", "id": 68, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "941:19:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}, "value": "1000000000000000000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000"}], "id": 67, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "933:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "933:7:0", "typeDescriptions": {}}}, "id": 69, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "933:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "962:6:0", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "933:35:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 71, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "933:37:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "899:71:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 73, "nodeType": "ExpressionStatement", "src": "899:71:0"}, {"expression": {"id": 78, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 74, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "980:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 76, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "983:26:0", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1800, "src": "980:29:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "353030", "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1012:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500"}, "value": "500"}, "src": "980:35:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 79, "nodeType": "ExpressionStatement", "src": "980:35:0"}, {"expression": {"id": 84, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 80, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1025:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 82, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1028:24:0", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "1025:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1055:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "1025:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 85, "nodeType": "ExpressionStatement", "src": "1025:36:0"}, {"expression": {"id": 90, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 86, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1071:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 88, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1074:24:0", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1821, "src": "1071:27:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "363034383030", "id": 89, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1101:6:0", "typeDescriptions": {"typeIdentifier": "t_rational_604800_by_1", "typeString": "int_const 604800"}, "value": "604800"}, "src": "1071:36:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 91, "nodeType": "ExpressionStatement", "src": "1071:36:0"}, {"expression": {"id": 96, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 92, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1117:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 94, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1120:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "1117:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31303030", "id": 95, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1145:4:0", "typeDescriptions": {"typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000"}, "value": "1000"}, "src": "1117:32:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 97, "nodeType": "ExpressionStatement", "src": "1117:32:0"}, {"expression": {"id": 102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 98, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1159:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1162:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "1159:17:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 101, "name": "MAXIMUM_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21, "src": "1179:20:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1159:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 103, "nodeType": "ExpressionStatement", "src": "1159:40:0"}, {"expression": {"arguments": [{"hexValue": "30", "id": 107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1230:1:0", "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"}], "expression": {"id": 104, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, "src": "1210:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 106, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1213:16:0", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 736, "src": "1210:19:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1210:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 109, "nodeType": "ExpressionStatement", "src": "1210:22:0"}]}, "id": 111, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 44, "nodeType": "ParameterList", "parameters": [], "src": "724:2:0"}, "returnParameters": {"id": 45, "nodeType": "ParameterList", "parameters": [], "src": "727:0:0"}, "scope": 665, "src": "713:526:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 119, "nodeType": "Block", "src": "1309:29:0", "statements": [{"expression": {"id": 117, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "1326:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "functionReturnParameters": 116, "id": 118, "nodeType": "Return", "src": "1319:12:0"}]}, "functionSelector": "e1d95a2e", "id": 120, "implemented": true, "kind": "function", "modifiers": [], "name": "getOperatorIds", "nameLocation": "1254:14:0", "nodeType": "FunctionDefinition", "parameters": {"id": 112, "nodeType": "ParameterList", "parameters": [], "src": "1268:2:0"}, "returnParameters": {"id": 116, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 115, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 120, "src": "1292:15:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 113, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1292:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 114, "nodeType": "ArrayTypeName", "src": "1292:8:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}], "src": "1291:17:0"}, "scope": 665, "src": "1245:93:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 136, "nodeType": "Block", "src": "1419:78:0", "statements": [{"expression": {"expression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 127, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1436:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1447:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1436:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1436:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1454:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1436:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 132, "indexExpression": {"id": 131, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 122, "src": "1464:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1436:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 133, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1476:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1436:48:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1485:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1436:54:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "functionReturnParameters": 126, "id": 135, "nodeType": "Return", "src": "1429:61:0"}]}, "functionSelector": "ba2fee51", "id": 137, "implemented": true, "kind": "function", "modifiers": [], "name": "getOperatorBlock", "nameLocation": "1353:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 122, "mutability": "mutable", "name": "operatorId", "nameLocation": "1377:10:0", "nodeType": "VariableDeclaration", "scope": 137, "src": "1370:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 121, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1370:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1369:19:0"}, "returnParameters": {"id": 126, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 125, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 137, "src": "1410:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 124, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1410:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1409:9:0"}, "scope": 665, "src": "1344:153:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 193, "nodeType": "Block", "src": "1565:306:0", "statements": [{"assignments": [143], "declarations": [{"constant": false, "id": 143, "mutability": "mutable", "name": "randomBytes", "nameLocation": "1588:11:0", "nodeType": "VariableDeclaration", "scope": 193, "src": "1575:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 142, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1575:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 148, "initialValue": {"arguments": [{"hexValue": "3438", "id": 146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1612:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}], "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1602:9:0", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 144, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1606:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1602:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1575:40:0"}, {"body": {"id": 186, "nodeType": "Block", "src": "1655:165:0", "statements": [{"expression": {"id": 184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 159, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 143, "src": "1669:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 161, "indexExpression": {"id": 160, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1681:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1669:14:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"arguments": [{"id": 171, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "1748:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 172, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1755:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1761:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1755:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 174, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1772:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1776:6:0", "memberName": "sender", "nodeType": "MemberAccess", "src": "1772:10:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 176, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1784:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 169, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1731:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1735:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1731:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 177, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1731:55:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 168, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1721:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1721:66:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 167, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1716:4:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 166, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1716:4:0", "typeDescriptions": {}}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1716:72:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "323536", "id": 180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1791:3:0", "typeDescriptions": {"typeIdentifier": "t_rational_256_by_1", "typeString": "int_const 256"}, "value": "256"}, "src": "1716:78:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1710:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 164, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1710:5:0", "typeDescriptions": {}}}, "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1710:85:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 163, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1686:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 162, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "1686:6:0", "typeDescriptions": {}}}, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1686:123:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1669:140:0", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 185, "nodeType": "ExpressionStatement", "src": "1669:140:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1642:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "3438", "id": 154, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1646:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "src": "1642:6:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 187, "initializationExpression": {"assignments": [150], "declarations": [{"constant": false, "id": 150, "mutability": "mutable", "name": "i", "nameLocation": "1635:1:0", "nodeType": "VariableDeclaration", "scope": 187, "src": "1630:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 149, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1630:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 152, "initialValue": {"hexValue": "30", "id": 151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1639:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1630:10:0"}, "loopExpression": {"expression": {"id": 157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1650:3:0", "subExpression": {"id": 156, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "1650:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 158, "nodeType": "ExpressionStatement", "src": "1650:3:0"}, "nodeType": "ForStatement", "src": "1625:195:0"}, {"expression": {"id": 189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1829:7:0", "subExpression": {"id": 188, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "1829:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 190, "nodeType": "ExpressionStatement", "src": "1829:7:0"}, {"expression": {"id": 191, "name": "randomBytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 143, "src": "1853:11:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 141, "id": 192, "nodeType": "Return", "src": "1846:18:0"}]}, "id": 194, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePublicKey", "nameLocation": "1512:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 138, "nodeType": "ParameterList", "parameters": [], "src": "1530:2:0"}, "returnParameters": {"id": 141, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 140, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 194, "src": "1551:12:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 139, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1551:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1550:14:0"}, "scope": 665, "src": "1503:368:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 286, "nodeType": "Block", "src": "1952:713:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 204, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "1970:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 205, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "1976:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1970:9:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d6178206d7573742062652067726561746572207468616e206d696e", "id": 207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1981:30:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}, "value": "Max must be greater than min"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_61d0c281bad020c47ec6f2801de2e56dc066854a8b9ad695cfc8a5e8de45a38e", "typeString": "literal_string \"Max must be greater than min\""}], "id": 203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1962:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1962:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 209, "nodeType": "ExpressionStatement", "src": "1962:50:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 211, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2043:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 212, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2049:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2043:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2068:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2043:26:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 216, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "2073:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 217, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2079:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2073:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2098:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2073:26:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2043:56:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f662031302c3030302c303030", "id": 222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2113:45:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e5d72a08f20a34a35846903c0432592a8147529573af61787676b3512f8fdcba", "typeString": "literal_string \"Min and Max must be multiples of 10,000,000\""}, "value": "Min and Max must be multiples of 10,000,000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e5d72a08f20a34a35846903c0432592a8147529573af61787676b3512f8fdcba", "typeString": "literal_string \"Min and Max must be multiples of 10,000,000\""}], "id": 210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2022:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2022:146:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 224, "nodeType": "ExpressionStatement", "src": "2022:146:0"}, {"assignments": [226], "declarations": [{"constant": false, "id": 226, "mutability": "mutable", "name": "randomHash", "nameLocation": "2187:10:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2179:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 225, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2179:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 238, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 232, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "2235:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 233, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2242:5:0", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2248:9:0", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2242:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 230, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2218:3:0", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2222:12:0", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "2218:16:0", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2218:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 229, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2208:9:0", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2208:51:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2200:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2200:7:0", "typeDescriptions": {}}}, "id": 237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2200:60:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2179:81:0"}, {"expression": {"id": 240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2270:7:0", "subExpression": {"id": 239, "name": "sault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "2270:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 241, "nodeType": "ExpressionStatement", "src": "2270:7:0"}, {"assignments": [243], "declarations": [{"constant": false, "id": 243, "mutability": "mutable", "name": "reducedHash", "nameLocation": "2294:11:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2287:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 242, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2287:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 248, "initialValue": {"arguments": [{"id": 246, "name": "randomHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "2315:10:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2308:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 244, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2308:6:0", "typeDescriptions": {}}}, "id": 247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2308:18:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2287:39:0"}, {"assignments": [250], "declarations": [{"constant": false, "id": 250, "mutability": "mutable", "name": "range", "nameLocation": "2435:5:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2427:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 249, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2427:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 259, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 251, "name": "max", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 198, "src": "2444:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 252, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2450:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2444:9:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 254, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2443:11:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 255, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2457:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2443:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2475:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2443:33:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2427:49:0"}, {"assignments": [261], "declarations": [{"constant": false, "id": 261, "mutability": "mutable", "name": "feeMultiplier", "nameLocation": "2494:13:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2486:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2486:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 268, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 262, "name": "reducedHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 243, "src": "2511:11:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 263, "name": "range", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 250, "src": "2525:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2511:19:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 265, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2510:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 266, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2534:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2510:39:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2486:63:0"}, {"assignments": [270], "declarations": [{"constant": false, "id": 270, "mutability": "mutable", "name": "fee", "nameLocation": "2567:3:0", "nodeType": "VariableDeclaration", "scope": 286, "src": "2559:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2559:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 274, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 271, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 196, "src": "2573:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 272, "name": "feeMultiplier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 261, "src": "2579:13:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2573:19:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2559:33:0"}, {"expression": {"id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 275, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2602:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 276, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2608:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 277, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2615:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 278, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "2621:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2615:21:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 280, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2614:23:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2608:29:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2602:35:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 283, "nodeType": "ExpressionStatement", "src": "2602:35:0"}, {"expression": {"id": 284, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2655:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 202, "id": 285, "nodeType": "Return", "src": "2648:10:0"}]}, "id": 287, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateFee", "nameLocation": "1886:12:0", "nodeType": "FunctionDefinition", "parameters": {"id": 199, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 196, "mutability": "mutable", "name": "min", "nameLocation": "1907:3:0", "nodeType": "VariableDeclaration", "scope": 287, "src": "1899:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 195, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1899:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 198, "mutability": "mutable", "name": "max", "nameLocation": "1920:3:0", "nodeType": "VariableDeclaration", "scope": 287, "src": "1912:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 197, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1912:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1898:26:0"}, "returnParameters": {"id": 202, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 201, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 287, "src": "1943:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 200, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1943:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1942:9:0"}, "scope": 665, "src": "1877:788:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 340, "nodeType": "Block", "src": "2728:417:0", "statements": [{"assignments": [293], "declarations": [{"constant": false, "id": 293, "mutability": "mutable", "name": "minN", "nameLocation": "2746:4:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2738:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2738:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 295, "initialValue": {"id": 294, "name": "minNetworkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "2753:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2738:28:0"}, {"assignments": [297], "declarations": [{"constant": false, "id": 297, "mutability": "mutable", "name": "maxN", "nameLocation": "2784:4:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2776:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2776:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 302, "initialValue": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 298, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "2791:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2810:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "2791:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2791:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 301, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2817:14:0", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "2791:40:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2776:55:0"}, {"assignments": [304], "declarations": [{"constant": false, "id": 304, "mutability": "mutable", "name": "publicKey", "nameLocation": "2855:9:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2842:22:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 303, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2842:5:0", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 307, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 305, "name": "_generatePublicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 194, "src": "2867:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () returns (bytes memory)"}}, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2867:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2842:45:0"}, {"assignments": [309], "declarations": [{"constant": false, "id": 309, "mutability": "mutable", "name": "fee", "nameLocation": "2905:3:0", "nodeType": "VariableDeclaration", "scope": 340, "src": "2897:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 308, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2897:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 314, "initialValue": {"arguments": [{"id": 311, "name": "minN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 293, "src": "2924:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 312, "name": "maxN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "2930:4:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 310, "name": "_generateFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "2911:12:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) returns (uint256)"}}, "id": 313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2911:24:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2897:38:0"}, {"clauses": [{"block": {"id": 331, "nodeType": "Block", "src": "3016:78:0", "statements": [{"expression": {"arguments": [{"id": 326, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3041:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 323, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3030:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:4:0", "memberName": "push", "nodeType": "MemberAccess", "src": "3030:10:0", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint64_$dyn_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_array$_t_uint64_$dyn_storage_ptr_$", "typeString": "function (uint64[] storage pointer,uint64)"}}, "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3030:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "3030:22:0"}, {"expression": {"id": 329, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3073:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 291, "id": 330, "nodeType": "Return", "src": "3066:17:0"}]}, "errorName": "", "id": 332, "nodeType": "TryCatchClause", "parameters": {"id": 322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 321, "mutability": "mutable", "name": "operatorId", "nameLocation": "3004:10:0", "nodeType": "VariableDeclaration", "scope": 332, "src": "2997:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 320, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2997:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2996:19:0"}, "src": "2988:106:0"}, {"block": {"id": 337, "nodeType": "Block", "src": "3101:38:0", "statements": [{"expression": {"arguments": [{"hexValue": "66616c7365", "id": 334, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3122:5:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 333, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "3115:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3115:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 336, "nodeType": "ExpressionStatement", "src": "3115:13:0"}]}, "errorName": "", "id": 338, "nodeType": "TryCatchClause", "src": "3095:44:0"}], "externalCall": {"arguments": [{"id": 317, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 304, "src": "2972:9:0", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 318, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 309, "src": "2983:3:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 315, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2950:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2955:16:0", "memberName": "registerOperator", "nodeType": "MemberAccess", "referencedDeclaration": 986, "src": "2950:21:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint64_$", "typeString": "function (bytes memory,uint256) external returns (uint64)"}}, "id": 319, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2950:37:0", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 339, "nodeType": "TryStatement", "src": "2946:193:0"}]}, "functionSelector": "249eaafa", "id": 341, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_createOperator", "nameLocation": "2680:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 288, "nodeType": "ParameterList", "parameters": [], "src": "2701:2:0"}, "returnParameters": {"id": 291, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 290, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 341, "src": "2720:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 289, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2720:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2719:8:0"}, "scope": 665, "src": "2671:474:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 365, "nodeType": "Block", "src": "3235:124:0", "statements": [{"expression": {"id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 348, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3245:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 349, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3258:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 352, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3278:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3284:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3278:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3271:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 350, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3271:6:0", "typeDescriptions": {}}}, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3271:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3258:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3245:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 357, "nodeType": "ExpressionStatement", "src": "3245:46:0"}, {"expression": {"arguments": [{"id": 361, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 343, "src": "3328:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 362, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 345, "src": "3340:11:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 358, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3302:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3307:20:0", "memberName": "setOperatorWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 1145, "src": "3302:25:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address) external"}}, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3302:50:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 364, "nodeType": "ExpressionStatement", "src": "3302:50:0"}]}, "functionSelector": "60e7474e", "id": 366, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_setOperatorWhitelist", "nameLocation": "3160:27:0", "nodeType": "FunctionDefinition", "parameters": {"id": 346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 343, "mutability": "mutable", "name": "operatorId", "nameLocation": "3195:10:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "3188:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 342, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3188:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 345, "mutability": "mutable", "name": "whitelisted", "nameLocation": "3215:11:0", "nodeType": "VariableDeclaration", "scope": 366, "src": "3207:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 344, "name": "address", "nodeType": "ElementaryTypeName", "src": "3207:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3187:40:0"}, "returnParameters": {"id": 347, "nodeType": "ParameterList", "parameters": [], "src": "3235:0:0"}, "scope": 665, "src": "3151:208:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 429, "nodeType": "Block", "src": "3426:464:0", "statements": [{"expression": {"id": 379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 371, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3436:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 372, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3449:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 375, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "3469:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3475:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "3469:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 374, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3462:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 373, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3462:6:0", "typeDescriptions": {}}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3462:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3449:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3436:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 380, "nodeType": "ExpressionStatement", "src": "3436:46:0"}, {"assignments": [383], "declarations": [{"constant": false, "id": 383, "mutability": "mutable", "name": "operator", "nameLocation": "3510:8:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3493:25:0", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 382, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 381, "name": "Operator", "nameLocations": ["3493:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "3493:8:0"}, "referencedDeclaration": 1699, "src": "3493:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 390, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 384, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "3521:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3532:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "3521:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 386, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3521:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 387, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3539:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3521:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 389, "indexExpression": {"id": 388, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3549:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3521:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "3493:67:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 392, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3578:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 393, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3587:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "3578:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 394, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3596:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "3578:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 395, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3605:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3578:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f70657261746f7220646f6573206e6f7420657869737473", "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3608:26:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}, "value": "operator does not exists"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e0f78a72c899f8d421c9e6133f74d04b55db42452b39286e8673d0260dd8878", "typeString": "literal_string \"operator does not exists\""}], "id": 391, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3570:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3570:65:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 399, "nodeType": "ExpressionStatement", "src": "3570:65:0"}, {"assignments": [401], "declarations": [{"constant": false, "id": 401, "mutability": "mutable", "name": "fee", "nameLocation": "3653:3:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3646:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 400, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3646:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 404, "initialValue": {"expression": {"id": 402, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 383, "src": "3659:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 403, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3668:3:0", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "3659:12:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3646:25:0"}, {"assignments": [406], "declarations": [{"constant": false, "id": 406, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3689:13:0", "nodeType": "VariableDeclaration", "scope": 429, "src": "3682:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 405, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3682:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 419, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 407, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "3706:3:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 408, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3713:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 409, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "3732:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3751:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "3732:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3732:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 412, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3758:22:0", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "3732:48:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3713:67:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 414, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3712:69:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3706:75:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 416, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3705:77:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 417, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3797:16:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3705:108:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3682:131:0"}, {"expression": {"arguments": [{"id": 423, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "3848:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 424, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 406, "src": "3860:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3874:6:0", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "3860:20:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3860:22:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 420, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3824:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3829:18:0", "memberName": "declareOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1287, "src": "3824:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256) external"}}, "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3824:59:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 428, "nodeType": "ExpressionStatement", "src": "3824:59:0"}]}, "functionSelector": "0f5baea8", "id": 430, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_declareOperatorFee", "nameLocation": "3374:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 368, "mutability": "mutable", "name": "operatorId", "nameLocation": "3407:10:0", "nodeType": "VariableDeclaration", "scope": 430, "src": "3400:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 367, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3400:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3399:19:0"}, "returnParameters": {"id": 370, "nodeType": "ParameterList", "parameters": [], "src": "3426:0:0"}, "scope": 665, "src": "3365:525:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 451, "nodeType": "Block", "src": "3957:109:0", "statements": [{"expression": {"id": 443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 435, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "3967:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 436, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "3980:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 439, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4000:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4006:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4000:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 438, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3993:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 437, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3993:6:0", "typeDescriptions": {}}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3993:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3980:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3967:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 444, "nodeType": "ExpressionStatement", "src": "3967:46:0"}, {"expression": {"arguments": [{"id": 448, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 432, "src": "4048:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 445, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4024:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4029:18:0", "memberName": "executeOperatorFee", "nodeType": "MemberAccess", "referencedDeclaration": 1397, "src": "4024:23:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4024:35:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 450, "nodeType": "ExpressionStatement", "src": "4024:35:0"}]}, "functionSelector": "45a5605a", "id": 452, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_executeOperatorFee", "nameLocation": "3905:25:0", "nodeType": "FunctionDefinition", "parameters": {"id": 433, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 432, "mutability": "mutable", "name": "operatorId", "nameLocation": "3938:10:0", "nodeType": "VariableDeclaration", "scope": 452, "src": "3931:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 431, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3931:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "3930:19:0"}, "returnParameters": {"id": 434, "nodeType": "ParameterList", "parameters": [], "src": "3957:0:0"}, "scope": 665, "src": "3896:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 473, "nodeType": "Block", "src": "4129:105:0", "statements": [{"expression": {"id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 457, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4139:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 458, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4152:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 461, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4172:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4178:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4172:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 460, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4165:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 459, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4165:6:0", "typeDescriptions": {}}}, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4165:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4152:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4139:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 466, "nodeType": "ExpressionStatement", "src": "4139:46:0"}, {"expression": {"arguments": [{"id": 470, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "4216:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "expression": {"id": 467, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4196:4:0", "typeDescriptions": {"typeIdentifier": "t_contract$_Operators_$665", "typeString": "contract Operators"}}, "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4201:14:0", "memberName": "removeOperator", "nodeType": "MemberAccess", "referencedDeclaration": 1082, "src": "4196:19:0", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64) external"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4196:31:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "4196:31:0"}]}, "functionSelector": "36058dc4", "id": 474, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_removeOperator", "nameLocation": "4081:21:0", "nodeType": "FunctionDefinition", "parameters": {"id": 455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 454, "mutability": "mutable", "name": "operatorId", "nameLocation": "4110:10:0", "nodeType": "VariableDeclaration", "scope": 474, "src": "4103:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 453, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4103:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4102:19:0"}, "returnParameters": {"id": 456, "nodeType": "ParameterList", "parameters": [], "src": "4129:0:0"}, "scope": 665, "src": "4072:162:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 515, "nodeType": "Block", "src": "4364:277:0", "statements": [{"expression": {"id": 487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 479, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4374:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 480, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4387:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 483, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4407:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4413:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4407:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 482, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4400:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 481, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4400:6:0", "typeDescriptions": {}}}, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4400:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4387:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4374:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 488, "nodeType": "ExpressionStatement", "src": "4374:46:0"}, {"assignments": [491], "declarations": [{"constant": false, "id": 491, "mutability": "mutable", "name": "operator", "nameLocation": "4447:8:0", "nodeType": "VariableDeclaration", "scope": 515, "src": "4431:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 490, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 489, "name": "Operator", "nameLocations": ["4431:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4431:8:0"}, "referencedDeclaration": 1699, "src": "4431:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 498, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 492, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4458:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4469:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4458:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4458:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 495, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4476:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4458:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 497, "indexExpression": {"id": 496, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4486:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4458:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4431:66:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 499, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4513:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4522:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "4513:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4531:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "4513:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4540:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4513:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 504, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4512:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"expression": {"id": 505, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4546:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 506, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4555:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "4546:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4512:54:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 514, "nodeType": "IfStatement", "src": "4508:126:0", "trueBody": {"eventCall": {"arguments": [{"id": 509, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 476, "src": "4601:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 510, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "4613:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4622:11:0", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "4613:20:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 508, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [37, 43], "referencedDeclaration": 37, "src": "4585:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_bool_$returns$__$", "typeString": "function (uint64,bool)"}}, "id": 512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4585:49:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 513, "nodeType": "EmitStatement", "src": "4580:54:0"}}]}, "functionSelector": "22ca0bed", "id": 516, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNotWhitelisted", "nameLocation": "4302:35:0", "nodeType": "FunctionDefinition", "parameters": {"id": 477, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 476, "mutability": "mutable", "name": "operatorId", "nameLocation": "4345:10:0", "nodeType": "VariableDeclaration", "scope": 516, "src": "4338:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 475, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4338:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4337:19:0"}, "returnParameters": {"id": 478, "nodeType": "ParameterList", "parameters": [], "src": "4364:0:0"}, "scope": 665, "src": "4293:348:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 571, "nodeType": "Block", "src": "4717:436:0", "statements": [{"expression": {"id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 521, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4727:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 522, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4740:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"arguments": [{"expression": {"id": 525, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "4760:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4766:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "4760:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 524, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4753:6:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 523, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4753:6:0", "typeDescriptions": {}}}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4753:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4740:33:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4727:46:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 530, "nodeType": "ExpressionStatement", "src": "4727:46:0"}, {"assignments": [533], "declarations": [{"constant": false, "id": 533, "mutability": "mutable", "name": "operator", "nameLocation": "4800:8:0", "nodeType": "VariableDeclaration", "scope": 571, "src": "4784:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 532, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 531, "name": "Operator", "nameLocations": ["4784:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4784:8:0"}, "referencedDeclaration": 1699, "src": "4784:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 540, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 534, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4811:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4822:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4811:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4811:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 537, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4829:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4811:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 539, "indexExpression": {"id": 538, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4839:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4811:39:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4784:66:0"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 541, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 533, "src": "4879:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4888:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "4879:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 543, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4897:5:0", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "4879:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4906:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4879:28:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 546, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4878:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 547, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4925:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4936:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4925:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4925:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 550, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4943:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "4925:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 552, "indexExpression": {"id": 551, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "4969:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4925:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 553, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4981:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4925:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5002:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4925:78:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 556, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4924:80:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4878:126:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 570, "nodeType": "IfStatement", "src": "4861:286:0", "trueBody": {"id": 569, "nodeType": "Block", "src": "5015:132:0", "statements": [{"eventCall": {"arguments": [{"id": 559, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "5050:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 560, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5062:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5073:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5062:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5062:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5080:25:0", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5062:43:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 565, "indexExpression": {"id": 564, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 518, "src": "5106:10:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5062:55:0", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 566, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5118:17:0", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "5062:73:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 558, "name": "AssertionFailed", "nodeType": "Identifier", "overloadedDeclarations": [37, 43], "referencedDeclaration": 43, "src": "5034:15:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$", "typeString": "function (uint64,uint64)"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5034:102:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 568, "nodeType": "EmitStatement", "src": "5029:107:0"}]}}]}, "functionSelector": "9d5ceb91", "id": 572, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorNoFeeDeclared", "nameLocation": "4656:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 519, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 518, "mutability": "mutable", "name": "operatorId", "nameLocation": "4698:10:0", "nodeType": "VariableDeclaration", "scope": 572, "src": "4691:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 517, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4691:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4690:19:0"}, "returnParameters": {"id": 520, "nodeType": "ParameterList", "parameters": [], "src": "4717:0:0"}, "scope": 665, "src": "4647:506:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 612, "nodeType": "Block", "src": "5207:227:0", "statements": [{"body": {"id": 610, "nodeType": "Block", "src": "5256:172:0", "statements": [{"assignments": [587], "declarations": [{"constant": false, "id": 587, "mutability": "mutable", "name": "operator", "nameLocation": "5286:8:0", "nodeType": "VariableDeclaration", "scope": 610, "src": "5270:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 586, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 585, "name": "Operator", "nameLocations": ["5270:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5270:8:0"}, "referencedDeclaration": 1699, "src": "5270:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 596, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 588, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5297:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5308:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5297:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5297:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 591, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5315:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5297:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 595, "indexExpression": {"baseExpression": {"id": 592, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5325:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 594, "indexExpression": {"id": 593, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5331:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5325:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5297:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5270:64:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 598, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "5355:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 599, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5364:14:0", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "5355:23:0", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5381:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5355:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 602, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "5386:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 603, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5395:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "5386:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 604, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5404:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "5386:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5415:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5386:30:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "5355:61:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 597, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "5348:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5348:69:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "ExpressionStatement", "src": "5348:69:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 578, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5233:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 579, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5237:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5243:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "5237:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5233:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 611, "initializationExpression": {"assignments": [576], "declarations": [{"constant": false, "id": 576, "mutability": "mutable", "name": "i", "nameLocation": "5230:1:0", "nodeType": "VariableDeclaration", "scope": 611, "src": "5222:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 575, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5222:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 577, "nodeType": "VariableDeclarationStatement", "src": "5222:9:0"}, "loopExpression": {"expression": {"id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5251:3:0", "subExpression": {"id": 582, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "5251:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 584, "nodeType": "ExpressionStatement", "src": "5251:3:0"}, "nodeType": "ForStatement", "src": "5217:211:0"}]}, "functionSelector": "e7780e00", "id": 613, "implemented": true, "kind": "function", "modifiers": [], "name": "check_removedOperatorBalances", "nameLocation": "5168:29:0", "nodeType": "FunctionDefinition", "parameters": {"id": 573, "nodeType": "ParameterList", "parameters": [], "src": "5197:2:0"}, "returnParameters": {"id": 574, "nodeType": "ParameterList", "parameters": [], "src": "5207:0:0"}, "scope": 665, "src": "5159:275:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 663, "nodeType": "Block", "src": "5492:326:0", "statements": [{"assignments": [618], "declarations": [{"constant": false, "id": 618, "mutability": "mutable", "name": "sp", "nameLocation": "5525:2:0", "nodeType": "VariableDeclaration", "scope": 663, "src": "5502:25:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_memory_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 617, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 616, "name": "StorageProtocol", "nameLocations": ["5502:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "5502:15:0"}, "referencedDeclaration": 1828, "src": "5502:15:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 622, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 619, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "5530:18:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5549:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "5530:23:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5530:25:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5502:53:0"}, {"assignments": [624], "declarations": [{"constant": false, "id": 624, "mutability": "mutable", "name": "earnings", "nameLocation": "5572:8:0", "nodeType": "VariableDeclaration", "scope": 663, "src": "5565:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 623, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5565:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 625, "nodeType": "VariableDeclarationStatement", "src": "5565:15:0"}, {"body": {"id": 654, "nodeType": "Block", "src": "5629:140:0", "statements": [{"assignments": [638], "declarations": [{"constant": false, "id": 638, "mutability": "mutable", "name": "operator", "nameLocation": "5659:8:0", "nodeType": "VariableDeclaration", "scope": 654, "src": "5643:24:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 637, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 636, "name": "Operator", "nameLocations": ["5643:8:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5643:8:0"}, "referencedDeclaration": 1699, "src": "5643:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 647, "initialValue": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 639, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5670:10:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5681:4:0", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5670:15:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5670:17:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5688:9:0", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5670:27:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 646, "indexExpression": {"baseExpression": {"id": 643, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5698:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 645, "indexExpression": {"id": 644, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5704:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5698:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5670:37:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5643:64:0"}, {"expression": {"id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 648, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "5721:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 649, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 638, "src": "5733:8:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5742:8:0", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "5733:17:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 651, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5751:7:0", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "5733:25:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5721:37:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 653, "nodeType": "ExpressionStatement", "src": "5721:37:0"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 629, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5606:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 630, "name": "opIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, "src": "5610:5:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage", "typeString": "uint64[] storage ref"}}, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5616:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "5610:12:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5606:16:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 655, "initializationExpression": {"assignments": [627], "declarations": [{"constant": false, "id": 627, "mutability": "mutable", "name": "i", "nameLocation": "5603:1:0", "nodeType": "VariableDeclaration", "scope": 655, "src": "5595:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5595:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 628, "nodeType": "VariableDeclarationStatement", "src": "5595:9:0"}, "loopExpression": {"expression": {"id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5624:3:0", "subExpression": {"id": 633, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "5624:1:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 635, "nodeType": "ExpressionStatement", "src": "5624:3:0"}, "nodeType": "ForStatement", "src": "5590:179:0"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 657, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 618, "src": "5785:2:0", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_memory_ptr", "typeString": "struct StorageProtocol memory"}}, "id": 658, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5788:10:0", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "5785:13:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 659, "name": "earnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "5802:8:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5785:25:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 656, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "5778:6:0", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5778:33:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "ExpressionStatement", "src": "5778:33:0"}]}, "functionSelector": "30eab391", "id": 664, "implemented": true, "kind": "function", "modifiers": [], "name": "check_operatorEarningsWithBalance", "nameLocation": "5449:33:0", "nodeType": "FunctionDefinition", "parameters": {"id": 614, "nodeType": "ParameterList", "parameters": [], "src": "5482:2:0"}, "returnParameters": {"id": 615, "nodeType": "ParameterList", "parameters": [], "src": "5492:0:0"}, "scope": 665, "src": "5440:378:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 666, "src": "148:5672:0", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:5776:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [1786]}, "id": 1787, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1672, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 1786, "linearizedBaseContracts": [1786], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 1682, "members": [{"constant": false, "id": 1675, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1674, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1678, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1677, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1681, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 1682, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1680, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 1786, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 1699, "members": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1684, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1688, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1687, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1691, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1690, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1694, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1693, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1698, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 1699, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 1697, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1696, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1682, "src": "1129:8:1"}, "referencedDeclaration": 1682, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 1786, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 1709, "members": [{"constant": false, "id": 1702, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1701, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1705, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1704, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1708, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 1709, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1707, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 1786, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 1725, "members": [{"constant": false, "id": 1712, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1711, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1715, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1714, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1718, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1717, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1721, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1720, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 1724, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 1725, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 1786, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 1727, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1726, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 1729, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1728, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 1731, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1730, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 1733, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1732, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 1735, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1734, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 1737, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 1739, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 1741, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1740, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 1743, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1742, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 1745, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1744, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 1747, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1746, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 1749, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1748, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 1751, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1750, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 1753, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1752, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 1755, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1754, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 1757, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1756, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 1759, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1758, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 1761, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1760, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 1763, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1762, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 1765, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1764, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 1767, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1766, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 1769, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1768, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 1771, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1770, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 1773, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1772, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 1775, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1774, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 1777, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1776, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 1779, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1778, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 1781, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1780, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 1783, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1782, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 1785, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 1784, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 1787, "src": "70:3477:1", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "exportedSymbols": {"ISSVNetworkCore": [1786], "ISSVOperators": [2054]}, "id": 2055, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1920, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 1921, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2055, "sourceUnit": 1787, "src": "70:31:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1922, "name": "ISSVNetworkCore", "nameLocations": ["130:15:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 1786, "src": "130:15:2"}, "id": 1923, "nodeType": "InheritanceSpecifier", "src": "130:15:2"}], "canonicalName": "ISSVOperators", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 2054, "linearizedBaseContracts": [2054, 1786], "name": "ISSVOperators", "nameLocation": "113:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1924, "nodeType": "StructuredDocumentation", "src": "152:136:2", "text": "@notice Registers a new operator\n @param publicKey The public key of the operator\n @param fee The operator's fee (SSV)"}, "functionSelector": "ff212c5c", "id": 1933, "implemented": false, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "302:16:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1926, "mutability": "mutable", "name": "publicKey", "nameLocation": "334:9:2", "nodeType": "VariableDeclaration", "scope": 1933, "src": "319:24:2", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1925, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "319:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1928, "mutability": "mutable", "name": "fee", "nameLocation": "353:3:2", "nodeType": "VariableDeclaration", "scope": 1933, "src": "345:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "345:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "318:39:2"}, "returnParameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1931, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1933, "src": "376:6:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1930, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "376:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "375:8:2"}, "scope": 2054, "src": "293:91:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1934, "nodeType": "StructuredDocumentation", "src": "390:103:2", "text": "@notice Removes an existing operator\n @param operatorId The ID of the operator to be removed"}, "functionSelector": "2e168e0e", "id": 1939, "implemented": false, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "507:14:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1936, "mutability": "mutable", "name": "operatorId", "nameLocation": "529:10:2", "nodeType": "VariableDeclaration", "scope": 1939, "src": "522:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1935, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "522:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "521:19:2"}, "returnParameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [], "src": "549:0:2"}, "scope": 2054, "src": "498:52:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1940, "nodeType": "StructuredDocumentation", "src": "556:152:2", "text": "@notice Sets the whitelist for an operator\n @param operatorId The ID of the operator\n @param whitelisted The address to be whitelisted"}, "functionSelector": "c90a7eab", "id": 1947, "implemented": false, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "722:20:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1945, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1942, "mutability": "mutable", "name": "operatorId", "nameLocation": "750:10:2", "nodeType": "VariableDeclaration", "scope": 1947, "src": "743:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1941, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "743:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1944, "mutability": "mutable", "name": "whitelisted", "nameLocation": "770:11:2", "nodeType": "VariableDeclaration", "scope": 1947, "src": "762:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1943, "name": "address", "nodeType": "ElementaryTypeName", "src": "762:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "742:40:2"}, "returnParameters": {"id": 1946, "nodeType": "ParameterList", "parameters": [], "src": "791:0:2"}, "scope": 2054, "src": "713:79:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1948, "nodeType": "StructuredDocumentation", "src": "798:136:2", "text": "@notice Declares the operator's fee\n @param operatorId The ID of the operator\n @param fee The fee to be declared (SSV)"}, "functionSelector": "b317c35f", "id": 1955, "implemented": false, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "948:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1953, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1950, "mutability": "mutable", "name": "operatorId", "nameLocation": "974:10:2", "nodeType": "VariableDeclaration", "scope": 1955, "src": "967:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1949, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "967:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1952, "mutability": "mutable", "name": "fee", "nameLocation": "994:3:2", "nodeType": "VariableDeclaration", "scope": 1955, "src": "986:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1951, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "986:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "966:32:2"}, "returnParameters": {"id": 1954, "nodeType": "ParameterList", "parameters": [], "src": "1007:0:2"}, "scope": 2054, "src": "939:69:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1956, "nodeType": "StructuredDocumentation", "src": "1014:88:2", "text": "@notice Executes the operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "8932cee0", "id": 1961, "implemented": false, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "1116:18:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1958, "mutability": "mutable", "name": "operatorId", "nameLocation": "1142:10:2", "nodeType": "VariableDeclaration", "scope": 1961, "src": "1135:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1957, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1135:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1134:19:2"}, "returnParameters": {"id": 1960, "nodeType": "ParameterList", "parameters": [], "src": "1162:0:2"}, "scope": 2054, "src": "1107:56:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1962, "nodeType": "StructuredDocumentation", "src": "1169:96:2", "text": "@notice Cancels the declared operator's fee\n @param operatorId The ID of the operator"}, "functionSelector": "23d68a6d", "id": 1967, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "1279:25:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1965, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1964, "mutability": "mutable", "name": "operatorId", "nameLocation": "1312:10:2", "nodeType": "VariableDeclaration", "scope": 1967, "src": "1305:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1305:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1304:19:2"}, "returnParameters": {"id": 1966, "nodeType": "ParameterList", "parameters": [], "src": "1332:0:2"}, "scope": 2054, "src": "1270:63:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1968, "nodeType": "StructuredDocumentation", "src": "1339:135:2", "text": "@notice Reduces the operator's fee\n @param operatorId The ID of the operator\n @param fee The new Operator's fee (SSV)"}, "functionSelector": "190d82e4", "id": 1975, "implemented": false, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "1488:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1973, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1970, "mutability": "mutable", "name": "operatorId", "nameLocation": "1513:10:2", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1506:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1506:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1972, "mutability": "mutable", "name": "fee", "nameLocation": "1533:3:2", "nodeType": "VariableDeclaration", "scope": 1975, "src": "1525:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1525:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1505:32:2"}, "returnParameters": {"id": 1974, "nodeType": "ParameterList", "parameters": [], "src": "1546:0:2"}, "scope": 2054, "src": "1479:68:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1976, "nodeType": "StructuredDocumentation", "src": "1553:154:2", "text": "@notice Withdraws operator earnings\n @param operatorId The ID of the operator\n @param tokenAmount The amount of tokens to withdraw (SSV)"}, "functionSelector": "35f63767", "id": 1983, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "1721:24:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1978, "mutability": "mutable", "name": "operatorId", "nameLocation": "1753:10:2", "nodeType": "VariableDeclaration", "scope": 1983, "src": "1746:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1977, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1746:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1980, "mutability": "mutable", "name": "tokenAmount", "nameLocation": "1773:11:2", "nodeType": "VariableDeclaration", "scope": 1983, "src": "1765:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1745:40:2"}, "returnParameters": {"id": 1982, "nodeType": "ParameterList", "parameters": [], "src": "1794:0:2"}, "scope": 2054, "src": "1712:83:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1984, "nodeType": "StructuredDocumentation", "src": "1801:92:2", "text": "@notice Withdraws all operator earnings\n @param operatorId The ID of the operator"}, "functionSelector": "4bc93b64", "id": 1989, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "1907:27:2", "nodeType": "FunctionDefinition", "parameters": {"id": 1987, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1986, "mutability": "mutable", "name": "operatorId", "nameLocation": "1942:10:2", "nodeType": "VariableDeclaration", "scope": 1989, "src": "1935:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1985, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1935:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1934:19:2"}, "returnParameters": {"id": 1988, "nodeType": "ParameterList", "parameters": [], "src": "1962:0:2"}, "scope": 2054, "src": "1898:65:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "documentation": {"id": 1990, "nodeType": "StructuredDocumentation", "src": "1969:317:2", "text": " @dev Emitted when a new operator has been added.\n @param operatorId operator's ID.\n @param owner Operator's ethereum address that can collect fees.\n @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys.\n @param fee Operator's fee."}, "eventSelector": "d839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f4", "id": 2000, "name": "OperatorAdded", "nameLocation": "2297:13:2", "nodeType": "EventDefinition", "parameters": {"id": 1999, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1992, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2326:10:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2311:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1991, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2311:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1994, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2354:5:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2338:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1993, "name": "address", "nodeType": "ElementaryTypeName", "src": "2338:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1996, "indexed": false, "mutability": "mutable", "name": "publicKey", "nameLocation": "2367:9:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2361:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1995, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2361:5:2", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 1998, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2386:3:2", "nodeType": "VariableDeclaration", "scope": 2000, "src": "2378:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1997, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2378:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2310:80:2"}, "src": "2291:100:2"}, {"anonymous": false, "documentation": {"id": 2001, "nodeType": "StructuredDocumentation", "src": "2397:103:2", "text": " @dev Emitted when operator has been removed.\n @param operatorId operator's ID."}, "eventSelector": "0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e", "id": 2005, "name": "OperatorRemoved", "nameLocation": "2511:15:2", "nodeType": "EventDefinition", "parameters": {"id": 2004, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2003, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2542:10:2", "nodeType": "VariableDeclaration", "scope": 2005, "src": "2527:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2002, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2527:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2526:27:2"}, "src": "2505:49:2"}, {"anonymous": false, "documentation": {"id": 2006, "nodeType": "StructuredDocumentation", "src": "2560:179:2", "text": " @dev Emitted when the whitelist of an operator is updated.\n @param operatorId operator's ID.\n @param whitelisted operator's new whitelisted address."}, "eventSelector": "29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe", "id": 2012, "name": "OperatorWhitelistUpdated", "nameLocation": "2750:24:2", "nodeType": "EventDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2008, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2790:10:2", "nodeType": "VariableDeclaration", "scope": 2012, "src": "2775:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2007, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2775:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2010, "indexed": false, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2810:11:2", "nodeType": "VariableDeclaration", "scope": 2012, "src": "2802:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2009, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2774:48:2"}, "src": "2744:79:2"}, {"anonymous": false, "eventSelector": "796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e327358", "id": 2022, "name": "OperatorFeeDeclared", "nameLocation": "2834:19:2", "nodeType": "EventDefinition", "parameters": {"id": 2021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2014, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2870:5:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2854:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2013, "name": "address", "nodeType": "ElementaryTypeName", "src": "2854:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2016, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "2892:10:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2877:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2015, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2877:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2018, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "2912:11:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2904:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2017, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2904:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2020, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "2933:3:2", "nodeType": "VariableDeclaration", "scope": 2022, "src": "2925:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2925:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2853:84:2"}, "src": "2828:110:2"}, {"anonymous": false, "eventSelector": "5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f3", "id": 2028, "name": "OperatorFeeDeclarationCancelled", "nameLocation": "2950:31:2", "nodeType": "EventDefinition", "parameters": {"id": 2027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2024, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "2998:5:2", "nodeType": "VariableDeclaration", "scope": 2028, "src": "2982:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2023, "name": "address", "nodeType": "ElementaryTypeName", "src": "2982:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2026, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3020:10:2", "nodeType": "VariableDeclaration", "scope": 2028, "src": "3005:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2025, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3005:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2981:50:2"}, "src": "2944:88:2"}, {"anonymous": false, "documentation": {"id": 2029, "nodeType": "StructuredDocumentation", "src": "3037:192:2", "text": " @dev Emitted when an operator's fee is updated.\n @param owner Operator's owner.\n @param blockNumber from which block number.\n @param fee updated fee value."}, "eventSelector": "513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef", "id": 2039, "name": "OperatorFeeExecuted", "nameLocation": "3240:19:2", "nodeType": "EventDefinition", "parameters": {"id": 2038, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2031, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3276:5:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3260:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2030, "name": "address", "nodeType": "ElementaryTypeName", "src": "3260:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2033, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3298:10:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3283:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2032, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3283:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2035, "indexed": false, "mutability": "mutable", "name": "blockNumber", "nameLocation": "3318:11:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3310:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2037, "indexed": false, "mutability": "mutable", "name": "fee", "nameLocation": "3339:3:2", "nodeType": "VariableDeclaration", "scope": 2039, "src": "3331:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2036, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3331:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3259:84:2"}, "src": "3234:110:2"}, {"anonymous": false, "eventSelector": "178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60", "id": 2047, "name": "OperatorWithdrawn", "nameLocation": "3355:17:2", "nodeType": "EventDefinition", "parameters": {"id": 2046, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2041, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3389:5:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3373:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2040, "name": "address", "nodeType": "ElementaryTypeName", "src": "3373:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2043, "indexed": true, "mutability": "mutable", "name": "operatorId", "nameLocation": "3411:10:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3396:25:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2042, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3396:6:2", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2045, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "3431:5:2", "nodeType": "VariableDeclaration", "scope": 2047, "src": "3423:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2044, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3423:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3372:65:2"}, "src": "3349:89:2"}, {"anonymous": false, "eventSelector": "259235c230d57def1521657e7c7951d3b385e76193378bc87ef6b56bc2ec3548", "id": 2053, "name": "FeeRecipientAddressUpdated", "nameLocation": "3449:26:2", "nodeType": "EventDefinition", "parameters": {"id": 2052, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2049, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "3492:5:2", "nodeType": "VariableDeclaration", "scope": 2053, "src": "3476:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2048, "name": "address", "nodeType": "ElementaryTypeName", "src": "3476:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2051, "indexed": false, "mutability": "mutable", "name": "recipientAddress", "nameLocation": "3507:16:2", "nodeType": "VariableDeclaration", "scope": 2053, "src": "3499:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2050, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3475:49:2"}, "src": "3443:82:2"}], "scope": 2055, "src": "103:3424:2", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:3483:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "IERC20": [2665], "ISSVNetworkCore": [1786], "SSVModules": [2443], "SSVStorage": [2513], "StorageData": [2490]}, "id": 2186, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2056, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2057, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2186, "sourceUnit": 2514, "src": "70:26:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2185, "linearizedBaseContracts": [2185], "name": "CoreLib", "nameLocation": "106:7:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 2064, "name": "ModuleUpgraded", "nameLocation": "126:14:3", "nodeType": "EventDefinition", "parameters": {"id": 2063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2060, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:3", "nodeType": "VariableDeclaration", "scope": 2064, "src": "141:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, "typeName": {"id": 2059, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2058, "name": "SSVModules", "nameLocations": ["141:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "141:10:3"}, "referencedDeclaration": 2443, "src": "141:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2062, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:3", "nodeType": "VariableDeclaration", "scope": 2064, "src": "170:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2061, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:3"}, "src": "120:73:3"}, {"body": {"id": 2071, "nodeType": "Block", "src": "259:32:3", "statements": [{"expression": {"hexValue": "76312e302e32", "id": 2069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:8:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a93491ab14f0da9be9ef6814ab0c16bbbdf1cf68412eb6d7d1f6ea944c85b62a", "typeString": "literal_string \"v1.0.2\""}, "value": "v1.0.2"}, "functionReturnParameters": 2068, "id": 2070, "nodeType": "Return", "src": "269:15:3"}]}, "id": 2072, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2065, "nodeType": "ParameterList", "parameters": [], "src": "218:2:3"}, "returnParameters": {"id": 2068, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2067, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2072, "src": "244:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2066, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:3"}, "scope": 2185, "src": "199:92:3", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2095, "nodeType": "Block", "src": "359:136:3", "statements": [{"condition": {"id": 2087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "373:45:3", "subExpression": {"arguments": [{"id": 2084, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2074, "src": "407:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2085, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2076, "src": "411:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2079, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "374:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "385:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "392:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2485, "src": "374:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "398:8:3", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2632, "src": "374:32:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "374:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2094, "nodeType": "IfStatement", "src": "369:120:3", "trueBody": {"id": 2093, "nodeType": "Block", "src": "420:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2088, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "441:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "457:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "441:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "441:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2092, "nodeType": "RevertStatement", "src": "434:44:3"}]}}]}, "id": 2096, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "306:15:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2077, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2074, "mutability": "mutable", "name": "to", "nameLocation": "330:2:3", "nodeType": "VariableDeclaration", "scope": 2096, "src": "322:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2073, "name": "address", "nodeType": "ElementaryTypeName", "src": "322:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2076, "mutability": "mutable", "name": "amount", "nameLocation": "342:6:3", "nodeType": "VariableDeclaration", "scope": 2096, "src": "334:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "334:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "321:28:3"}, "returnParameters": {"id": 2078, "nodeType": "ParameterList", "parameters": [], "src": "359:0:3"}, "scope": 2185, "src": "297:198:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2122, "nodeType": "Block", "src": "543:163:3", "statements": [{"condition": {"id": 2114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:72:3", "subExpression": {"arguments": [{"expression": {"id": 2106, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "595:3:3", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "599:6:3", "memberName": "sender", "nodeType": "MemberAccess", "src": "595:10:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 2110, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "615:4:3", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$2185", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$2185", "typeString": "library CoreLib"}], "id": 2109, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "607:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2108, "name": "address", "nodeType": "ElementaryTypeName", "src": "607:7:3", "typeDescriptions": {}}}, "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "607:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2112, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2098, "src": "622:6:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2101, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "558:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "569:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "558:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "576:5:3", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 2485, "src": "558:23:3", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "582:12:3", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2664, "src": "558:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "558:71:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2121, "nodeType": "IfStatement", "src": "553:147:3", "trueBody": {"id": 2120, "nodeType": "Block", "src": "631:69:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2115, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "652:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "668:19:3", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 1769, "src": "652:35:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "652:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2119, "nodeType": "RevertStatement", "src": "645:44:3"}]}}]}, "id": 2123, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "510:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2098, "mutability": "mutable", "name": "amount", "nameLocation": "526:6:3", "nodeType": "VariableDeclaration", "scope": 2123, "src": "518:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2097, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "518:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "517:16:3"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [], "src": "543:0:3"}, "scope": 2185, "src": "501:205:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2149, "nodeType": "Block", "src": "1348:440:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2131, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2126, "src": "1362:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1381:1:3", "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": 2133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1373:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2132, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:3", "typeDescriptions": {}}}, "id": 2135, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1373:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1362:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2140, "nodeType": "IfStatement", "src": "1358:64:3", "trueBody": {"id": 2139, "nodeType": "Block", "src": "1385:37:3", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1406:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2130, "id": 2138, "nodeType": "Return", "src": "1399:12:3"}]}}, {"assignments": [2142], "declarations": [{"constant": false, "id": 2142, "mutability": "mutable", "name": "size", "nameLocation": "1626:4:3", "nodeType": "VariableDeclaration", "scope": 2149, "src": "1618:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2143, "nodeType": "VariableDeclarationStatement", "src": "1618:12:3"}, {"AST": {"nodeType": "YulBlock", "src": "1705:52:3", "statements": [{"nodeType": "YulAssignment", "src": "1719:28:3", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1739:7:3"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1727:11:3"}, "nodeType": "YulFunctionCall", "src": "1727:20:3"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1719:4:3"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2126, "isOffset": false, "isSlot": false, "src": "1739:7:3", "valueSize": 1}, {"declaration": 2142, "isOffset": false, "isSlot": false, "src": "1719:4:3", "valueSize": 1}], "id": 2144, "nodeType": "InlineAssembly", "src": "1696:61:3"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2145, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2142, "src": "1773:4:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1780:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1773:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2130, "id": 2148, "nodeType": "Return", "src": "1766:15:3"}]}, "documentation": {"id": 2124, "nodeType": "StructuredDocumentation", "src": "712:565:3", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 2150, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1291:10:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2127, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2126, "mutability": "mutable", "name": "account", "nameLocation": "1310:7:3", "nodeType": "VariableDeclaration", "scope": 2150, "src": "1302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2125, "name": "address", "nodeType": "ElementaryTypeName", "src": "1302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1301:17:3"}, "returnParameters": {"id": 2130, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2129, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2150, "src": "1342:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2128, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1342:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1341:6:3"}, "scope": 2185, "src": "1282:506:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2183, "nodeType": "Block", "src": "1875:219:3", "statements": [{"condition": {"id": 2161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1889:26:3", "subExpression": {"arguments": [{"id": 2159, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "1901:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2158, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "1890:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1890:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2167, "nodeType": "IfStatement", "src": "1885:81:3", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2162, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1924:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:24:3", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1781, "src": "1924:40:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1924:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2166, "nodeType": "RevertStatement", "src": "1917:49:3"}}, {"expression": {"id": 2176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2168, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1977:10:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 2170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1988:4:3", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1977:15:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 2171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1977:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2172, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1995:12:3", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 2464, "src": "1977:30:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 2174, "indexExpression": {"id": 2173, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2153, "src": "2008:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1977:40:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2175, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "2020:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1977:56:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2177, "nodeType": "ExpressionStatement", "src": "1977:56:3"}, {"eventCall": {"arguments": [{"id": 2179, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2153, "src": "2063:8:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, {"id": 2180, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2155, "src": "2073:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2178, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2064, "src": "2048:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$2443_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 2181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2048:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2182, "nodeType": "EmitStatement", "src": "2043:44:3"}]}, "id": 2184, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1804:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 2156, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2153, "mutability": "mutable", "name": "moduleId", "nameLocation": "1833:8:3", "nodeType": "VariableDeclaration", "scope": 2184, "src": "1822:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}, "typeName": {"id": 2152, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2151, "name": "SSVModules", "nameLocations": ["1822:10:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "1822:10:3"}, "referencedDeclaration": 2443, "src": "1822:10:3", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 2155, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1851:13:3", "nodeType": "VariableDeclaration", "scope": 2184, "src": "1843:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2154, "name": "address", "nodeType": "ElementaryTypeName", "src": "1843:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1821:44:3"}, "returnParameters": {"id": 2157, "nodeType": "ParameterList", "parameters": [], "src": "1875:0:3"}, "scope": 2185, "src": "1795:299:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2186, "src": "98:1998:3", "usedErrors": []}], "src": "45:2052:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol": {"AST": {"absolutePath": "contracts/libraries/OperatorLib.sol", "exportedSymbols": {"Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "OperatorLib": [2433], "SSVModules": [2443], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 2434, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2187, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2188, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1787, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 2189, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 2514, "src": "114:26:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 2190, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1852, "src": "141:34:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 2191, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2434, "sourceUnit": 1919, "src": "176:21:4", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "OperatorLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2433, "linearizedBaseContracts": [2433], "name": "OperatorLib", "nameLocation": "207:11:4", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 2194, "libraryName": {"id": 2192, "name": "Types64", "nameLocations": ["231:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "231:7:4"}, "nodeType": "UsingForDirective", "src": "225:25:4", "typeName": {"id": 2193, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "243:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"body": {"id": 2247, "nodeType": "Block", "src": "336:285:4", "statements": [{"assignments": [2201], "declarations": [{"constant": false, "id": 2201, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "353:12:4", "nodeType": "VariableDeclaration", "scope": 2247, "src": "346:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2200, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "346:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2215, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2214, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2204, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "376:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "382:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "376:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2203, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "369:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2202, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "369:6:4", "typeDescriptions": {}}}, "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "369:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2207, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "392:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2208, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "401:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "392:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2209, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "410:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "392:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "369:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2211, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "368:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2212, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "419:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "428:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "419:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "368:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "346:85:4"}, {"expression": {"id": 2222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2216, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "442:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2219, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "451:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "442:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2220, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "460:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "442:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2221, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2201, "src": "469:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "442:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2223, "nodeType": "ExpressionStatement", "src": "442:39:4"}, {"expression": {"id": 2233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2224, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "491:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "500:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "491:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2228, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "509:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "491:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2229, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2201, "src": "520:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2230, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "535:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2231, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "544:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "535:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "520:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "491:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2234, "nodeType": "ExpressionStatement", "src": "491:67:4"}, {"expression": {"id": 2245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2235, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2197, "src": "568:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2238, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "577:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "568:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "586:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "568:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2242, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "601:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "607:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "601:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2241, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "594:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2240, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "594:6:4", "typeDescriptions": {}}}, "id": 2244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "594:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "568:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2246, "nodeType": "ExpressionStatement", "src": "568:46:4"}]}, "id": 2248, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshot", "nameLocation": "265:14:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2197, "mutability": "mutable", "name": "operator", "nameLocation": "312:8:4", "nodeType": "VariableDeclaration", "scope": 2248, "src": "280:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2196, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2195, "name": "ISSVNetworkCore.Operator", "nameLocations": ["280:15:4", "296:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "280:24:4"}, "referencedDeclaration": 1699, "src": "280:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "279:42:4"}, "returnParameters": {"id": 2199, "nodeType": "ParameterList", "parameters": [], "src": "336:0:4"}, "scope": 2433, "src": "256:365:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2301, "nodeType": "Block", "src": "705:285:4", "statements": [{"assignments": [2255], "declarations": [{"constant": false, "id": 2255, "mutability": "mutable", "name": "blockDiffFee", "nameLocation": "722:12:4", "nodeType": "VariableDeclaration", "scope": 2301, "src": "715:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2254, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "715:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2269, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 2258, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "745:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "751:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "745:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2257, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "738:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2256, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "738:6:4", "typeDescriptions": {}}}, "id": 2260, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "738:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"expression": {"id": 2261, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "761:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2262, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "770:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "761:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2263, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "779:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "761:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "738:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2265, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "737:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2266, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "788:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2267, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "797:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "788:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "737:63:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "715:85:4"}, {"expression": {"id": 2276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2270, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "811:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2273, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "820:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "811:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2274, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "829:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "811:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2275, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2255, "src": "838:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "811:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2277, "nodeType": "ExpressionStatement", "src": "811:39:4"}, {"expression": {"id": 2287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2278, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "860:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2281, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "869:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "860:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "878:7:4", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "860:25:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 2286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2283, "name": "blockDiffFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2255, "src": "889:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 2284, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "904:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "904:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "889:38:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "860:67:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2288, "nodeType": "ExpressionStatement", "src": "860:67:4"}, {"expression": {"id": 2299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 2289, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2251, "src": "937:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2292, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "946:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "937:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "955:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "937:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 2296, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "970:5:4", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "976:6:4", "memberName": "number", "nodeType": "MemberAccess", "src": "970:12:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "963:6:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 2294, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "963:6:4", "typeDescriptions": {}}}, "id": 2298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:20:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "937:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2300, "nodeType": "ExpressionStatement", "src": "937:46:4"}]}, "id": 2302, "implemented": true, "kind": "function", "modifiers": [], "name": "updateSnapshotSt", "nameLocation": "636:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2251, "mutability": "mutable", "name": "operator", "nameLocation": "686:8:4", "nodeType": "VariableDeclaration", "scope": 2302, "src": "653:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2250, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2249, "name": "ISSVNetworkCore.Operator", "nameLocations": ["653:15:4", "669:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "653:24:4"}, "referencedDeclaration": 1699, "src": "653:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "652:43:4"}, "returnParameters": {"id": 2253, "nodeType": "ParameterList", "parameters": [], "src": "705:0:4"}, "scope": 2433, "src": "627:363:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2330, "nodeType": "Block", "src": "1072:179:4", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2308, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2305, "src": "1086:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2309, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1095:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1086:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 2310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1104:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1086:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1113:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2318, "nodeType": "IfStatement", "src": "1082:79:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2313, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1123:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1139:20:4", "memberName": "OperatorDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 1739, "src": "1123:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1123:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2317, "nodeType": "RevertStatement", "src": "1116:45:4"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2319, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2305, "src": "1175:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 2320, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1184:5:4", "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 1691, "src": "1175:14:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"id": 2321, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1193:3:4", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1197:6:4", "memberName": "sender", "nodeType": "MemberAccess", "src": "1193:10:4", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1175:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2329, "nodeType": "IfStatement", "src": "1171:73:4", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2324, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1212:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1228:14:4", "memberName": "CallerNotOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1727, "src": "1212:30:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2327, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:32:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2328, "nodeType": "RevertStatement", "src": "1205:39:4"}}]}, "id": 2331, "implemented": true, "kind": "function", "modifiers": [], "name": "checkOwner", "nameLocation": "1005:10:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2306, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2305, "mutability": "mutable", "name": "operator", "nameLocation": "1048:8:4", "nodeType": "VariableDeclaration", "scope": 2331, "src": "1016:40:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2304, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2303, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1016:15:4", "1032:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1016:24:4"}, "referencedDeclaration": 1699, "src": "1016:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "src": "1015:42:4"}, "returnParameters": {"id": 2307, "nodeType": "ParameterList", "parameters": [], "src": "1072:0:4"}, "scope": 2433, "src": "996:255:4", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2431, "nodeType": "Block", "src": "1521:822:4", "statements": [{"assignments": [2352], "declarations": [{"constant": false, "id": 2352, "mutability": "mutable", "name": "operatorsLength", "nameLocation": "1539:15:4", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1531:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2351, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1531:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2355, "initialValue": {"expression": {"id": 2353, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2334, "src": "1557:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1569:6:4", "memberName": "length", "nodeType": "MemberAccess", "src": "1557:18:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1531:44:4"}, {"body": {"id": 2429, "nodeType": "Block", "src": "1625:712:4", "statements": [{"assignments": [2363], "declarations": [{"constant": false, "id": 2363, "mutability": "mutable", "name": "operatorId", "nameLocation": "1646:10:4", "nodeType": "VariableDeclaration", "scope": 2429, "src": "1639:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2362, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1639:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 2367, "initialValue": {"baseExpression": {"id": 2364, "name": "operatorIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2334, "src": "1659:11:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[] memory"}}, "id": 2366, "indexExpression": {"id": 2365, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "1671:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1659:14:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "1639:34:4"}, {"assignments": [2372], "declarations": [{"constant": false, "id": 2372, "mutability": "mutable", "name": "operator", "nameLocation": "1720:8:4", "nodeType": "VariableDeclaration", "scope": 2429, "src": "1687:41:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 2371, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2370, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1687:15:4", "1703:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1687:24:4"}, "referencedDeclaration": 1699, "src": "1687:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 2377, "initialValue": {"baseExpression": {"expression": {"id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2341, "src": "1731:1:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 2374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1733:9:4", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1731:11:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 2376, "indexExpression": {"id": 2375, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2363, "src": "1743:10:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1731:23:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1687:67:4"}, {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 2378, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1772:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2379, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1781:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "1772:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2380, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1790:5:4", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "1772:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1799:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1772:28:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2418, "nodeType": "IfStatement", "src": "1768:446:4", "trueBody": {"id": 2417, "nodeType": "Block", "src": "1802:412:4", "statements": [{"expression": {"arguments": [{"id": 2384, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1837:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}], "id": 2383, "name": "updateSnapshotSt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2302, "src": "1820:16:4", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Operator_$1699_storage_ptr_$returns$__$", "typeString": "function (struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1820:26:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2386, "nodeType": "ExpressionStatement", "src": "1820:26:4"}, {"condition": {"id": 2388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1868:23:4", "subExpression": {"id": 2387, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2336, "src": "1869:22:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 2399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2396, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1991:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2000:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "1991:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 2398, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "2018:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1991:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 2400, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1990:48:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 2401, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2344, "src": "2041:2:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 2402, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2044:26:4", "memberName": "validatorsPerOperatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1800, "src": "2041:29:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1990:80:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2410, "nodeType": "IfStatement", "src": "1986:172:4", "trueBody": {"id": 2409, "nodeType": "Block", "src": "2072:86:4", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 2404, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "2101:15:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 2406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2117:20:4", "memberName": "ExceedValidatorLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1767, "src": "2101:36:4", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2101:38:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2408, "nodeType": "RevertStatement", "src": "2094:45:4"}]}}, "id": 2411, "nodeType": "IfStatement", "src": "1864:294:4", "trueBody": {"id": 2395, "nodeType": "Block", "src": "1893:87:4", "statements": [{"expression": {"id": 2393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2389, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "1915:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1924:14:4", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "1915:23:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 2392, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "1942:19:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1915:46:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 2394, "nodeType": "ExpressionStatement", "src": "1915:46:4"}]}}, {"expression": {"id": 2415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2412, "name": "burnRate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2349, "src": "2175:8:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 2413, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "2187:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2414, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2196:3:4", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "2187:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2175:24:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2416, "nodeType": "ExpressionStatement", "src": "2175:24:4"}]}}, {"expression": {"id": 2423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2419, "name": "clusterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2347, "src": "2228:12:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"expression": {"id": 2420, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2372, "src": "2244:8:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator storage pointer"}}, "id": 2421, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2253:8:4", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2244:17:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_storage", "typeString": "struct ISSVNetworkCore.Snapshot storage ref"}}, "id": 2422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2262:5:4", "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 1678, "src": "2244:23:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2228:39:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2424, "nodeType": "ExpressionStatement", "src": "2228:39:4"}, {"id": 2428, "nodeType": "UncheckedBlock", "src": "2281:46:4", "statements": [{"expression": {"id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "2309:3:4", "subExpression": {"id": 2425, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "2311:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2427, "nodeType": "ExpressionStatement", "src": "2309:3:4"}]}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2359, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2357, "src": "1602:1:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2360, "name": "operatorsLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2352, "src": "1606:15:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1602:19:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2430, "initializationExpression": {"assignments": [2357], "declarations": [{"constant": false, "id": 2357, "mutability": "mutable", "name": "i", "nameLocation": "1599:1:4", "nodeType": "VariableDeclaration", "scope": 2430, "src": "1591:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2356, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1591:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2358, "nodeType": "VariableDeclarationStatement", "src": "1591:9:4"}, "nodeType": "ForStatement", "src": "1586:751:4"}]}, "id": 2432, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperators", "nameLocation": "1266:15:4", "nodeType": "FunctionDefinition", "parameters": {"id": 2345, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2334, "mutability": "mutable", "name": "operatorIds", "nameLocation": "1307:11:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1291:27:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr", "typeString": "uint64[]"}, "typeName": {"baseType": {"id": 2332, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1291:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 2333, "nodeType": "ArrayTypeName", "src": "1291:8:4", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr", "typeString": "uint64[]"}}, "visibility": "internal"}, {"constant": false, "id": 2336, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1333:22:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1328:27:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2335, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1328:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2338, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1372:19:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1365:26:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 2337, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1365:6:4", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 2341, "mutability": "mutable", "name": "s", "nameLocation": "1421:1:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1401:21:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2340, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2339, "name": "StorageData", "nameLocations": ["1401:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1401:11:4"}, "referencedDeclaration": 2490, "src": "1401:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}, {"constant": false, "id": 2344, "mutability": "mutable", "name": "sp", "nameLocation": "1456:2:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1432:26:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 2343, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2342, "name": "StorageProtocol", "nameLocations": ["1432:15:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1432:15:4"}, "referencedDeclaration": 1828, "src": "1432:15:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1281:183:4"}, "returnParameters": {"id": 2350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2347, "mutability": "mutable", "name": "clusterIndex", "nameLocation": "1490:12:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1483:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2346, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1483:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 2349, "mutability": "mutable", "name": "burnRate", "nameLocation": "1511:8:4", "nodeType": "VariableDeclaration", "scope": 2432, "src": "1504:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 2348, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1482:38:4"}, "scope": 2433, "src": "1257:1086:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2434, "src": "199:2146:4", "usedErrors": []}], "src": "45:2301:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1856], "ISSVNetworkCore": [1786], "ProtocolLib": [833], "SSVStorageProtocol": [1851], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 834, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 667, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 668, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1787, "src": "70:43:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 669, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1919, "src": "114:21:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 670, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 834, "sourceUnit": 1852, "src": "136:34:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 833, "linearizedBaseContracts": [833], "name": "ProtocolLib", "nameLocation": "180:11:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 673, "libraryName": {"id": 671, "name": "Types256", "nameLocations": ["204:8:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "204:8:5"}, "nodeType": "UsingForDirective", "src": "198:27:5", "typeName": {"id": 672, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 696, "nodeType": "Block", "src": "433:113:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 681, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "450:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 682, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1806, "src": "450:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 685, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 687, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "493:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 688, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1791, "src": "493:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 684, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 683, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:5", "typeDescriptions": {}}}, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 691, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 676, "src": "526:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "526:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 680, "id": 695, "nodeType": "Return", "src": "443:96:5"}]}, "id": 697, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:5", "nodeType": "FunctionDefinition", "parameters": {"id": 677, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 676, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "374:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 675, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 674, "name": "StorageProtocol", "nameLocations": ["374:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "374:15:5"}, "referencedDeclaration": 1828, "src": "374:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:5"}, "returnParameters": {"id": 680, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 679, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 697, "src": "425:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 678, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:5"}, "scope": 833, "src": "342:204:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 735, "nodeType": "Block", "src": "628:196:5", "statements": [{"expression": {"arguments": [{"id": 706, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "656:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 705, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "638:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 708, "nodeType": "ExpressionStatement", "src": "638:21:5"}, {"expression": {"id": 715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 709, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "670:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 711, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:5", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 1806, "src": "670:18:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 713, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "714:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 712, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 697, "src": "691:22:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 716, "nodeType": "ExpressionStatement", "src": "670:47:5"}, {"expression": {"id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 717, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "727:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:5", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1791, "src": "727:29:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 722, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 721, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 720, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:5", "typeDescriptions": {}}}, "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 726, "nodeType": "ExpressionStatement", "src": "727:52:5"}, {"expression": {"id": 733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 727, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 700, "src": "789:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 729, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "789:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 730, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 702, "src": "805:3:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:5", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "805:10:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 732, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 734, "nodeType": "ExpressionStatement", "src": "789:28:5"}]}, "id": 736, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 700, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:5", "nodeType": "VariableDeclaration", "scope": 736, "src": "578:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 699, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 698, "name": "StorageProtocol", "nameLocations": ["578:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "578:15:5"}, "referencedDeclaration": 1828, "src": "578:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 702, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:5", "nodeType": "VariableDeclaration", "scope": 736, "src": "606:11:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:5"}, "returnParameters": {"id": 704, "nodeType": "ParameterList", "parameters": [], "src": "628:0:5"}, "scope": 833, "src": "552:272:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 760, "nodeType": "Block", "src": "993:112:5", "statements": [{"expression": {"id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 742, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1003:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 744, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "1003:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 746, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1040:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 745, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "1019:20:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 749, "nodeType": "ExpressionStatement", "src": "1003:40:5"}, {"expression": {"id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 750, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "1053:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 752, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "1053:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 755, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 754, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 753, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:5", "typeDescriptions": {}}}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 759, "nodeType": "ExpressionStatement", "src": "1053:45:5"}]}, "id": 761, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:5", "nodeType": "FunctionDefinition", "parameters": {"id": 740, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 739, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:5", "nodeType": "VariableDeclaration", "scope": 761, "src": "956:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 738, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 737, "name": "StorageProtocol", "nameLocations": ["956:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "956:15:5"}, "referencedDeclaration": 1828, "src": "956:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:5"}, "returnParameters": {"id": 741, "nodeType": "ParameterList", "parameters": [], "src": "993:0:5"}, "scope": 833, "src": "929:176:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 788, "nodeType": "Block", "src": "1200:126:5", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 769, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1217:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 770, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:5", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 1809, "src": "1217:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 773, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:5", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:5", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 772, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 771, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:5", "typeDescriptions": {}}}, "id": 775, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 776, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1257:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:5", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "1257:22:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 779, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 780, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1283:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 781, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:5", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 1803, "src": "1283:13:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 783, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "1299:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1299:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 768, "id": 787, "nodeType": "Return", "src": "1210:109:5"}]}, "id": 789, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:5", "nodeType": "FunctionDefinition", "parameters": {"id": 765, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 764, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:5", "nodeType": "VariableDeclaration", "scope": 789, "src": "1141:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 763, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 762, "name": "StorageProtocol", "nameLocations": ["1141:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1141:15:5"}, "referencedDeclaration": 1828, "src": "1141:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:5"}, "returnParameters": {"id": 768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 767, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 789, "src": "1192:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 766, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:5"}, "scope": 833, "src": "1111:215:5", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 831, "nodeType": "Block", "src": "1445:286:5", "statements": [{"expression": {"arguments": [{"id": 800, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1473:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 799, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "1455:17:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$1828_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 802, "nodeType": "ExpressionStatement", "src": "1455:21:5"}, {"condition": {"id": 804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:5", "subExpression": {"id": 803, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "1491:22:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 812, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1594:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1594:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 814, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 796, "src": "1618:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 816, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 819, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 818, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:5", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 817, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:5", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:5", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 829, "nodeType": "IfStatement", "src": "1589:136:5", "trueBody": {"id": 828, "nodeType": "Block", "src": "1659:66:5", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 823, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1680:15:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:5", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 1783, "src": "1680:32:5", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 827, "nodeType": "RevertStatement", "src": "1673:41:5"}]}}, "id": 830, "nodeType": "IfStatement", "src": "1486:239:5", "trueBody": {"id": 811, "nodeType": "Block", "src": "1515:68:5", "statements": [{"expression": {"id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 805, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "1529:2:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:5", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "1529:20:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 808, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 796, "src": "1553:19:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 810, "nodeType": "ExpressionStatement", "src": "1529:43:5"}]}}]}, "id": 832, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:5", "nodeType": "FunctionDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 792, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1351:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 790, "name": "StorageProtocol", "nameLocations": ["1351:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1351:15:5"}, "referencedDeclaration": 1828, "src": "1351:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 794, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1379:27:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 793, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 796, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:5", "nodeType": "VariableDeclaration", "scope": 832, "src": "1408:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 795, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:5"}, "returnParameters": {"id": 798, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:5"}, "scope": 833, "src": "1332:399:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 834, "src": "172:1561:5", "usedErrors": []}], "src": "45:1689:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [2587], "IERC20": [2665], "ISSVNetworkCore": [1786], "SSVModules": [2443], "SSVStorage": [2513], "StorageData": [2490]}, "id": 2514, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 2435, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 2436, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 1787, "src": "70:43:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 2437, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 2588, "src": "114:52:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2438, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2514, "sourceUnit": 2666, "src": "167:56:6", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 2443, "members": [{"id": 2439, "name": "SSV_OPERATORS", "nameLocation": "247:13:6", "nodeType": "EnumValue", "src": "247:13:6"}, {"id": 2440, "name": "SSV_CLUSTERS", "nameLocation": "266:12:6", "nodeType": "EnumValue", "src": "266:12:6"}, {"id": 2441, "name": "SSV_DAO", "nameLocation": "284:7:6", "nodeType": "EnumValue", "src": "284:7:6"}, {"id": 2442, "name": "SSV_VIEWS", "nameLocation": "297:9:6", "nodeType": "EnumValue", "src": "297:9:6"}], "name": "SSVModules", "nameLocation": "230:10:6", "nodeType": "EnumDefinition", "src": "225:83:6"}, {"canonicalName": "StorageData", "id": 2490, "members": [{"constant": false, "id": 2448, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "599:40:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2447, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2445, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2446, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2453, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "756:36:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 2452, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2450, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 2458, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "870:39:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 2457, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2455, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:6", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2456, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 2464, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "998:43:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 2463, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2461, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2460, "name": "SSVModules", "nameLocations": ["1006:10:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2443, "src": "1006:10:6"}, "referencedDeclaration": 2443, "src": "1006:10:6", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$2443", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$2443_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2462, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2469, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1159:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 2468, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2466, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2467, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 2475, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1304:85:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 2474, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2471, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2473, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2472, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:6", "1338:24:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1709, "src": "1322:40:6"}, "referencedDeclaration": 1709, "src": "1322:40:6", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 2481, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1470:53:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 2480, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 2477, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 2479, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2478, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:6", "1504:8:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1488:24:6"}, "referencedDeclaration": 1699, "src": "1488:24:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 2485, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1599:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}, "typeName": {"id": 2484, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2483, "name": "IERC20", "nameLocations": ["1599:6:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2665, "src": "1599:6:6"}, "referencedDeclaration": 2665, "src": "1599:6:6", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$2665", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 2489, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:6", "nodeType": "VariableDeclaration", "scope": 2490, "src": "1686:31:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2488, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2487, "name": "Counters.Counter", "nameLocations": ["1686:8:6", "1695:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1686:16:6"}, "referencedDeclaration": 2519, "src": "1686:16:6", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:6", "nodeType": "StructDefinition", "scope": 2514, "src": "419:1301:6", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 2513, "linearizedBaseContracts": [2513], "name": "SSVStorage", "nameLocation": "1730:10:6", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2500, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:6", "nodeType": "VariableDeclaration", "scope": 2513, "src": "1747:98:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2491, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2499, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 2494, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:6", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2496, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 2493, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2492, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:6", "typeDescriptions": {}}}, "id": 2497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 2511, "nodeType": "Block", "src": "1915:117:6", "statements": [{"assignments": [2507], "declarations": [{"constant": false, "id": 2507, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:6", "nodeType": "VariableDeclaration", "scope": 2511, "src": "1925:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2509, "initialValue": {"id": 2508, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2500, "src": "1944:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:6"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:6", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:6", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:6"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:6"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 2507, "isOffset": false, "isSlot": false, "src": "2008:8:6", "valueSize": 1}, {"declaration": 2504, "isOffset": false, "isSlot": true, "src": "1997:7:6", "suffix": "slot", "valueSize": 1}], "id": 2510, "nodeType": "InlineAssembly", "src": "1974:52:6"}]}, "id": 2512, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 2501, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:6"}, "returnParameters": {"id": 2505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2504, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:6", "nodeType": "VariableDeclaration", "scope": 2512, "src": "1891:22:6", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 2503, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2502, "name": "StorageData", "nameLocations": ["1891:11:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1891:11:6"}, "referencedDeclaration": 2490, "src": "1891:11:6", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:6"}, "scope": 2513, "src": "1852:180:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2514, "src": "1722:312:6", "usedErrors": []}], "src": "45:1990:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1851], "StorageProtocol": [1828]}, "id": 1852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1788, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"canonicalName": "StorageProtocol", "id": 1828, "members": [{"constant": false, "id": 1791, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "307:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1790, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1794, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "406:24:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1793, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1797, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "505:26:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1796, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1800, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "598:33:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 1799, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:7", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 1803, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "683:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1802, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1806, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "758:22:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1805, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1809, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "833:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1808, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1812, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "945:37:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1811, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1815, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1052:35:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1814, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1818, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1166:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1817, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1821, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1278:31:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1820, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1824, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1397:29:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1823, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1827, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:7", "nodeType": "VariableDeclaration", "scope": 1828, "src": "1504:21:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1826, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:7", "nodeType": "StructDefinition", "scope": 1852, "src": "201:1327:7", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1851, "linearizedBaseContracts": [1851], "name": "SSVStorageProtocol", "nameLocation": "1538:18:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 1838, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:7", "nodeType": "VariableDeclaration", "scope": 1851, "src": "1563:102:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:7", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 1832, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:7", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 1834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 1830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:7", "typeDescriptions": {}}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1849, "nodeType": "Block", "src": "1739:117:7", "statements": [{"assignments": [1845], "declarations": [{"constant": false, "id": 1845, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:7", "nodeType": "VariableDeclaration", "scope": 1849, "src": "1749:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1847, "initialValue": {"id": 1846, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1838, "src": "1768:20:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:7"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:7", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:7", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:7"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:7"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1845, "isOffset": false, "isSlot": false, "src": "1832:8:7", "valueSize": 1}, {"declaration": 1842, "isOffset": false, "isSlot": true, "src": "1821:7:7", "suffix": "slot", "valueSize": 1}], "id": 1848, "nodeType": "InlineAssembly", "src": "1798:52:7"}]}, "id": 1850, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1839, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:7"}, "returnParameters": {"id": 1843, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1842, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:7", "nodeType": "VariableDeclaration", "scope": 1850, "src": "1711:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1841, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1840, "name": "StorageProtocol", "nameLocations": ["1711:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "1711:15:7"}, "referencedDeclaration": 1828, "src": "1711:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:7"}, "scope": 1851, "src": "1672:184:7", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1852, "src": "1530:328:7", "usedErrors": []}], "src": "45:1814:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [1856], "Types256": [1918], "Types64": [1869]}, "id": 1919, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"constant": true, "id": 1856, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:8", "nodeType": "VariableDeclaration", "scope": 1919, "src": "70:45:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 1855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:8", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1869, "linearizedBaseContracts": [1869], "name": "Types64", "nameLocation": "126:7:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1867, "nodeType": "Block", "src": "202:47:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1863, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1858, "src": "219:5:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1864, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "227:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1862, "id": 1866, "nodeType": "Return", "src": "212:30:8"}]}, "id": 1868, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1859, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1858, "mutability": "mutable", "name": "value", "nameLocation": "163:5:8", "nodeType": "VariableDeclaration", "scope": 1868, "src": "156:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1857, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:8"}, "returnParameters": {"id": 1862, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1861, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1868, "src": "193:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:8"}, "scope": 1869, "src": "140:109:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1919, "src": "118:133:8", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1918, "linearizedBaseContracts": [1918], "name": "Types256", "nameLocation": "261:8:8", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1897, "nodeType": "Block", "src": "338:143:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1877, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "356:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 1880, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 1878, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "365:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 1879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "370:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "365:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 1881, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "375:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "365:25:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 1883, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "364:27:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:35:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 1885, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "393:20:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 1876, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:66:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1887, "nodeType": "ExpressionStatement", "src": "348:66:8"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1891, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "449:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1890, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1917, "src": "438:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 1892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "438:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1893, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "458:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "438:35:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "431:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1888, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "431:6:8", "typeDescriptions": {}}}, "id": 1895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "431:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 1875, "id": 1896, "nodeType": "Return", "src": "424:50:8"}]}, "id": 1898, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1872, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1871, "mutability": "mutable", "name": "value", "nameLocation": "300:5:8", "nodeType": "VariableDeclaration", "scope": 1898, "src": "292:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:8"}, "returnParameters": {"id": 1875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1874, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1898, "src": "330:6:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1873, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:8"}, "scope": 1918, "src": "276:205:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 1916, "nodeType": "Block", "src": "554:102:8", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1906, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1900, "src": "572:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 1907, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1856, "src": "580:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "572:23:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "599:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "572:28:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 1911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "602:24:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "564:7:8", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "564:63:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1913, "nodeType": "ExpressionStatement", "src": "564:63:8"}, {"expression": {"id": 1914, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1900, "src": "644:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1904, "id": 1915, "nodeType": "Return", "src": "637:12:8"}]}, "id": 1917, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "496:10:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1901, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1900, "mutability": "mutable", "name": "value", "nameLocation": "515:5:8", "nodeType": "VariableDeclaration", "scope": 1917, "src": "507:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1899, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "507:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "506:15:8"}, "returnParameters": {"id": 1904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1903, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1917, "src": "545:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "545:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "544:9:8"}, "scope": 1918, "src": "487:169:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1919, "src": "253:405:8", "usedErrors": []}], "src": "45:614:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol": {"AST": {"absolutePath": "contracts/modules/SSVOperators.sol", "exportedSymbols": {"CoreLib": [2185], "Counters": [2587], "DEDUCTED_DIGITS": [1856], "IERC20": [2665], "ISSVNetworkCore": [1786], "ISSVOperators": [2054], "OperatorLib": [2433], "SSVModules": [2443], "SSVOperators": [1670], "SSVStorage": [2513], "SSVStorageProtocol": [1851], "StorageData": [2490], "StorageProtocol": [1828], "Types256": [1918], "Types64": [1869]}, "id": 1671, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 835, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:9"}, {"absolutePath": "contracts/interfaces/ISSVOperators.sol", "file": "../interfaces/ISSVOperators.sol", "id": 836, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2055, "src": "70:41:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 837, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 1919, "src": "112:32:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "../libraries/SSVStorage.sol", "id": 838, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2514, "src": "145:37:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "../libraries/SSVStorageProtocol.sol", "id": 839, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 1852, "src": "183:45:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/OperatorLib.sol", "file": "../libraries/OperatorLib.sol", "id": 840, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2434, "src": "229:38:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 841, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2186, "src": "268:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 842, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1671, "sourceUnit": 2588, "src": "304:52:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 843, "name": "ISSVOperators", "nameLocations": ["383:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2054, "src": "383:13:9"}, "id": 844, "nodeType": "InheritanceSpecifier", "src": "383:13:9"}], "canonicalName": "SSVOperators", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 1670, "linearizedBaseContracts": [1670, 2054, 1786], "name": "SSVOperators", "nameLocation": "367:12:9", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 847, "mutability": "constant", "name": "MINIMAL_OPERATOR_FEE", "nameLocation": "427:20:9", "nodeType": "VariableDeclaration", "scope": 1670, "src": "403:58:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 845, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "403:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f3030305f303030", "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:11:9", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100_000_000"}, "visibility": "private"}, {"constant": true, "id": 850, "mutability": "constant", "name": "PRECISION_FACTOR", "nameLocation": "491:16:9", "nodeType": "VariableDeclaration", "scope": 1670, "src": "467:49:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 848, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "467:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "31305f303030", "id": 849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "510:6:9", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "value": "10_000"}, "visibility": "private"}, {"global": false, "id": 853, "libraryName": {"id": 851, "name": "Types256", "nameLocations": ["529:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1918, "src": "529:8:9"}, "nodeType": "UsingForDirective", "src": "523:27:9", "typeName": {"id": 852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "542:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 856, "libraryName": {"id": 854, "name": "Types64", "nameLocations": ["561:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1869, "src": "561:7:9"}, "nodeType": "UsingForDirective", "src": "555:25:9", "typeName": {"id": 855, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "573:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 860, "libraryName": {"id": 857, "name": "Counters", "nameLocations": ["591:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2587, "src": "591:8:9"}, "nodeType": "UsingForDirective", "src": "585:36:9", "typeName": {"id": 859, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 858, "name": "Counters.Counter", "nameLocations": ["604:8:9", "613:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "604:16:9"}, "referencedDeclaration": 2519, "src": "604:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}}, {"global": false, "id": 864, "libraryName": {"id": 861, "name": "OperatorLib", "nameLocations": ["632:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2433, "src": "632:11:9"}, "nodeType": "UsingForDirective", "src": "626:31:9", "typeName": {"id": 863, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 862, "name": "Operator", "nameLocations": ["648:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "648:8:9"}, "referencedDeclaration": 1699, "src": "648:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, {"baseFunctions": [1933], "body": {"id": 985, "nodeType": "Block", "src": "881:895:9", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 874, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "895:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "902:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "895:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 877, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "907:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 878, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "913:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "907:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "895:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 887, "nodeType": "IfStatement", "src": "891:103:9", "trueBody": {"id": 886, "nodeType": "Block", "src": "935:59:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 881, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "956:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "972:9:9", "memberName": "FeeTooLow", "nodeType": "MemberAccess", "referencedDeclaration": 1731, "src": "956:25:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "956:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 885, "nodeType": "RevertStatement", "src": "949:34:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 888, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1007:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 889, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "1013:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1032:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "1013:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1013:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1039:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "1013:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1007:46:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 900, "nodeType": "IfStatement", "src": "1003:112:9", "trueBody": {"id": 899, "nodeType": "Block", "src": "1055:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 894, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1076:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1092:10:9", "memberName": "FeeTooHigh", "nodeType": "MemberAccess", "referencedDeclaration": 1785, "src": "1076:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1076:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 898, "nodeType": "RevertStatement", "src": "1069:35:9"}]}}, {"assignments": [903], "declarations": [{"constant": false, "id": 903, "mutability": "mutable", "name": "s", "nameLocation": "1145:1:9", "nodeType": "VariableDeclaration", "scope": 985, "src": "1125:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 901, "name": "StorageData", "nameLocations": ["1125:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1125:11:9"}, "referencedDeclaration": 2490, "src": "1125:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 907, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 904, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1149:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1160:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1149:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 906, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1149:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1125:41:9"}, {"assignments": [909], "declarations": [{"constant": false, "id": 909, "mutability": "mutable", "name": "hashedPk", "nameLocation": "1185:8:9", "nodeType": "VariableDeclaration", "scope": 985, "src": "1177:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 908, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1177:7:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 913, "initialValue": {"arguments": [{"id": 911, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "1206:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}], "id": 910, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1196:9:9", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1196:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1177:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"expression": {"id": 914, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1230:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 915, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1232:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1230:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 917, "indexExpression": {"id": 916, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "1245:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1230:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1258:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1230:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 925, "nodeType": "IfStatement", "src": "1226:81:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 920, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1268:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1284:21:9", "memberName": "OperatorAlreadyExists", "nodeType": "MemberAccess", "referencedDeclaration": 1779, "src": "1268:37:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1268:39:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 924, "nodeType": "RevertStatement", "src": "1261:46:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 926, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1318:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 929, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1320:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2489, "src": "1318:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 930, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1335:9:9", "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2545, "src": "1318:26:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2519_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$2519_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)"}}, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 932, "nodeType": "ExpressionStatement", "src": "1318:28:9"}, {"expression": {"id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 933, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1356:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 936, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1368:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 937, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1370:14:9", "memberName": "lastOperatorId", "nodeType": "MemberAccess", "referencedDeclaration": 2489, "src": "1368:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage", "typeString": "struct Counters.Counter storage ref"}}, "id": 938, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1385:7:9", "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2531, "src": "1368:24:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2519_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$2519_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"}}, "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1368:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 935, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1361:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 934, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1361:6:9", "typeDescriptions": {}}}, "id": 940, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1361:34:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1356:39:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 942, "nodeType": "ExpressionStatement", "src": "1356:39:9"}, {"expression": {"id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 943, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1405:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1407:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1405:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 947, "indexExpression": {"id": 945, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1417:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1405:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 949, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1453:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1457:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1453:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"arguments": [{"expression": {"id": 955, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "1527:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 954, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1520:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 953, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1520:6:9", "typeDescriptions": {}}}, "id": 957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1520:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, {"hexValue": "30", "id": 958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1549:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"hexValue": "30", "id": 959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1561:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint32", "typeString": "uint32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "expression": {"id": 951, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1786, "src": "1487:15:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$1786_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1503:8:9", "memberName": "Snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1682, "src": "1487:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Snapshot_$1682_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Snapshot storage pointer)"}}, "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1513:5:9", "1542:5:9", "1552:7:9"], "names": ["block", "index", "balance"], "nodeType": "FunctionCall", "src": "1487:77:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, {"hexValue": "30", "id": 961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1594:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 962, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1614:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1618:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "1614:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1614:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "66616c7365", "id": 965, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1653:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 948, "name": "Operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "1423:8:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Operator_$1699_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.Operator storage pointer)"}}, "id": 966, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1446:5:9", "1477:8:9", "1578:14:9", "1609:3:9", "1640:11:9"], "names": ["owner", "snapshot", "validatorCount", "fee", "whitelisted"], "nodeType": "FunctionCall", "src": "1423:246:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "1405:264:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 968, "nodeType": "ExpressionStatement", "src": "1405:264:9"}, {"expression": {"id": 975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 969, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "1679:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 972, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1681:12:9", "memberName": "operatorsPKs", "nodeType": "MemberAccess", "referencedDeclaration": 2458, "src": "1679:14:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}}, "id": 973, "indexExpression": {"id": 971, "name": "hashedPk", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "1694:8:9", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1679:24:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 974, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1706:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1679:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 976, "nodeType": "ExpressionStatement", "src": "1679:29:9"}, {"eventCall": {"arguments": [{"id": 978, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 872, "src": "1738:2:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 979, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1742:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1746:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "1742:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 981, "name": "publicKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "1754:9:9", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, {"id": 982, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "1765:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 977, "name": "OperatorAdded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2000, "src": "1724:13:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint64,address,bytes memory,uint256)"}}, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1724:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 984, "nodeType": "EmitStatement", "src": "1719:50:9"}]}, "functionSelector": "ff212c5c", "id": 986, "implemented": true, "kind": "function", "modifiers": [], "name": "registerOperator", "nameLocation": "787:16:9", "nodeType": "FunctionDefinition", "overrides": {"id": 870, "nodeType": "OverrideSpecifier", "overrides": [], "src": "852:8:9"}, "parameters": {"id": 869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 866, "mutability": "mutable", "name": "publicKey", "nameLocation": "819:9:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "804:24:9", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 865, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "804:5:9", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 868, "mutability": "mutable", "name": "fee", "nameLocation": "838:3:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "830:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "830:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "803:39:9"}, "returnParameters": {"id": 873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 872, "mutability": "mutable", "name": "id", "nameLocation": "877:2:9", "nodeType": "VariableDeclaration", "scope": 986, "src": "870:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 871, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "870:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "869:11:9"}, "scope": 1670, "src": "778:998:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1939], "body": {"id": 1081, "nodeType": "Block", "src": "1843:647:9", "statements": [{"assignments": [994], "declarations": [{"constant": false, "id": 994, "mutability": "mutable", "name": "s", "nameLocation": "1873:1:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1853:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 993, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 992, "name": "StorageData", "nameLocations": ["1853:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "1853:11:9"}, "referencedDeclaration": 2490, "src": "1853:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 998, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 995, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "1877:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1888:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "1877:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1877:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "1853:41:9"}, {"assignments": [1001], "declarations": [{"constant": false, "id": 1001, "mutability": "mutable", "name": "operator", "nameLocation": "1920:8:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "1904:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1000, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 999, "name": "Operator", "nameLocations": ["1904:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "1904:8:9"}, "referencedDeclaration": 1699, "src": "1904:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1006, "initialValue": {"baseExpression": {"expression": {"id": 1002, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1931:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1003, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1933:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "1931:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1005, "indexExpression": {"id": 1004, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "1943:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1931:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1904:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1007, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "1964:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1009, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1973:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "1964:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1964:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1011, "nodeType": "ExpressionStatement", "src": "1964:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1012, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "1996:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1014, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2005:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "1996:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1996:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1016, "nodeType": "ExpressionStatement", "src": "1996:25:9"}, {"assignments": [1018], "declarations": [{"constant": false, "id": 1018, "mutability": "mutable", "name": "currentBalance", "nameLocation": "2038:14:9", "nodeType": "VariableDeclaration", "scope": 1081, "src": "2031:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1017, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2031:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1022, "initialValue": {"expression": {"expression": {"id": 1019, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1020, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2064:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2055:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1021, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2073:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "2055:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "2031:49:9"}, {"expression": {"id": 1029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1023, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2091:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1026, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2100:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2091:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1027, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2109:5:9", "memberName": "block", "nodeType": "MemberAccess", "referencedDeclaration": 1675, "src": "2091:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1028, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2117:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2091:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1030, "nodeType": "ExpressionStatement", "src": "2091:27:9"}, {"expression": {"id": 1037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1031, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2128:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1034, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2137:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "2128:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1035, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2146:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "2128:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2156:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2128:29:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1038, "nodeType": "ExpressionStatement", "src": "2128:29:9"}, {"expression": {"id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1039, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2167:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1041, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2176:14:9", "memberName": "validatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 1685, "src": "2167:23:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2193:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2167:27:9", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 1044, "nodeType": "ExpressionStatement", "src": "2167:27:9"}, {"expression": {"id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1045, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2204:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1047, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2213:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "2204:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2219:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2204:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1050, "nodeType": "ExpressionStatement", "src": "2204:16:9"}, {"expression": {"id": 1057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1051, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2231:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2233:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2231:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1055, "indexExpression": {"id": 1053, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2243:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2231:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1056, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1001, "src": "2257:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "2231:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1058, "nodeType": "ExpressionStatement", "src": "2231:34:9"}, {"expression": {"id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2276:39:9", "subExpression": {"baseExpression": {"expression": {"id": 1059, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "2283:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1060, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2285:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2469, "src": "2283:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1062, "indexExpression": {"id": 1061, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2304:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2283:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1064, "nodeType": "ExpressionStatement", "src": "2276:39:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1065, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1018, "src": "2330:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1066, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2347:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2330:18:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1076, "nodeType": "IfStatement", "src": "2326:116:9", "trueBody": {"id": 1075, "nodeType": "Block", "src": "2350:92:9", "statements": [{"expression": {"arguments": [{"id": 1069, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2395:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1070, "name": "currentBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1018, "src": "2407:14:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2422:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "2407:21:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2407:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1068, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1669, "src": "2364:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2364:67:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1074, "nodeType": "ExpressionStatement", "src": "2364:67:9"}]}}, {"eventCall": {"arguments": [{"id": 1078, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 988, "src": "2472:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1077, "name": "OperatorRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2005, "src": "2456:15:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2456:27:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1080, "nodeType": "EmitStatement", "src": "2451:32:9"}]}, "functionSelector": "2e168e0e", "id": 1082, "implemented": true, "kind": "function", "modifiers": [], "name": "removeOperator", "nameLocation": "1791:14:9", "nodeType": "FunctionDefinition", "overrides": {"id": 990, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1834:8:9"}, "parameters": {"id": 989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 988, "mutability": "mutable", "name": "operatorId", "nameLocation": "1813:10:9", "nodeType": "VariableDeclaration", "scope": 1082, "src": "1806:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 987, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1806:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1805:19:9"}, "returnParameters": {"id": 991, "nodeType": "ParameterList", "parameters": [], "src": "1843:0:9"}, "scope": 1670, "src": "1782:708:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1947], "body": {"id": 1144, "nodeType": "Block", "src": "2575:407:9", "statements": [{"assignments": [1091], "declarations": [{"constant": false, "id": 1091, "mutability": "mutable", "name": "s", "nameLocation": "2605:1:9", "nodeType": "VariableDeclaration", "scope": 1144, "src": "2585:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1090, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1089, "name": "StorageData", "nameLocations": ["2585:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "2585:11:9"}, "referencedDeclaration": 2490, "src": "2585:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1095, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1092, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "2609:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2620:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "2609:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1094, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2609:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "2585:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1096, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2636:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1099, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2638:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2636:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1100, "indexExpression": {"id": 1098, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2648:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2636:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1101, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2660:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "2636:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2636:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1103, "nodeType": "ExpressionStatement", "src": "2636:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1104, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2687:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2710:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2702:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1105, "name": "address", "nodeType": "ElementaryTypeName", "src": "2702:7:9", "typeDescriptions": {}}}, "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2702:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2687:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1129, "nodeType": "Block", "src": "2788:67:9", "statements": [{"expression": {"id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1120, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2802:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1123, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2804:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2802:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1124, "indexExpression": {"id": 1122, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2814:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2802:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1125, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2826:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "2802:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2840:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "2802:42:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1128, "nodeType": "ExpressionStatement", "src": "2802:42:9"}]}, "id": 1130, "nodeType": "IfStatement", "src": "2683:172:9", "trueBody": {"id": 1119, "nodeType": "Block", "src": "2714:68:9", "statements": [{"expression": {"id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"baseExpression": {"expression": {"id": 1110, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2728:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2730:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "2728:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1114, "indexExpression": {"id": 1112, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2740:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2728:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2752:11:9", "memberName": "whitelisted", "nodeType": "MemberAccess", "referencedDeclaration": 1694, "src": "2728:35:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2766:5:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "2728:43:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1118, "nodeType": "ExpressionStatement", "src": "2728:43:9"}]}}, {"expression": {"id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1131, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1091, "src": "2865:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2867:18:9", "memberName": "operatorsWhitelist", "nodeType": "MemberAccess", "referencedDeclaration": 2469, "src": "2865:20:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}}, "id": 1135, "indexExpression": {"id": 1133, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2886:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2865:32:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1136, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2900:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2865:46:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1138, "nodeType": "ExpressionStatement", "src": "2865:46:9"}, {"eventCall": {"arguments": [{"id": 1140, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1084, "src": "2951:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1141, "name": "whitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "2963:11:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1139, "name": "OperatorWhitelistUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2012, "src": "2926:24:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$", "typeString": "function (uint64,address)"}}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2926:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1143, "nodeType": "EmitStatement", "src": "2921:54:9"}]}, "functionSelector": "c90a7eab", "id": 1145, "implemented": true, "kind": "function", "modifiers": [], "name": "setOperatorWhitelist", "nameLocation": "2505:20:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "operatorId", "nameLocation": "2533:10:9", "nodeType": "VariableDeclaration", "scope": 1145, "src": "2526:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1083, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2526:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1086, "mutability": "mutable", "name": "whitelisted", "nameLocation": "2553:11:9", "nodeType": "VariableDeclaration", "scope": 1145, "src": "2545:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "2545:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2525:40:9"}, "returnParameters": {"id": 1088, "nodeType": "ParameterList", "parameters": [], "src": "2575:0:9"}, "scope": 1670, "src": "2496:486:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1955], "body": {"id": 1286, "nodeType": "Block", "src": "3066:1226:9", "statements": [{"assignments": [1155], "declarations": [{"constant": false, "id": 1155, "mutability": "mutable", "name": "s", "nameLocation": "3096:1:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3076:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1154, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1153, "name": "StorageData", "nameLocations": ["3076:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "3076:11:9"}, "referencedDeclaration": 2490, "src": "3076:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1159, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1156, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "3100:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3111:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "3100:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3100:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3076:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1160, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3127:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1163, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3129:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3127:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1164, "indexExpression": {"id": 1162, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3139:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3127:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1165, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3151:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "3127:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3127:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1167, "nodeType": "ExpressionStatement", "src": "3127:36:9"}, {"assignments": [1170], "declarations": [{"constant": false, "id": 1170, "mutability": "mutable", "name": "sp", "nameLocation": "3198:2:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3174:26:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 1169, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1168, "name": "StorageProtocol", "nameLocations": ["3174:15:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1828, "src": "3174:15:9"}, "referencedDeclaration": 1828, "src": "3174:15:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 1174, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1171, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "3203:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3222:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "3203:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3203:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "3174:54:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1175, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3243:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1176, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3250:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3243:8:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1178, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3255:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 1179, "name": "MINIMAL_OPERATOR_FEE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 847, "src": "3261:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3255:26:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3243:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1185, "nodeType": "IfStatement", "src": "3239:62:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1182, "name": "FeeTooLow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1731, "src": "3290:9:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3290:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1184, "nodeType": "RevertStatement", "src": "3283:18:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1186, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3315:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1187, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "3321:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1188, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3324:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "3321:17:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3315:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1193, "nodeType": "IfStatement", "src": "3311:48:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1190, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1785, "src": "3347:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1191, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3347:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1192, "nodeType": "RevertStatement", "src": "3340:19:9"}}, {"assignments": [1195], "declarations": [{"constant": false, "id": 1195, "mutability": "mutable", "name": "operatorFee", "nameLocation": "3377:11:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3370:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1194, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3370:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1201, "initialValue": {"expression": {"baseExpression": {"expression": {"id": 1196, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3391:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1197, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3393:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "3391:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1199, "indexExpression": {"id": 1198, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3403:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3391:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3415:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "3391:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3370:48:9"}, {"assignments": [1203], "declarations": [{"constant": false, "id": 1203, "mutability": "mutable", "name": "shrunkFee", "nameLocation": "3435:9:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3428:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1202, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3428:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1207, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1204, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "3447:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3451:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "3447:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3447:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3428:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1208, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3474:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1209, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3489:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3474:24:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1215, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3567:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3580:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3567:14:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1218, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3585:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3600:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3585:16:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3567:34:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1226, "nodeType": "IfStatement", "src": "3563:95:9", "trueBody": {"id": 1225, "nodeType": "Block", "src": "3603:55:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1222, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1773, "src": "3624:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3624:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1224, "nodeType": "RevertStatement", "src": "3617:30:9"}]}}, "id": 1227, "nodeType": "IfStatement", "src": "3470:188:9", "trueBody": {"id": 1214, "nodeType": "Block", "src": "3500:57:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1211, "name": "SameFeeChangeNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "3521:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3521:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1213, "nodeType": "RevertStatement", "src": "3514:32:9"}]}}, {"assignments": [1229], "declarations": [{"constant": false, "id": 1229, "mutability": "mutable", "name": "maxAllowedFee", "nameLocation": "3763:13:9", "nodeType": "VariableDeclaration", "scope": 1286, "src": "3756:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1228, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3756:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1240, "initialValue": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1230, "name": "operatorFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3780:11:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1231, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "3795:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1232, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "3814:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3817:22:9", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 1824, "src": "3814:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3795:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1235, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3794:46:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3780:60:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 1237, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3779:62:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 1238, "name": "PRECISION_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 850, "src": "3844:16:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3779:81:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "3756:104:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1241, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "3875:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 1242, "name": "maxAllowedFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1229, "src": "3887:13:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "3875:25:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1247, "nodeType": "IfStatement", "src": "3871:63:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1244, "name": "FeeExceedsIncreaseLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1733, "src": "3909:23:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3909:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1246, "nodeType": "RevertStatement", "src": "3902:32:9"}}, {"expression": {"id": 1275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1248, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1155, "src": "3945:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1251, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3947:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "3945:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1252, "indexExpression": {"id": 1250, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3973:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3945:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 1254, "name": "shrunkFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1203, "src": "4025:9:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1257, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4055:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4061:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4055:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4048:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1255, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4048:6:9", "typeDescriptions": {}}}, "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4048:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1260, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4074:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1261, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4077:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "4074:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4048:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 1265, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4122:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4128:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4122:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1264, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4115:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 1263, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4115:6:9", "typeDescriptions": {}}}, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4115:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1268, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4141:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1269, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4144:24:9", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1818, "src": "4141:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4115:53:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 1271, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1170, "src": "4171:2:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4174:24:9", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1821, "src": "4171:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4115:83:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1253, "name": "OperatorFeeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1709, "src": "3987:24:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr_$", "typeString": "type(struct ISSVNetworkCore.OperatorFeeChangeRequest storage pointer)"}}, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3987:221:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "src": "3945:263:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1276, "nodeType": "ExpressionStatement", "src": "3945:263:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1278, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4243:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4247:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "4243:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1280, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "4255:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1281, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4267:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4273:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "4267:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1283, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "4281:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1277, "name": "OperatorFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "4223:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4223:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1285, "nodeType": "EmitStatement", "src": "4218:67:9"}]}, "functionSelector": "b317c35f", "id": 1287, "implemented": true, "kind": "function", "modifiers": [], "name": "declareOperatorFee", "nameLocation": "2997:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1151, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3057:8:9"}, "parameters": {"id": 1150, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1147, "mutability": "mutable", "name": "operatorId", "nameLocation": "3023:10:9", "nodeType": "VariableDeclaration", "scope": 1287, "src": "3016:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1146, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3016:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1149, "mutability": "mutable", "name": "fee", "nameLocation": "3043:3:9", "nodeType": "VariableDeclaration", "scope": 1287, "src": "3035:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3035:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3015:32:9"}, "returnParameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [], "src": "3066:0:9"}, "scope": 1670, "src": "2988:1304:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1961], "body": {"id": 1396, "nodeType": "Block", "src": "4363:926:9", "statements": [{"assignments": [1295], "declarations": [{"constant": false, "id": 1295, "mutability": "mutable", "name": "s", "nameLocation": "4393:1:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4373:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1294, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1293, "name": "StorageData", "nameLocations": ["4373:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "4373:11:9"}, "referencedDeclaration": 2490, "src": "4373:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1299, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1296, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "4397:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4408:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "4397:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4397:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "4373:41:9"}, {"assignments": [1302], "declarations": [{"constant": false, "id": 1302, "mutability": "mutable", "name": "operator", "nameLocation": "4440:8:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4424:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1301, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1300, "name": "Operator", "nameLocations": ["4424:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "4424:8:9"}, "referencedDeclaration": 1699, "src": "4424:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1307, "initialValue": {"baseExpression": {"expression": {"id": 1303, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "4451:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4453:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "4451:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1306, "indexExpression": {"id": 1305, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "4463:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4451:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4424:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1308, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "4484:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4493:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "4484:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4484:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1312, "nodeType": "ExpressionStatement", "src": "4484:21:9"}, {"assignments": [1315], "declarations": [{"constant": false, "id": 1315, "mutability": "mutable", "name": "feeChangeRequest", "nameLocation": "4548:16:9", "nodeType": "VariableDeclaration", "scope": 1396, "src": "4516:48:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}, "typeName": {"id": 1314, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1313, "name": "OperatorFeeChangeRequest", "nameLocations": ["4516:24:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1709, "src": "4516:24:9"}, "referencedDeclaration": 1709, "src": "4516:24:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}, "visibility": "internal"}], "id": 1320, "initialValue": {"baseExpression": {"expression": {"id": 1316, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "4567:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4569:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "4567:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1319, "indexExpression": {"id": 1318, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "4595:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4567:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4516:90:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1321, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4621:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1322, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4638:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4621:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1323, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4659:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4621:39:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1328, "nodeType": "IfStatement", "src": "4617:67:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1325, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1735, "src": "4669:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1326, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4669:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1327, "nodeType": "RevertStatement", "src": "4662:22:9"}}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1329, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4712:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4718:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4712:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 1331, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4730:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1332, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4747:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "4730:34:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4712:52:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1334, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4768:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4774:9:9", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4768:15:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 1336, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4786:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4803:15:9", "memberName": "approvalEndTime", "nodeType": "MemberAccess", "referencedDeclaration": 1708, "src": "4786:32:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4768:50:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4712:106:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1344, "nodeType": "IfStatement", "src": "4695:194:9", "trueBody": {"id": 1343, "nodeType": "Block", "src": "4829:60:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1340, "name": "ApprovalNotWithinTimeframe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1737, "src": "4850:26:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4850:28:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1342, "nodeType": "RevertStatement", "src": "4843:35:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1345, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "4903:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1346, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4920:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "4903:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4924:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "4903:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1348, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4903:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1349, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1851, "src": "4935:18:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1851_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 1350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4954:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1850, "src": "4935:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$1828_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4935:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$1828_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 1352, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4961:14:9", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 1827, "src": "4935:40:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "4903:72:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1357, "nodeType": "IfStatement", "src": "4899:97:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1354, "name": "FeeTooHigh", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1785, "src": "4984:10:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4984:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1356, "nodeType": "RevertStatement", "src": "4977:19:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1358, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5007:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1360, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5016:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "5007:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5007:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1362, "nodeType": "ExpressionStatement", "src": "5007:25:9"}, {"expression": {"id": 1368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1363, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5042:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1365, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5051:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "5042:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 1366, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "5057:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5074:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "5057:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5042:35:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1369, "nodeType": "ExpressionStatement", "src": "5042:35:9"}, {"expression": {"id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1370, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "5087:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1373, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5089:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5087:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1374, "indexExpression": {"id": 1372, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5099:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5087:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1375, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5113:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "5087:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1377, "nodeType": "ExpressionStatement", "src": "5087:34:9"}, {"expression": {"id": 1382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5132:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1378, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1295, "src": "5139:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1379, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5141:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5139:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1381, "indexExpression": {"id": 1380, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5167:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5139:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1383, "nodeType": "ExpressionStatement", "src": "5132:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1385, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5214:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5218:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5214:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1387, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1289, "src": "5226:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1388, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5238:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5244:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "5238:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"expression": {"id": 1390, "name": "feeChangeRequest", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1315, "src": "5252:16:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_memory_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest memory"}}, "id": 1391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5269:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "5252:20:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5273:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "5252:27:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5252:29:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1384, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "5194:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5194:88:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1395, "nodeType": "EmitStatement", "src": "5189:93:9"}]}, "functionSelector": "8932cee0", "id": 1397, "implemented": true, "kind": "function", "modifiers": [], "name": "executeOperatorFee", "nameLocation": "4307:18:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1291, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4354:8:9"}, "parameters": {"id": 1290, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1289, "mutability": "mutable", "name": "operatorId", "nameLocation": "4333:10:9", "nodeType": "VariableDeclaration", "scope": 1397, "src": "4326:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1288, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4326:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "4325:19:9"}, "returnParameters": {"id": 1292, "nodeType": "ParameterList", "parameters": [], "src": "4363:0:9"}, "scope": 1670, "src": "4298:991:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1967], "body": {"id": 1441, "nodeType": "Block", "src": "5367:333:9", "statements": [{"assignments": [1405], "declarations": [{"constant": false, "id": 1405, "mutability": "mutable", "name": "s", "nameLocation": "5397:1:9", "nodeType": "VariableDeclaration", "scope": 1441, "src": "5377:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1404, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1403, "name": "StorageData", "nameLocations": ["5377:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "5377:11:9"}, "referencedDeclaration": 2490, "src": "5377:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1409, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1406, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5401:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5412:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5401:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5401:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5377:41:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"expression": {"id": 1410, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5428:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1413, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5430:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5428:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1414, "indexExpression": {"id": 1412, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5440:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5428:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1415, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5452:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "5428:34:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5428:36:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1417, "nodeType": "ExpressionStatement", "src": "5428:36:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"expression": {"id": 1418, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5479:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5481:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5479:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1421, "indexExpression": {"id": 1420, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5507:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5479:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "id": 1422, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5519:17:9", "memberName": "approvalBeginTime", "nodeType": "MemberAccess", "referencedDeclaration": 1705, "src": "5479:57:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1423, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5540:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5479:62:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1428, "nodeType": "IfStatement", "src": "5475:90:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1425, "name": "NoFeeDeclared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1735, "src": "5550:13:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5550:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1427, "nodeType": "RevertStatement", "src": "5543:22:9"}}, {"expression": {"id": 1433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "5576:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1429, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "5583:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1430, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5585:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "5583:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1432, "indexExpression": {"id": 1431, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5611:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5583:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1434, "nodeType": "ExpressionStatement", "src": "5576:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5670:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5674:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "5670:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1438, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "5682:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 1435, "name": "OperatorFeeDeclarationCancelled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2028, "src": "5638:31:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$", "typeString": "function (address,uint64)"}}, "id": 1439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5638:55:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1440, "nodeType": "EmitStatement", "src": "5633:60:9"}]}, "functionSelector": "23d68a6d", "id": 1442, "implemented": true, "kind": "function", "modifiers": [], "name": "cancelDeclaredOperatorFee", "nameLocation": "5304:25:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1401, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5358:8:9"}, "parameters": {"id": 1400, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1399, "mutability": "mutable", "name": "operatorId", "nameLocation": "5337:10:9", "nodeType": "VariableDeclaration", "scope": 1442, "src": "5330:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1398, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5330:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "5329:19:9"}, "returnParameters": {"id": 1402, "nodeType": "ParameterList", "parameters": [], "src": "5367:0:9"}, "scope": 1670, "src": "5295:405:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1975], "body": {"id": 1518, "nodeType": "Block", "src": "5783:520:9", "statements": [{"assignments": [1452], "declarations": [{"constant": false, "id": 1452, "mutability": "mutable", "name": "s", "nameLocation": "5813:1:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5793:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1451, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1450, "name": "StorageData", "nameLocations": ["5793:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "5793:11:9"}, "referencedDeclaration": 2490, "src": "5793:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1456, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1453, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "5817:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5828:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "5817:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5817:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "5793:41:9"}, {"assignments": [1459], "declarations": [{"constant": false, "id": 1459, "mutability": "mutable", "name": "operator", "nameLocation": "5860:8:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5844:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1458, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1457, "name": "Operator", "nameLocations": ["5844:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "5844:8:9"}, "referencedDeclaration": 1699, "src": "5844:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1464, "initialValue": {"baseExpression": {"expression": {"id": 1460, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "5871:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1461, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5873:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "5871:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1463, "indexExpression": {"id": 1462, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "5883:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5871:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5844:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1465, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "5904:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1467, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5913:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "5904:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5904:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1469, "nodeType": "ExpressionStatement", "src": "5904:21:9"}, {"assignments": [1471], "declarations": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "5943:12:9", "nodeType": "VariableDeclaration", "scope": 1518, "src": "5936:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1470, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5936:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1475, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1472, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "5958:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5962:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "5958:10:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5958:12:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "5936:34:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1476, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "5984:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 1477, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6000:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1478, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6009:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "6000:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "5984:28:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1483, "nodeType": "IfStatement", "src": "5980:64:9", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1480, "name": "FeeIncreaseNotAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1773, "src": "6021:21:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6021:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1482, "nodeType": "RevertStatement", "src": "6014:30:9"}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1484, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1486, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6064:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "6055:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6055:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1488, "nodeType": "ExpressionStatement", "src": "6055:25:9"}, {"expression": {"id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1489, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6090:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1491, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6099:3:9", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 1688, "src": "6090:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1492, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "6105:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "6090:27:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1494, "nodeType": "ExpressionStatement", "src": "6090:27:9"}, {"expression": {"id": 1501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1495, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "6127:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1498, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6129:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "6127:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1499, "indexExpression": {"id": 1497, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6139:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6127:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1500, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "6153:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "6127:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1502, "nodeType": "ExpressionStatement", "src": "6127:34:9"}, {"expression": {"id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "6172:46:9", "subExpression": {"baseExpression": {"expression": {"id": 1503, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1452, "src": "6179:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1504, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6181:25:9", "memberName": "operatorFeeChangeRequests", "nodeType": "MemberAccess", "referencedDeclaration": 2475, "src": "6179:27:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$1709_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref)"}}, "id": 1506, "indexExpression": {"id": 1505, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6207:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6179:39:9", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$1709_storage", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1508, "nodeType": "ExpressionStatement", "src": "6172:46:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1510, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6254:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6258:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "6254:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1512, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1444, "src": "6266:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"expression": {"id": 1513, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6278:5:9", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6284:6:9", "memberName": "number", "nodeType": "MemberAccess", "src": "6278:12:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1515, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "6292:3:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1509, "name": "OperatorFeeExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2039, "src": "6234:19:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256,uint256)"}}, "id": 1516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6234:62:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1517, "nodeType": "EmitStatement", "src": "6229:67:9"}]}, "functionSelector": "190d82e4", "id": 1519, "implemented": true, "kind": "function", "modifiers": [], "name": "reduceOperatorFee", "nameLocation": "5715:17:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1448, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5774:8:9"}, "parameters": {"id": 1447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1444, "mutability": "mutable", "name": "operatorId", "nameLocation": "5740:10:9", "nodeType": "VariableDeclaration", "scope": 1519, "src": "5733:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1443, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5733:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1446, "mutability": "mutable", "name": "fee", "nameLocation": "5760:3:9", "nodeType": "VariableDeclaration", "scope": 1519, "src": "5752:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5752:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5732:32:9"}, "returnParameters": {"id": 1449, "nodeType": "ParameterList", "parameters": [], "src": "5783:0:9"}, "scope": 1670, "src": "5706:597:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1983], "body": {"id": 1532, "nodeType": "Block", "src": "6396:62:9", "statements": [{"expression": {"arguments": [{"id": 1528, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6432:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1529, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6444:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1527, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "6406:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1530, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6406:45:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1531, "nodeType": "ExpressionStatement", "src": "6406:45:9"}]}, "functionSelector": "35f63767", "id": 1533, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawOperatorEarnings", "nameLocation": "6318:24:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1525, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6387:8:9"}, "parameters": {"id": 1524, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1521, "mutability": "mutable", "name": "operatorId", "nameLocation": "6350:10:9", "nodeType": "VariableDeclaration", "scope": 1533, "src": "6343:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1520, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6343:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1523, "mutability": "mutable", "name": "amount", "nameLocation": "6370:6:9", "nodeType": "VariableDeclaration", "scope": 1533, "src": "6362:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6362:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6342:35:9"}, "returnParameters": {"id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "6396:0:9"}, "scope": 1670, "src": "6309:149:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [1989], "body": {"id": 1544, "nodeType": "Block", "src": "6538:57:9", "statements": [{"expression": {"arguments": [{"id": 1540, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1535, "src": "6574:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"hexValue": "30", "id": 1541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6586:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 1539, "name": "_withdrawOperatorEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "6548:25:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6548:40:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1543, "nodeType": "ExpressionStatement", "src": "6548:40:9"}]}, "functionSelector": "4bc93b64", "id": 1545, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawAllOperatorEarnings", "nameLocation": "6473:27:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1537, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6529:8:9"}, "parameters": {"id": 1536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1535, "mutability": "mutable", "name": "operatorId", "nameLocation": "6508:10:9", "nodeType": "VariableDeclaration", "scope": 1545, "src": "6501:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1534, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6501:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "6500:19:9"}, "returnParameters": {"id": 1538, "nodeType": "ParameterList", "parameters": [], "src": "6538:0:9"}, "scope": 1670, "src": "6464:131:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 1645, "nodeType": "Block", "src": "6704:753:9", "statements": [{"assignments": [1554], "declarations": [{"constant": false, "id": 1554, "mutability": "mutable", "name": "s", "nameLocation": "6734:1:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6714:21:9", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 1553, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1552, "name": "StorageData", "nameLocations": ["6714:11:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2490, "src": "6714:11:9"}, "referencedDeclaration": 2490, "src": "6714:11:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "id": 1558, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1555, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2513, "src": "6738:10:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$2513_$", "typeString": "type(library SSVStorage)"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6749:4:9", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 2512, "src": "6738:15:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$2490_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6738:17:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "6714:41:9"}, {"assignments": [1561], "declarations": [{"constant": false, "id": 1561, "mutability": "mutable", "name": "operator", "nameLocation": "6781:8:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6765:24:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator"}, "typeName": {"id": 1560, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1559, "name": "Operator", "nameLocations": ["6765:8:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "6765:8:9"}, "referencedDeclaration": 1699, "src": "6765:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}, "visibility": "internal"}], "id": 1566, "initialValue": {"baseExpression": {"expression": {"id": 1562, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "6792:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6794:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "6792:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1565, "indexExpression": {"id": 1564, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "6804:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6792:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6765:50:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1567, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6825:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6834:10:9", "memberName": "checkOwner", "nodeType": "MemberAccess", "referencedDeclaration": 2331, "src": "6825:19:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6825:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1571, "nodeType": "ExpressionStatement", "src": "6825:21:9"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1572, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6857:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1574, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6866:14:9", "memberName": "updateSnapshot", "nodeType": "MemberAccess", "referencedDeclaration": 2248, "src": "6857:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Operator_$1699_memory_ptr_$returns$__$attached_to$_t_struct$_Operator_$1699_memory_ptr_$", "typeString": "function (struct ISSVNetworkCore.Operator memory) view"}}, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6857:25:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1576, "nodeType": "ExpressionStatement", "src": "6857:25:9"}, {"assignments": [1578], "declarations": [{"constant": false, "id": 1578, "mutability": "mutable", "name": "shrunkWithdrawn", "nameLocation": "6900:15:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6893:22:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1577, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6893:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1579, "nodeType": "VariableDeclarationStatement", "src": "6893:22:9"}, {"assignments": [1581], "declarations": [{"constant": false, "id": 1581, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "6932:12:9", "nodeType": "VariableDeclaration", "scope": 1645, "src": "6925:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1580, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6925:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 1585, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "6947:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6954:6:9", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 1898, "src": "6947:13:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6947:15:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "6925:37:9"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1586, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "6977:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1587, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6987:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6977:11:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1589, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "6992:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1590, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7001:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "6992:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1591, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7010:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "6992:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7020:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6992:29:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6977:44:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1602, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, "src": "7101:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7110:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7101:10:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1605, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7115:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1606, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7124:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7115:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1607, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7133:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7115:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1608, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7144:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7115:41:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7101:55:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1619, "nodeType": "Block", "src": "7219:53:9", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 1616, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1741, "src": "7240:19:9", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7240:21:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1618, "nodeType": "RevertStatement", "src": "7233:28:9"}]}, "id": 1620, "nodeType": "IfStatement", "src": "7097:175:9", "trueBody": {"id": 1615, "nodeType": "Block", "src": "7158:55:9", "statements": [{"expression": {"id": 1613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1611, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7172:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1612, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7190:12:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7172:30:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1614, "nodeType": "ExpressionStatement", "src": "7172:30:9"}]}}, "id": 1621, "nodeType": "IfStatement", "src": "6973:299:9", "trueBody": {"id": 1601, "nodeType": "Block", "src": "7023:68:9", "statements": [{"expression": {"id": 1599, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 1595, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7037:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"expression": {"id": 1596, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7055:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1597, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7064:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7055:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1598, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7073:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7055:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7037:43:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1600, "nodeType": "ExpressionStatement", "src": "7037:43:9"}]}}, {"expression": {"id": 1628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"expression": {"id": 1622, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7282:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "id": 1625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7291:8:9", "memberName": "snapshot", "nodeType": "MemberAccess", "referencedDeclaration": 1698, "src": "7282:17:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$1682_memory_ptr", "typeString": "struct ISSVNetworkCore.Snapshot memory"}}, "id": 1626, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7300:7:9", "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": 1681, "src": "7282:25:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 1627, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7311:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "7282:44:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1629, "nodeType": "ExpressionStatement", "src": "7282:44:9"}, {"expression": {"id": 1636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"id": 1630, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1554, "src": "7337:1:9", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$2490_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 1633, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7339:9:9", "memberName": "operators", "nodeType": "MemberAccess", "referencedDeclaration": 2481, "src": "7337:11:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$1699_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator storage ref)"}}, "id": 1634, "indexExpression": {"id": 1632, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "7349:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7337:23:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1635, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1561, "src": "7363:8:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_memory_ptr", "typeString": "struct ISSVNetworkCore.Operator memory"}}, "src": "7337:34:9", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$1699_storage", "typeString": "struct ISSVNetworkCore.Operator storage ref"}}, "id": 1637, "nodeType": "ExpressionStatement", "src": "7337:34:9"}, {"expression": {"arguments": [{"id": 1639, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "7413:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1640, "name": "shrunkWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "7425:15:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 1641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7441:6:9", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 1868, "src": "7425:22:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 1642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7425:24:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1638, "name": "_transferOperatorBalanceUnsafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1669, "src": "7382:30:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint256)"}}, "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7382:68:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1644, "nodeType": "ExpressionStatement", "src": "7382:68:9"}]}, "id": 1646, "implemented": true, "kind": "function", "modifiers": [], "name": "_withdrawOperatorEarnings", "nameLocation": "6635:25:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1547, "mutability": "mutable", "name": "operatorId", "nameLocation": "6668:10:9", "nodeType": "VariableDeclaration", "scope": 1646, "src": "6661:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1546, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6661:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1549, "mutability": "mutable", "name": "amount", "nameLocation": "6688:6:9", "nodeType": "VariableDeclaration", "scope": 1646, "src": "6680:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6680:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6660:35:9"}, "returnParameters": {"id": 1551, "nodeType": "ParameterList", "parameters": [], "src": "6704:0:9"}, "scope": 1670, "src": "6626:831:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1668, "nodeType": "Block", "src": "7546:124:9", "statements": [{"expression": {"arguments": [{"expression": {"id": 1656, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7580:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7584:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7580:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1658, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "7592:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1653, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2185, "src": "7556:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$2185_$", "typeString": "type(library CoreLib)"}}, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7564:15:9", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 2096, "src": "7556:23:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7556:43:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1660, "nodeType": "ExpressionStatement", "src": "7556:43:9"}, {"eventCall": {"arguments": [{"expression": {"id": 1662, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7632:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7636:6:9", "memberName": "sender", "nodeType": "MemberAccess", "src": "7632:10:9", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1664, "name": "operatorId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1648, "src": "7644:10:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, {"id": 1665, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1650, "src": "7656:6:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint64", "typeString": "uint64"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1661, "name": "OperatorWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2047, "src": "7614:17:9", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$_t_uint256_$returns$__$", "typeString": "function (address,uint64,uint256)"}}, "id": 1666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7614:49:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1667, "nodeType": "EmitStatement", "src": "7609:54:9"}]}, "id": 1669, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOperatorBalanceUnsafe", "nameLocation": "7472:30:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1648, "mutability": "mutable", "name": "operatorId", "nameLocation": "7510:10:9", "nodeType": "VariableDeclaration", "scope": 1669, "src": "7503:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 1647, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "7503:6:9", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 1650, "mutability": "mutable", "name": "amount", "nameLocation": "7530:6:9", "nodeType": "VariableDeclaration", "scope": 1669, "src": "7522:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7522:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7502:35:9"}, "returnParameters": {"id": 1652, "nodeType": "ParameterList", "parameters": [], "src": "7546:0:9"}, "scope": 1670, "src": "7463:207:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1671, "src": "358:7314:9", "usedErrors": [1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785]}], "src": "45:7628:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [2665]}, "id": 2666, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2589, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2590, "nodeType": "StructuredDocumentation", "src": "131:70:10", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 2665, "linearizedBaseContracts": [2665], "name": "IERC20", "nameLocation": "212:6:10", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 2591, "nodeType": "StructuredDocumentation", "src": "225:158:10", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 2599, "name": "Transfer", "nameLocation": "394:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2593, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "403:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2592, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2595, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "425:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2594, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2597, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:10", "nodeType": "VariableDeclaration", "scope": 2599, "src": "445:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:10"}, "src": "388:72:10"}, {"anonymous": false, "documentation": {"id": 2600, "nodeType": "StructuredDocumentation", "src": "466:148:10", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 2608, "name": "Approval", "nameLocation": "625:8:10", "nodeType": "EventDefinition", "parameters": {"id": 2607, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2602, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "634:21:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2601, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2604, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "657:23:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2603, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2606, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:10", "nodeType": "VariableDeclaration", "scope": 2608, "src": "682:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2605, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:10"}, "src": "619:78:10"}, {"documentation": {"id": 2609, "nodeType": "StructuredDocumentation", "src": "703:66:10", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 2614, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2610, "nodeType": "ParameterList", "parameters": [], "src": "794:2:10"}, "returnParameters": {"id": 2613, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2612, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2614, "src": "820:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:10"}, "scope": 2665, "src": "774:55:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2615, "nodeType": "StructuredDocumentation", "src": "835:72:10", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 2622, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2618, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2617, "mutability": "mutable", "name": "account", "nameLocation": "939:7:10", "nodeType": "VariableDeclaration", "scope": 2622, "src": "931:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2616, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:10"}, "returnParameters": {"id": 2621, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2620, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2622, "src": "971:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2619, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:10"}, "scope": 2665, "src": "912:68:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2623, "nodeType": "StructuredDocumentation", "src": "986:202:10", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 2632, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2628, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2625, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:10", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1211:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2624, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2627, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:10", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1223:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:10"}, "returnParameters": {"id": 2631, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2630, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2632, "src": "1257:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2629, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:10"}, "scope": 2665, "src": "1193:70:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2633, "nodeType": "StructuredDocumentation", "src": "1269:264:10", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 2642, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2635, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:10", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1557:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2634, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2637, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:10", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1572:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2636, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:10"}, "returnParameters": {"id": 2641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2640, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2642, "src": "1612:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2639, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:10"}, "scope": 2665, "src": "1538:83:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2643, "nodeType": "StructuredDocumentation", "src": "1627:642:10", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 2652, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2648, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2645, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:10", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2291:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2644, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2647, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:10", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2308:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:10"}, "returnParameters": {"id": 2651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2650, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2652, "src": "2342:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2649, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:10"}, "scope": 2665, "src": "2274:74:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 2653, "nodeType": "StructuredDocumentation", "src": "2354:287:10", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 2664, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2660, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2655, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2668:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2654, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2657, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2682:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2656, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:10", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2659, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:10", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2694:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2658, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:10"}, "returnParameters": {"id": 2663, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2662, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2664, "src": "2728:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2661, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:10"}, "scope": 2665, "src": "2646:88:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 2666, "src": "202:2534:10", "usedErrors": []}], "src": "106:2631:10"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [2587]}, "id": 2588, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2515, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2516, "nodeType": "StructuredDocumentation", "src": "112:311:11", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"}, "fullyImplemented": true, "id": 2587, "linearizedBaseContracts": [2587], "name": "Counters", "nameLocation": "432:8:11", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 2519, "members": [{"constant": false, "id": 2518, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:11", "nodeType": "VariableDeclaration", "scope": 2519, "src": "786:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2517, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:11", "nodeType": "StructDefinition", "scope": 2587, "src": "447:374:11", "visibility": "public"}, {"body": {"id": 2530, "nodeType": "Block", "src": "901:38:11", "statements": [{"expression": {"expression": {"id": 2527, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2522, "src": "918:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2528, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "918:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2526, "id": 2529, "nodeType": "Return", "src": "911:21:11"}]}, "id": 2531, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2522, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:11", "nodeType": "VariableDeclaration", "scope": 2531, "src": "844:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2521, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2520, "name": "Counter", "nameLocations": ["844:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "844:7:11"}, "referencedDeclaration": 2519, "src": "844:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:11"}, "returnParameters": {"id": 2526, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2525, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2531, "src": "892:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2524, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:11"}, "scope": 2587, "src": "827:112:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2544, "nodeType": "Block", "src": "998:70:11", "statements": [{"id": 2543, "nodeType": "UncheckedBlock", "src": "1008:54:11", "statements": [{"expression": {"id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2537, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2534, "src": "1032:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2539, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1032:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2542, "nodeType": "ExpressionStatement", "src": "1032:19:11"}]}]}, "id": 2545, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2534, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:11", "nodeType": "VariableDeclaration", "scope": 2545, "src": "964:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2533, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2532, "name": "Counter", "nameLocations": ["964:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "964:7:11"}, "referencedDeclaration": 2519, "src": "964:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:11"}, "returnParameters": {"id": 2536, "nodeType": "ParameterList", "parameters": [], "src": "998:0:11"}, "scope": 2587, "src": "945:123:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2572, "nodeType": "Block", "src": "1127:176:11", "statements": [{"assignments": [2552], "declarations": [{"constant": false, "id": 2552, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:11", "nodeType": "VariableDeclaration", "scope": 2572, "src": "1137:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2551, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2555, "initialValue": {"expression": {"id": 2553, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2548, "src": "1153:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1153:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:11"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2557, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1185:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 2560, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 2556, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2562, "nodeType": "ExpressionStatement", "src": "1177:49:11"}, {"id": 2571, "nodeType": "UncheckedBlock", "src": "1236:61:11", "statements": [{"expression": {"id": 2569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2563, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2548, "src": "1260:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2565, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1260:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2566, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2552, "src": "1277:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2570, "nodeType": "ExpressionStatement", "src": "1260:26:11"}]}]}, "id": 2573, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2549, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2548, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:11", "nodeType": "VariableDeclaration", "scope": 2573, "src": "1093:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2546, "name": "Counter", "nameLocations": ["1093:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1093:7:11"}, "referencedDeclaration": 2519, "src": "1093:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:11"}, "returnParameters": {"id": 2550, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:11"}, "scope": 2587, "src": "1074:229:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2585, "nodeType": "Block", "src": "1358:35:11", "statements": [{"expression": {"id": 2583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 2579, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2576, "src": "1368:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 2581, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:11", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 2518, "src": "1368:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2584, "nodeType": "ExpressionStatement", "src": "1368:18:11"}]}, "id": 2586, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2577, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2576, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:11", "nodeType": "VariableDeclaration", "scope": 2586, "src": "1324:23:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 2575, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2574, "name": "Counter", "nameLocations": ["1324:7:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2519, "src": "1324:7:11"}, "referencedDeclaration": 2519, "src": "1324:7:11", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$2519_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:11"}, "returnParameters": {"id": 2578, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:11"}, "scope": 2587, "src": "1309:84:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 2588, "src": "424:971:11", "usedErrors": []}], "src": "87:1309:11"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/echidna/Operators.sol:Operators": {"srcmap": "148:5672:0:-:0;;;713:526;;;;;;;;;;342:11;737:13;;:36;;;;;;;;;;;;;;;;;;783:26;812:25;:23;;;;;:25;;:::i;:::-;783:54;;883:6;847:2;:33;;;:42;;;;;;;;;;;;;;;;;;933:37;941:19;933:35;;;;;:37;;:::i;:::-;899:2;:31;;;:71;;;;;;;;;;;;;;;;;;1012:3;980:2;:29;;;:35;;;;;;;;;;;;;;;;;;1055:6;1025:2;:27;;;:36;;;;;;;;;;;;;;;;;;1101:6;1071:2;:27;;;:36;;;;;;;;;;;;;;;;;;1145:4;1117:2;:25;;;:32;;;;;;;;;;;;;;;;;;406:18;1159:2;:17;;;:40;;;;;;;;;;;;;;;;;;1210:22;1230:1;1210:2;:19;;;;;;:22;;;;:::i;:::-;727:512;148:5672;;1672:184:7;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;;;:17;;:::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;552:272:5:-;638:21;656:2;638:17;;;:21;;:::i;:::-;691:26;714:2;691:22;;;:26;;:::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;;;;;:12;;:::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;;;:24;;:::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;1111:215::-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;7:77:12:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:410::-;516:7;539:20;557:1;539:20;:::i;:::-;534:25;;573:20;591:1;573:20;:::i;:::-;568:25;;628:1;625;621:9;650:30;668:11;650:30;:::i;:::-;639:41;;829:1;820:7;816:15;813:1;810:22;790:1;783:9;763:83;740:139;;859:18;;:::i;:::-;740:139;524:362;476:410;;;;:::o;892:169::-;976:11;1010:6;1005:3;998:19;1050:4;1045:3;1041:14;1026:29;;892:169;;;;:::o;1067:168::-;1207:20;1203:1;1195:6;1191:14;1184:44;1067:168;:::o;1241:366::-;1383:3;1404:67;1468:2;1463:3;1404:67;:::i;:::-;1397:74;;1480:93;1569:3;1480:93;:::i;:::-;1598:2;1593:3;1589:12;1582:19;;1241:366;;;:::o;1613:419::-;1779:4;1817:2;1806:9;1802:18;1794:26;;1866:9;1860:4;1856:20;1852:1;1841:9;1837:17;1830:47;1894:131;2020:4;1894:131;:::i;:::-;1886:139;;1613:419;;;:::o;2038:180::-;2086:77;2083:1;2076:88;2183:4;2180:1;2173:15;2207:4;2204:1;2197:15;2224:185;2264:1;2281:20;2299:1;2281:20;:::i;:::-;2276:25;;2315:20;2333:1;2315:20;:::i;:::-;2310:25;;2354:1;2344:35;;2359:18;;:::i;:::-;2344:35;2401:1;2398;2394:9;2389:14;;2224:185;;;;:::o;2415:176::-;2447:1;2464:20;2482:1;2464:20;:::i;:::-;2459:25;;2498:20;2516:1;2498:20;:::i;:::-;2493:25;;2537:1;2527:35;;2542:18;;:::i;:::-;2527:35;2583:1;2580;2576:9;2571:14;;2415:176;;;;:::o;2597:172::-;2737:24;2733:1;2725:6;2721:14;2714:48;2597:172;:::o;2775:366::-;2917:3;2938:67;3002:2;2997:3;2938:67;:::i;:::-;2931:74;;3014:93;3103:3;3014:93;:::i;:::-;3132:2;3127:3;3123:12;3116:19;;2775:366;;;:::o;3147:419::-;3313:4;3351:2;3340:9;3336:18;3328:26;;3400:9;3394:4;3390:20;3386:1;3375:9;3371:17;3364:47;3428:131;3554:4;3428:131;:::i;:::-;3420:139;;3147:419;;;:::o;3572:101::-;3608:7;3648:18;3641:5;3637:30;3626:41;;3572:101;;;:::o;3679:275::-;3718:7;3741:19;3758:1;3741:19;:::i;:::-;3736:24;;3774:19;3791:1;3774:19;:::i;:::-;3769:24;;3828:1;3825;3821:9;3850:29;3867:11;3850:29;:::i;:::-;3839:40;;3911:11;3902:7;3899:24;3889:58;;3927:18;;:::i;:::-;3889:58;3726:228;3679:275;;;;:::o;3960:205::-;3999:3;4018:19;4035:1;4018:19;:::i;:::-;4013:24;;4051:19;4068:1;4051:19;:::i;:::-;4046:24;;4093:1;4090;4086:9;4079:16;;4116:18;4111:3;4108:27;4105:53;;;4138:18;;:::i;:::-;4105:53;3960:205;;;;:::o;4171:208::-;4210:4;4230:19;4247:1;4230:19;:::i;:::-;4225:24;;4263:19;4280:1;4263:19;:::i;:::-;4258:24;;4306:1;4303;4299:9;4291:17;;4330:18;4324:4;4321:28;4318:54;;;4352:18;;:::i;:::-;4318:54;4171:208;;;;:::o;148:5672:0:-;;;;;;;", "srcmap-runtime": "148:5672:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3365:525;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5706:597:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4293:348:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5295:405:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2671:474:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1782:708:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5440:378:0;;;:::i;:::-;;6309:149:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4072:162:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3896:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6464:131:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3151:208:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4298:991:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4647:506:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2988:1304:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1344:153:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:486:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1245:93:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5159:275;;;:::i;:::-;;485:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:998:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3365:525:0;3469:5;:12;;;;3449:10;:33;;;;:::i;:::-;3436:46;;3493:25;3521:17;:15;:17::i;:::-;:27;;:39;3549:10;3521:39;;;;;;;;;;;;;;;3493:67;;3605:1;3578:8;:17;;:23;;;;;;;;;;;;:28;;;3570:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3646:10;3659:8;:12;;;;;;;;;;;;3646:25;;3682:20;473:6;3732:25;:23;:25::i;:::-;:48;;;;;;;;;;;;473:6;3713:67;;;;:::i;:::-;3706:3;:75;;;;:::i;:::-;3705:108;;;;:::i;:::-;3682:131;;3824:4;:23;;;3848:10;3860:22;:13;:20;;;:22::i;:::-;3824:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3426:464;;;3365:525;:::o;5706:597:9:-;5793:21;5817:17;:15;:17::i;:::-;5793:41;;5844:24;5871:1;:11;;:23;5883:10;5871:23;;;;;;;;;;;;;;;5844:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:21;:8;:19;:21::i;:::-;5936:19;5958:12;:3;:10;:12::i;:::-;5936:34;;6000:8;:12;;;5984:28;;:12;:28;;;5980:64;;6021:23;;;;;;;;;;;;;;5980:64;6055:25;:8;:23;:25::i;:::-;6105:12;6090:8;:12;;:27;;;;;;;;;;;6153:8;6127:1;:11;;:23;6139:10;6127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6179:1;:27;;:39;6207:10;6179:39;;;;;;;;;;;;;;;;6172:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:10;6234:62;;6254:10;6234:62;;;6278:12;6292:3;6234:62;;;;;;;:::i;:::-;;;;;;;;5783:520;;;5706:597;;:::o;4293:348:0:-;4407:5;:12;;;;4387:10;:33;;;;:::i;:::-;4374:46;;4431:24;4458:17;:15;:17::i;:::-;:27;;:39;4486:10;4458:39;;;;;;;;;;;;;;;4431:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4540:1;4513:8;:17;;;:23;;;:28;;;4512:54;;;;;4546:8;:20;;;4512:54;4508:126;;;4585:49;4601:10;4613:8;:20;;;4585:49;;;;;;;:::i;:::-;;;;;;;;4508:126;4364:277;4293:348;:::o;5295:405:9:-;5377:21;5401:17;:15;:17::i;:::-;5377:41;;5428:36;:1;:11;;:23;5440:10;5428:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5540:1;5479;:27;;:39;5507:10;5479:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5475:90;;5550:15;;;;;;;;;;;;;;5475:90;5583:1;:27;;:39;5611:10;5583:39;;;;;;;;;;;;;;;;5576:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5682:10;5638:55;;5670:10;5638:55;;;;;;;;;;;;5367:333;5295:405;:::o;2671:474:0:-;2720:6;2738:12;2753:13;;;;;;;;;;;2738:28;;;;2776:12;2791:25;:23;:25::i;:::-;:40;;;;;;;;;;;;2776:55;;;;2842:22;2867:20;:18;:20::i;:::-;2842:45;;2897:11;2911:24;2924:4;2930;2911:12;:24::i;:::-;2897:38;;2950:4;:21;;;2972:9;2983:3;2950:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2946:193;;3122:5;3115:13;;;;:::i;:::-;;2946:193;;;3030:5;3041:10;3030:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:10;3066:17;;;;;;;;;2946:193;2728:417;;;;2671:474;;:::o;1782:708:9:-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2257:8;2231:1;:11;;:23;2243:10;2231:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:1;:20;;:32;2304:10;2283:32;;;;;;;;;;;;;;;;2276:39;;;;;;;;;;;2347:1;2330:14;:18;;;2326:116;;;2364:67;2395:10;2407:23;:14;:21;;;:23::i;:::-;2364:30;:67::i;:::-;2326:116;2472:10;2456:27;;;;;;;;;;;;1843:647;;;1782:708;:::o;5440:378:0:-;5502:25;5530;:23;:25::i;:::-;5502:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5565:15;5595:9;5590:179;5610:5;:12;;;;5606:1;:16;5590:179;;;5643:24;5670:17;:15;:17::i;:::-;:27;;:37;5698:5;5704:1;5698:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:37;;;;;;;;;;;;;;;5643:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5733:8;:17;;;:25;;;5721:37;;;;;:::i;:::-;;;5629:140;5624:3;;;;;:::i;:::-;;;;5590:179;;;;5802:8;5785:25;;:2;:13;;;:25;;;5778:33;;;;:::i;:::-;;5492:326;;5440:378::o;6309:149:9:-;6406:45;6432:10;6444:6;6406:25;:45::i;:::-;6309:149;;:::o;4072:162:0:-;4172:5;:12;;;;4152:10;:33;;;;:::i;:::-;4139:46;;4196:4;:19;;;4216:10;4196:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4072:162;:::o;3896:170::-;4000:5;:12;;;;3980:10;:33;;;;:::i;:::-;3967:46;;4024:4;:23;;;4048:10;4024:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:170;:::o;6464:131:9:-;6548:40;6574:10;6586:1;6548:25;:40::i;:::-;6464:131;:::o;3151:208:0:-;3278:5;:12;;;;3258:10;:33;;;;:::i;:::-;3245:46;;3302:4;:25;;;3328:10;3340:11;3302:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:208;;:::o;4298:991:9:-;4373:21;4397:17;:15;:17::i;:::-;4373:41;;4424:24;4451:1;:11;;:23;4463:10;4451:23;;;;;;;;;;;;;;;4424:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:21;:8;:19;:21::i;:::-;4516:48;4567:1;:27;;:39;4595:10;4567:39;;;;;;;;;;;;;;;4516:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:1;4621:16;:34;;;:39;;;4617:67;;4669:15;;;;;;;;;;;;;;4617:67;4730:16;:34;;;4712:52;;:15;:52;:106;;;;4786:16;:32;;;4768:50;;:15;:50;4712:106;4695:194;;;4850:28;;;;;;;;;;;;;;4695:194;4935:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4903:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4899:97;;;4984:12;;;;;;;;;;;;;;4899:97;5007:25;:8;:23;:25::i;:::-;5057:16;:20;;;5042:8;:12;;:35;;;;;;;;;;;5113:8;5087:1;:11;;:23;5099:10;5087:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:1;:27;;:39;5167:10;5139:39;;;;;;;;;;;;;;;;5132:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5226:10;5194:88;;5214:10;5194:88;;;5238:12;5252:29;:16;:20;;;:27;;;:29::i;:::-;5194:88;;;;;;;:::i;:::-;;;;;;;;4363:926;;;4298:991;:::o;4647:506:0:-;4760:5;:12;;;;4740:10;:33;;;;:::i;:::-;4727:46;;4784:24;4811:17;:15;:17::i;:::-;:27;;:39;4839:10;4811:39;;;;;;;;;;;;;;;4784:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4906:1;4879:8;:17;;;:23;;;:28;;;4878:126;;;;;5002:1;4925:17;:15;:17::i;:::-;:43;;:55;4969:10;4925:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;:78;;;;4878:126;4861:286;;;5034:102;5050:10;5062:17;:15;:17::i;:::-;:43;;:55;5106:10;5062:55;;;;;;;;;;;;;;;:73;;;;;;;;;;;;5034:102;;;;;;;:::i;:::-;;;;;;;;4861:286;4717:436;4647:506;:::o;2988:1304:9:-;3076:21;3100:17;:15;:17::i;:::-;3076:41;;3127:36;:1;:11;;:23;3139:10;3127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3174:26;3203:25;:23;:25::i;:::-;3174:54;;3250:1;3243:3;:8;;:38;;;;;450:11;3255:26;;:3;:26;3243:38;3239:62;;;3290:11;;;;;;;;;;;;;;3239:62;3321:2;:17;;;;;;;;;;;;3315:23;;:3;:23;3311:48;;;3347:12;;;;;;;;;;;;;;3311:48;3370:18;3391:1;:11;;:23;3403:10;3391:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3370:48;;3428:16;3447:12;:3;:10;:12::i;:::-;3428:31;;3489:9;3474:24;;:11;:24;;;3470:188;;3521:25;;;;;;;;;;;;;;3470:188;3580:1;3567:9;:14;;;;:34;;;;;3600:1;3585:11;:16;;;3567:34;3563:95;;;3624:23;;;;;;;;;;;;;;3563:95;3756:20;510:6;3814:2;:25;;;;;;;;;;;;510:6;3795:44;;;;:::i;:::-;3780:11;:60;;;;:::i;:::-;3779:81;;;;:::i;:::-;3756:104;;3887:13;3875:25;;:9;:25;;;3871:63;;;3909:25;;;;;;;;;;;;;;3871:63;3987:221;;;;;;;;4025:9;3987:221;;;;;;4074:2;:27;;;;;;;;;;;;4055:15;4048:53;;;;:::i;:::-;3987:221;;;;;;4171:2;:27;;;;;;;;;;;;4141:2;:27;;;;;;;;;;;;4122:15;4115:53;;;;:::i;:::-;:83;;;;:::i;:::-;3987:221;;;;;3945:1;:27;;:39;3973:10;3945:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:10;4223:62;;4243:10;4223:62;;;4267:12;4281:3;4223:62;;;;;;;:::i;:::-;;;;;;;;3066:1226;;;;;2988:1304;;:::o;1344:153:0:-;1410:7;1436:17;:15;:17::i;:::-;:27;;:39;1464:10;1436:39;;;;;;;;;;;;;;;:48;;:54;;;;;;;;;;;;1429:61;;;;1344:153;;;:::o;2496:486:9:-;2585:21;2609:17;:15;:17::i;:::-;2585:41;;2636:36;:1;:11;;:23;2648:10;2636:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2710:1;2687:25;;:11;:25;;;2683:172;;2766:5;2728:1;:11;;:23;2740:10;2728:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2683:172;;;2840:4;2802:1;:11;;:23;2814:10;2802:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2683:172;2900:11;2865:1;:20;;:32;2886:10;2865:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2951:10;2926:49;;;2963:11;2926:49;;;;;;:::i;:::-;;;;;;;;2575:407;2496:486;;:::o;1245:93:0:-;1292:15;1326:5;1319:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1245:93;:::o;5159:275::-;5222:9;5217:211;5237:5;:12;;;;5233:1;:16;5217:211;;;5270:24;5297:17;:15;:17::i;:::-;:27;;:37;5325:5;5331:1;5325:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5297:37;;;;;;;;;;;;;;;5270:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5381:1;5355:8;:23;;;:27;;;:61;;;;5415:1;5386:8;:17;;;:25;;;:30;;;5355:61;5348:69;;;;:::i;:::-;;5256:172;5251:3;;;;;:::i;:::-;;;;5217:211;;;;5159:275::o;485:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;778:998:9:-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;552:272:5:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;256:365::-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;1503:368:0:-;1551:12;1575:24;1612:2;1602:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:40;;1630:6;1625:195;1646:2;1642:1;:6;1625:195;;;1791:3;1748:5;;1755:15;1772:10;1784:1;1731:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1721:66;;;;;;1716:72;;:78;;;;:::i;:::-;1686:123;;1669:11;1681:1;1669:14;;;;;;;;:::i;:::-;;;;;:140;;;;;;;;;;;1650:3;;;;;:::i;:::-;;;;1625:195;;;;1829:5;;:7;;;;;;;;;:::i;:::-;;;;;;1853:11;1846:18;;;1503:368;:::o;1877:788::-;1943:7;1976:3;1970;:9;1962:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2068:1;105:10:8;2043:3:0;:21;;;;:::i;:::-;:26;:56;;;;;2098:1;105:10:8;2073:3:0;:21;;;;:::i;:::-;:26;2043:56;2022:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:18;2235:5;;2242:15;2218:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2208:51;;;;;;2200:60;;2179:81;;2270:5;;:7;;;;;;;;;:::i;:::-;;;;;;2287:18;2315:10;2287:39;;2427:13;2475:1;105:10:8;2450:3:0;2444;:9;;;;:::i;:::-;2443:29;;;;:::i;:::-;:33;;;;:::i;:::-;2427:49;;2486:21;105:10:8;2525:5:0;2511:11;:19;;;;;;:::i;:::-;2510:39;;;;:::i;:::-;2486:63;;2559:11;2579:13;2573:3;:19;;;;:::i;:::-;2559:33;;105:10:8;2615:3:0;:21;;;;:::i;:::-;2608:3;:29;;;;:::i;:::-;2602:35;;2655:3;2648:10;;;;;;;1877:788;;;;:::o;7463:207:9:-;7556:43;7580:10;7592:6;7556:23;:43::i;:::-;7644:10;7614:49;;7632:10;7614:49;;;7656:6;7614:49;;;;;;:::i;:::-;;;;;;;;7463:207;;:::o;6626:831::-;6714:21;6738:17;:15;:17::i;:::-;6714:41;;6765:24;6792:1;:11;;:23;6804:10;6792:23;;;;;;;;;;;;;;;6765:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6825:21;:8;:19;:21::i;:::-;6857:25;:8;:23;:25::i;:::-;6893:22;6925:19;6947:15;:6;:13;:15::i;:::-;6925:37;;6987:1;6977:6;:11;:44;;;;;7020:1;6992:8;:17;;;:25;;;:29;;;6977:44;6973:299;;;7055:8;:17;;;:25;;;7037:43;;6973:299;;;7110:1;7101:6;:10;:55;;;;;7144:12;7115:41;;:8;:17;;;:25;;;:41;;;;7101:55;7097:175;;;7190:12;7172:30;;7097:175;;;7240:21;;;;;;;;;;;;;;7097:175;6973:299;7311:15;7282:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7363:8;7337:1;:11;;:23;7349:10;7337:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:68;7413:10;7425:24;:15;:22;;;:24::i;:::-;7382:30;:68::i;:::-;6704:753;;;;6626:831;;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;929:176:5:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;1111:215:5:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:327::-;768:6;817:2;805:9;796:7;792:23;788:32;785:119;;;823:79;;:::i;:::-;785:119;943:1;968:52;1012:7;1003:6;992:9;988:22;968:52;:::i;:::-;958:62;;914:116;710:327;;;;:::o;1043:77::-;1080:7;1109:5;1098:16;;1043:77;;;:::o;1126:122::-;1199:24;1217:5;1199:24;:::i;:::-;1192:5;1189:35;1179:63;;1238:1;1235;1228:12;1179:63;1126:122;:::o;1254:139::-;1300:5;1338:6;1325:20;1316:29;;1354:33;1381:5;1354:33;:::i;:::-;1254:139;;;;:::o;1399:472::-;1466:6;1474;1523:2;1511:9;1502:7;1498:23;1494:32;1491:119;;;1529:79;;:::i;:::-;1491:119;1649:1;1674:52;1718:7;1709:6;1698:9;1694:22;1674:52;:::i;:::-;1664:62;;1620:116;1775:2;1801:53;1846:7;1837:6;1826:9;1822:22;1801:53;:::i;:::-;1791:63;;1746:118;1399:472;;;;;:::o;1877:115::-;1962:23;1979:5;1962:23;:::i;:::-;1957:3;1950:36;1877:115;;:::o;1998:218::-;2089:4;2127:2;2116:9;2112:18;2104:26;;2140:69;2206:1;2195:9;2191:17;2182:6;2140:69;:::i;:::-;1998:218;;;;:::o;2222:126::-;2259:7;2299:42;2292:5;2288:54;2277:65;;2222:126;;;:::o;2354:96::-;2391:7;2420:24;2438:5;2420:24;:::i;:::-;2409:35;;2354:96;;;:::o;2456:122::-;2529:24;2547:5;2529:24;:::i;:::-;2522:5;2519:35;2509:63;;2568:1;2565;2558:12;2509:63;2456:122;:::o;2584:139::-;2630:5;2668:6;2655:20;2646:29;;2684:33;2711:5;2684:33;:::i;:::-;2584:139;;;;:::o;2729:472::-;2796:6;2804;2853:2;2841:9;2832:7;2828:23;2824:32;2821:119;;;2859:79;;:::i;:::-;2821:119;2979:1;3004:52;3048:7;3039:6;3028:9;3024:22;3004:52;:::i;:::-;2994:62;;2950:116;3105:2;3131:53;3176:7;3167:6;3156:9;3152:22;3131:53;:::i;:::-;3121:63;;3076:118;2729:472;;;;;:::o;3207:118::-;3294:24;3312:5;3294:24;:::i;:::-;3289:3;3282:37;3207:118;;:::o;3331:222::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:71;3543:1;3532:9;3528:17;3519:6;3475:71;:::i;:::-;3331:222;;;;:::o;3559:113::-;3625:6;3659:5;3653:12;3643:22;;3559:113;;;:::o;3678:183::-;3776:11;3810:6;3805:3;3798:19;3850:4;3845:3;3841:14;3826:29;;3678:183;;;;:::o;3867:131::-;3933:4;3956:3;3948:11;;3986:4;3981:3;3977:14;3969:22;;3867:131;;;:::o;4004:105::-;4079:23;4096:5;4079:23;:::i;:::-;4074:3;4067:36;4004:105;;:::o;4115:175::-;4182:10;4203:44;4243:3;4235:6;4203:44;:::i;:::-;4279:4;4274:3;4270:14;4256:28;;4115:175;;;;:::o;4296:112::-;4365:4;4397;4392:3;4388:14;4380:22;;4296:112;;;:::o;4442:724::-;4559:3;4588:53;4635:5;4588:53;:::i;:::-;4657:85;4735:6;4730:3;4657:85;:::i;:::-;4650:92;;4766:55;4815:5;4766:55;:::i;:::-;4844:7;4875:1;4860:281;4885:6;4882:1;4879:13;4860:281;;;4961:6;4955:13;4988:61;5045:3;5030:13;4988:61;:::i;:::-;4981:68;;5072:59;5124:6;5072:59;:::i;:::-;5062:69;;4920:221;4907:1;4904;4900:9;4895:14;;4860:281;;;4864:14;5157:3;5150:10;;4564:602;;;4442:724;;;;:::o;5172:369::-;5313:4;5351:2;5340:9;5336:18;5328:26;;5400:9;5394:4;5390:20;5386:1;5375:9;5371:17;5364:47;5428:106;5529:4;5520:6;5428:106;:::i;:::-;5420:114;;5172:369;;;;:::o;5547:329::-;5606:6;5655:2;5643:9;5634:7;5630:23;5626:32;5623:119;;;5661:79;;:::i;:::-;5623:119;5781:1;5806:53;5851:7;5842:6;5831:9;5827:22;5806:53;:::i;:::-;5796:63;;5752:117;5547:329;;;;:::o;5882:117::-;5991:1;5988;5981:12;6005:117;6114:1;6111;6104:12;6128:117;6237:1;6234;6227:12;6264:552;6321:8;6331:6;6381:3;6374:4;6366:6;6362:17;6358:27;6348:122;;6389:79;;:::i;:::-;6348:122;6502:6;6489:20;6479:30;;6532:18;6524:6;6521:30;6518:117;;;6554:79;;:::i;:::-;6518:117;6668:4;6660:6;6656:17;6644:29;;6722:3;6714:4;6706:6;6702:17;6692:8;6688:32;6685:41;6682:128;;;6729:79;;:::i;:::-;6682:128;6264:552;;;;;:::o;6822:672::-;6901:6;6909;6917;6966:2;6954:9;6945:7;6941:23;6937:32;6934:119;;;6972:79;;:::i;:::-;6934:119;7120:1;7109:9;7105:17;7092:31;7150:18;7142:6;7139:30;7136:117;;;7172:79;;:::i;:::-;7136:117;7285:64;7341:7;7332:6;7321:9;7317:22;7285:64;:::i;:::-;7267:82;;;;7063:296;7398:2;7424:53;7469:7;7460:6;7449:9;7445:22;7424:53;:::i;:::-;7414:63;;7369:118;6822:672;;;;;:::o;7500:180::-;7548:77;7545:1;7538:88;7645:4;7642:1;7635:15;7669:4;7666:1;7659:15;7686:173;7717:1;7734:19;7751:1;7734:19;:::i;:::-;7729:24;;7767:19;7784:1;7767:19;:::i;:::-;7762:24;;7805:1;7795:35;;7810:18;;:::i;:::-;7795:35;7851:1;7848;7844:9;7839:14;;7686:173;;;;:::o;7865:169::-;7949:11;7983:6;7978:3;7971:19;8023:4;8018:3;8014:14;7999:29;;7865:169;;;;:::o;8040:174::-;8180:26;8176:1;8168:6;8164:14;8157:50;8040:174;:::o;8220:366::-;8362:3;8383:67;8447:2;8442:3;8383:67;:::i;:::-;8376:74;;8459:93;8548:3;8459:93;:::i;:::-;8577:2;8572:3;8568:12;8561:19;;8220:366;;;:::o;8592:419::-;8758:4;8796:2;8785:9;8781:18;8773:26;;8845:9;8839:4;8835:20;8831:1;8820:9;8816:17;8809:47;8873:131;8999:4;8873:131;:::i;:::-;8865:139;;8592:419;;;:::o;9017:180::-;9065:77;9062:1;9055:88;9162:4;9159:1;9152:15;9186:4;9183:1;9176:15;9203:205;9242:3;9261:19;9278:1;9261:19;:::i;:::-;9256:24;;9294:19;9311:1;9294:19;:::i;:::-;9289:24;;9336:1;9333;9329:9;9322:16;;9359:18;9354:3;9351:27;9348:53;;;9381:18;;:::i;:::-;9348:53;9203:205;;;;:::o;9414:275::-;9453:7;9476:19;9493:1;9476:19;:::i;:::-;9471:24;;9509:19;9526:1;9509:19;:::i;:::-;9504:24;;9563:1;9560;9556:9;9585:29;9602:11;9585:29;:::i;:::-;9574:40;;9646:11;9637:7;9634:24;9624:58;;9662:18;;:::i;:::-;9624:58;9461:228;9414:275;;;;:::o;9695:182::-;9734:1;9751:19;9768:1;9751:19;:::i;:::-;9746:24;;9784:19;9801:1;9784:19;:::i;:::-;9779:24;;9822:1;9812:35;;9827:18;;:::i;:::-;9812:35;9869:1;9866;9862:9;9857:14;;9695:182;;;;:::o;9883:328::-;10002:4;10040:2;10029:9;10025:18;10017:26;;10053:69;10119:1;10108:9;10104:17;10095:6;10053:69;:::i;:::-;10132:72;10200:2;10189:9;10185:18;10176:6;10132:72;:::i;:::-;9883:328;;;;;:::o;10217:332::-;10338:4;10376:2;10365:9;10361:18;10353:26;;10389:71;10457:1;10446:9;10442:17;10433:6;10389:71;:::i;:::-;10470:72;10538:2;10527:9;10523:18;10514:6;10470:72;:::i;:::-;10217:332;;;;;:::o;10555:90::-;10589:7;10632:5;10625:13;10618:21;10607:32;;10555:90;;;:::o;10651:109::-;10732:21;10747:5;10732:21;:::i;:::-;10727:3;10720:34;10651:109;;:::o;10766:316::-;10879:4;10917:2;10906:9;10902:18;10894:26;;10930:69;10996:1;10985:9;10981:17;10972:6;10930:69;:::i;:::-;11009:66;11071:2;11060:9;11056:18;11047:6;11009:66;:::i;:::-;10766:316;;;;;:::o;11088:98::-;11139:6;11173:5;11167:12;11157:22;;11088:98;;;:::o;11192:168::-;11275:11;11309:6;11304:3;11297:19;11349:4;11344:3;11340:14;11325:29;;11192:168;;;;:::o;11366:246::-;11447:1;11457:113;11471:6;11468:1;11465:13;11457:113;;;11556:1;11551:3;11547:11;11541:18;11537:1;11532:3;11528:11;11521:39;11493:2;11490:1;11486:10;11481:15;;11457:113;;;11604:1;11595:6;11590:3;11586:16;11579:27;11428:184;11366:246;;;:::o;11618:102::-;11659:6;11710:2;11706:7;11701:2;11694:5;11690:14;11686:28;11676:38;;11618:102;;;:::o;11726:373::-;11812:3;11840:38;11872:5;11840:38;:::i;:::-;11894:70;11957:6;11952:3;11894:70;:::i;:::-;11887:77;;11973:65;12031:6;12026:3;12019:4;12012:5;12008:16;11973:65;:::i;:::-;12063:29;12085:6;12063:29;:::i;:::-;12058:3;12054:39;12047:46;;11816:283;11726:373;;;;:::o;12105:419::-;12244:4;12282:2;12271:9;12267:18;12259:26;;12331:9;12325:4;12321:20;12317:1;12306:9;12302:17;12295:47;12359:76;12430:4;12421:6;12359:76;:::i;:::-;12351:84;;12445:72;12513:2;12502:9;12498:18;12489:6;12445:72;:::i;:::-;12105:419;;;;;:::o;12530:141::-;12586:5;12617:6;12611:13;12602:22;;12633:32;12659:5;12633:32;:::i;:::-;12530:141;;;;:::o;12677:349::-;12746:6;12795:2;12783:9;12774:7;12770:23;12766:32;12763:119;;;12801:79;;:::i;:::-;12763:119;12921:1;12946:63;13001:7;12992:6;12981:9;12977:22;12946:63;:::i;:::-;12936:73;;12892:127;12677:349;;;;:::o;13032:180::-;13080:77;13077:1;13070:88;13177:4;13174:1;13167:15;13201:4;13198:1;13191:15;13218:180;13266:77;13263:1;13256:88;13363:4;13360:1;13353:15;13387:4;13384:1;13377:15;13404:233;13443:3;13466:24;13484:5;13466:24;:::i;:::-;13457:33;;13512:66;13505:5;13502:77;13499:103;;13582:18;;:::i;:::-;13499:103;13629:1;13622:5;13618:13;13611:20;;13404:233;;;:::o;13643:118::-;13730:24;13748:5;13730:24;:::i;:::-;13725:3;13718:37;13643:118;;:::o;13767:328::-;13886:4;13924:2;13913:9;13909:18;13901:26;;13937:69;14003:1;13992:9;13988:17;13979:6;13937:69;:::i;:::-;14016:72;14084:2;14073:9;14069:18;14060:6;14016:72;:::i;:::-;13767:328;;;;;:::o;14101:324::-;14218:4;14256:2;14245:9;14241:18;14233:26;;14269:69;14335:1;14324:9;14320:17;14311:6;14269:69;:::i;:::-;14348:70;14414:2;14403:9;14399:18;14390:6;14348:70;:::i;:::-;14101:324;;;;;:::o;14431:222::-;14524:4;14562:2;14551:9;14547:18;14539:26;;14575:71;14643:1;14632:9;14628:17;14619:6;14575:71;:::i;:::-;14431:222;;;;:::o;14659:147::-;14760:11;14797:3;14782:18;;14659:147;;;;:::o;14812:146::-;14909:6;14904:3;14899;14886:30;14950:1;14941:6;14936:3;14932:16;14925:27;14812:146;;;:::o;14986:327::-;15100:3;15121:88;15202:6;15197:3;15121:88;:::i;:::-;15114:95;;15219:56;15268:6;15263:3;15256:5;15219:56;:::i;:::-;15300:6;15295:3;15291:16;15284:23;;14986:327;;;;;:::o;15319:291::-;15459:3;15481:103;15580:3;15571:6;15563;15481:103;:::i;:::-;15474:110;;15601:3;15594:10;;15319:291;;;;;:::o;15638:314::-;15734:3;15755:70;15818:6;15813:3;15755:70;:::i;:::-;15748:77;;15835:56;15884:6;15879:3;15872:5;15835:56;:::i;:::-;15916:29;15938:6;15916:29;:::i;:::-;15911:3;15907:39;15900:46;;15638:314;;;;;:::o;15958:439::-;16107:4;16145:2;16134:9;16130:18;16122:26;;16194:9;16188:4;16184:20;16180:1;16169:9;16165:17;16158:47;16222:86;16303:4;16294:6;16286;16222:86;:::i;:::-;16214:94;;16318:72;16386:2;16375:9;16371:18;16362:6;16318:72;:::i;:::-;15958:439;;;;;;:::o;16403:194::-;16443:4;16463:20;16481:1;16463:20;:::i;:::-;16458:25;;16497:20;16515:1;16497:20;:::i;:::-;16492:25;;16541:1;16538;16534:9;16526:17;;16565:1;16559:4;16556:11;16553:37;;;16570:18;;:::i;:::-;16553:37;16403:194;;;;:::o;16603:410::-;16643:7;16666:20;16684:1;16666:20;:::i;:::-;16661:25;;16700:20;16718:1;16700:20;:::i;:::-;16695:25;;16755:1;16752;16748:9;16777:30;16795:11;16777:30;:::i;:::-;16766:41;;16956:1;16947:7;16943:15;16940:1;16937:22;16917:1;16910:9;16890:83;16867:139;;16986:18;;:::i;:::-;16867:139;16651:362;16603:410;;;;:::o;17019:168::-;17159:20;17155:1;17147:6;17143:14;17136:44;17019:168;:::o;17193:366::-;17335:3;17356:67;17420:2;17415:3;17356:67;:::i;:::-;17349:74;;17432:93;17521:3;17432:93;:::i;:::-;17550:2;17545:3;17541:12;17534:19;;17193:366;;;:::o;17565:419::-;17731:4;17769:2;17758:9;17754:18;17746:26;;17818:9;17812:4;17808:20;17804:1;17793:9;17789:17;17782:47;17846:131;17972:4;17846:131;:::i;:::-;17838:139;;17565:419;;;:::o;17990:185::-;18030:1;18047:20;18065:1;18047:20;:::i;:::-;18042:25;;18081:20;18099:1;18081:20;:::i;:::-;18076:25;;18120:1;18110:35;;18125:18;;:::i;:::-;18110:35;18167:1;18164;18160:9;18155:14;;17990:185;;;;:::o;18181:93::-;18217:7;18257:10;18250:5;18246:22;18235:33;;18181:93;;;:::o;18280:200::-;18319:4;18339:19;18356:1;18339:19;:::i;:::-;18334:24;;18372:19;18389:1;18372:19;:::i;:::-;18367:24;;18415:1;18412;18408:9;18400:17;;18439:10;18433:4;18430:20;18427:46;;;18453:18;;:::i;:::-;18427:46;18280:200;;;;:::o;18486:180::-;18534:77;18531:1;18524:88;18631:4;18628:1;18621:15;18655:4;18652:1;18645:15;18672:79;18711:7;18740:5;18729:16;;18672:79;;;:::o;18757:157::-;18862:45;18882:24;18900:5;18882:24;:::i;:::-;18862:45;:::i;:::-;18857:3;18850:58;18757:157;;:::o;18920:94::-;18953:8;19001:5;18997:2;18993:14;18972:35;;18920:94;;;:::o;19020:::-;19059:7;19088:20;19102:5;19088:20;:::i;:::-;19077:31;;19020:94;;;:::o;19120:100::-;19159:7;19188:26;19208:5;19188:26;:::i;:::-;19177:37;;19120:100;;;:::o;19226:157::-;19331:45;19351:24;19369:5;19351:24;:::i;:::-;19331:45;:::i;:::-;19326:3;19319:58;19226:157;;:::o;19389:679::-;19585:3;19600:75;19671:3;19662:6;19600:75;:::i;:::-;19700:2;19695:3;19691:12;19684:19;;19713:75;19784:3;19775:6;19713:75;:::i;:::-;19813:2;19808:3;19804:12;19797:19;;19826:75;19897:3;19888:6;19826:75;:::i;:::-;19926:2;19921:3;19917:12;19910:19;;19939:75;20010:3;20001:6;19939:75;:::i;:::-;20039:2;20034:3;20030:12;20023:19;;20059:3;20052:10;;19389:679;;;;;;;:::o;20074:176::-;20106:1;20123:20;20141:1;20123:20;:::i;:::-;20118:25;;20157:20;20175:1;20157:20;:::i;:::-;20152:25;;20196:1;20186:35;;20201:18;;:::i;:::-;20186:35;20242:1;20239;20235:9;20230:14;;20074:176;;;;:::o;20256:178::-;20396:30;20392:1;20384:6;20380:14;20373:54;20256:178;:::o;20440:366::-;20582:3;20603:67;20667:2;20662:3;20603:67;:::i;:::-;20596:74;;20679:93;20768:3;20679:93;:::i;:::-;20797:2;20792:3;20788:12;20781:19;;20440:366;;;:::o;20812:419::-;20978:4;21016:2;21005:9;21001:18;20993:26;;21065:9;21059:4;21055:20;21051:1;21040:9;21036:17;21029:47;21093:131;21219:4;21093:131;:::i;:::-;21085:139;;20812:419;;;:::o;21237:230::-;21377:34;21373:1;21365:6;21361:14;21354:58;21446:13;21441:2;21433:6;21429:15;21422:38;21237:230;:::o;21473:366::-;21615:3;21636:67;21700:2;21695:3;21636:67;:::i;:::-;21629:74;;21712:93;21801:3;21712:93;:::i;:::-;21830:2;21825:3;21821:12;21814:19;;21473:366;;;:::o;21845:419::-;22011:4;22049:2;22038:9;22034:18;22026:26;;22098:9;22092:4;22088:20;22084:1;22073:9;22069:17;22062:47;22126:131;22252:4;22126:131;:::i;:::-;22118:139;;21845:419;;;:::o;22270:397::-;22410:3;22425:75;22496:3;22487:6;22425:75;:::i;:::-;22525:2;22520:3;22516:12;22509:19;;22538:75;22609:3;22600:6;22538:75;:::i;:::-;22638:2;22633:3;22629:12;22622:19;;22658:3;22651:10;;22270:397;;;;;:::o;22673:191::-;22713:3;22732:20;22750:1;22732:20;:::i;:::-;22727:25;;22766:20;22784:1;22766:20;:::i;:::-;22761:25;;22809:1;22806;22802:9;22795:16;;22830:3;22827:1;22824:10;22821:36;;;22837:18;;:::i;:::-;22821:36;22673:191;;;;:::o;22870:208::-;22909:4;22929:19;22946:1;22929:19;:::i;:::-;22924:24;;22962:19;22979:1;22962:19;:::i;:::-;22957:24;;23005:1;23002;22998:9;22990:17;;23029:18;23023:4;23020:28;23017:54;;;23051:18;;:::i;:::-;23017:54;22870:208;;;;:::o;23084:172::-;23224:24;23220:1;23212:6;23208:14;23201:48;23084:172;:::o;23262:366::-;23404:3;23425:67;23489:2;23484:3;23425:67;:::i;:::-;23418:74;;23501:93;23590:3;23501:93;:::i;:::-;23619:2;23614:3;23610:12;23603:19;;23262:366;;;:::o;23634:419::-;23800:4;23838:2;23827:9;23823:18;23815:26;;23887:9;23881:4;23877:20;23873:1;23862:9;23858:17;23851:47;23915:131;24041:4;23915:131;:::i;:::-;23907:139;;23634:419;;;:::o;24059:332::-;24180:4;24218:2;24207:9;24203:18;24195:26;;24231:71;24299:1;24288:9;24284:17;24275:6;24231:71;:::i;:::-;24312:72;24380:2;24369:9;24365:18;24356:6;24312:72;:::i;:::-;24059:332;;;;;:::o;24397:116::-;24467:21;24482:5;24467:21;:::i;:::-;24460:5;24457:32;24447:60;;24503:1;24500;24493:12;24447:60;24397:116;:::o;24519:137::-;24573:5;24604:6;24598:13;24589:22;;24620:30;24644:5;24620:30;:::i;:::-;24519:137;;;;:::o;24662:345::-;24729:6;24778:2;24766:9;24757:7;24753:23;24749:32;24746:119;;;24784:79;;:::i;:::-;24746:119;24904:1;24929:61;24982:7;24973:6;24962:9;24958:22;24929:61;:::i;:::-;24919:71;;24875:125;24662:345;;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isWhitelisted\",\"type\":\"bool\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"approvalBeginTime\",\"type\":\"uint64\"}],\"name\":\"AssertionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_operatorEarningsWithBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"check_removedOperatorBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNoFeeDeclared\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"check_removedOperatorNotWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"getOperatorBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOperatorIds\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"helper_createOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"helper_removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"helper_setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"opIds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b506305f5e100600260006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600062000056620001cf60201b620034661760201c565b9050620347108160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620000a4670de0b6b3a76400006200020d60201b620034a21760201c565b8160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101f481600001600c6101000a81548163ffffffff021916908363ffffffff16021790555062093a808160010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062093a808160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506103e88160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555065459a36ff96808160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550620001c86000826200029560201b6200351b1790919060201c565b5062000858565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6200020491906200055e565b90508091505090565b6000629896806801000000000000000062000229919062000599565b82106200026d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002649062000645565b60405180910390fd5b6298968062000282836200034860201b60201c565b6200028e919062000696565b9050919050565b620002a682620003a760201b60201c565b620002b7826200040860201b60201c565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff1602179055506200031a816200020d60201b620034a21760201c565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008062989680836200035c9190620006ce565b146200039f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003969062000756565b60405180910390fd5b819050919050565b620003b8816200048360201b60201c565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436200044b91906200055e565b6200045791906200078c565b8260000160189054906101000a900467ffffffffffffffff166200047c9190620007d2565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff1643620004e1919062000815565b620004ed91906200078c565b620004f991906200078c565b8260010160009054906101000a900467ffffffffffffffff166200051e9190620007d2565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200056b8262000525565b9150620005788362000525565b92508282039050818111156200059357620005926200052f565b5b92915050565b6000620005a68262000525565b9150620005b38362000525565b9250828202620005c38162000525565b91508282048414831517620005dd57620005dc6200052f565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b60006200062d601283620005e4565b91506200063a82620005f5565b602082019050919050565b6000602082019050818103600083015262000660816200061e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006a38262000525565b9150620006b08362000525565b925082620006c357620006c262000667565b5b828204905092915050565b6000620006db8262000525565b9150620006e88362000525565b925082620006fb57620006fa62000667565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b60006200073e601683620005e4565b91506200074b8262000706565b602082019050919050565b6000602082019050818103600083015262000771816200072f565b9050919050565b600067ffffffffffffffff82169050919050565b6000620007998262000778565b9150620007a68362000778565b9250828202620007b68162000778565b9150808214620007cb57620007ca6200052f565b5b5092915050565b6000620007df8262000778565b9150620007ec8362000778565b9250828201905067ffffffffffffffff8111156200080f576200080e6200052f565b5b92915050565b6000620008228262000778565b91506200082f8362000778565b9250828203905067ffffffffffffffff8111156200085257620008516200052f565b5b92915050565b614fa380620008686000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80634bc93b64116100b8578063ba2fee511161007c578063ba2fee51146102d0578063c90a7eab14610300578063e1d95a2e1461031c578063e7780e001461033a578063ef3e65f714610344578063ff212c5c1461037457610137565b80634bc93b641461024457806360e7474e146102605780638932cee01461027c5780639d5ceb9114610298578063b317c35f146102b457610137565b80632e168e0e116100ff5780632e168e0e146101ca57806330eab391146101e657806335f63767146101f057806336058dc41461020c57806345a5605a1461022857610137565b80630f5baea81461013c578063190d82e41461015857806322ca0bed1461017457806323d68a6d14610190578063249eaafa146101ac575b600080fd5b610156600480360381019061015191906141e5565b6103a4565b005b610172600480360381019061016d9190614248565b610536565b005b61018e600480360381019061018991906141e5565b6109ca565b005b6101aa60048036038101906101a591906141e5565b610be9565b005b6101b4610eeb565b6040516101c19190614297565b60405180910390f35b6101e460048036038101906101df91906141e5565b611053565b005b6101ee6114cc565b005b61020a60048036038101906102059190614248565b611988565b005b610226600480360381019061022191906141e5565b611996565b005b610242600480360381019061023d91906141e5565b611a17565b005b61025e600480360381019061025991906141e5565b611a98565b005b61027a60048036038101906102759190614310565b611aa6565b005b610296600480360381019061029191906141e5565b611b2a565b005b6102b260048036038101906102ad91906141e5565b612168565b005b6102ce60048036038101906102c99190614248565b61241b565b005b6102ea60048036038101906102e591906141e5565b6129d1565b6040516102f7919061435f565b60405180910390f35b61031a60048036038101906103159190614310565b612a27565b005b610324612d49565b6040516103319190614438565b60405180910390f35b610342612dd5565b005b61035e6004803603810190610359919061445a565b613016565b60405161036b9190614297565b60405180910390f35b61038e600480360381019061038991906144ec565b613054565b60405161039b9190614297565b60405180910390f35b600080549050816103b5919061457b565b905060006103c16135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff160361044b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044290614609565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff1690506000612710610475613466565b60020160089054906101000a900467ffffffffffffffff1661271061049a9190614658565b836104a59190614694565b6104af91906146d1565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104e18467ffffffffffffffff166135ed565b6040518363ffffffff1660e01b81526004016104fe929190614702565b600060405180830381600087803b15801561051857600080fd5b505af115801561052c573d6000803e3d6000fd5b5050505050505050565b60006105406135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506106ea8161360f565b60006106f5846134a2565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610748576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610751826136c3565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43876040516109bb92919061472b565b60405180910390a35050505050565b600080549050816109db919061457b565b905060006109e76135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015610ba2575080606001515b15610be5577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260600151604051610bdc92919061476f565b60405180910390a15b5050565b6000610bf36135b1565b9050610d988160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610e1c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600080600260009054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f1b613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f4961378b565b90506000610f5784846138a2565b90503073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c83836040518363ffffffff1660e01b8152600401610f94929190614828565b6020604051808303816000875af1925050508015610fd057506040513d601f19601f82011682018060405250810190610fcd919061486d565b60015b610fe8576000610fe357610fe261489a565b5b61104b565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050611050565b505050505b90565b600061105d6135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506112078161360f565b611210816136c3565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff16111561148f5761148e846114898367ffffffffffffffff166135ed565b613a2c565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b60006114d6613466565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b60008054905081101561195b5760006117596135b1565b6006016000808481548110611771576117706148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050806080015160400151836119459190614658565b9250508080611953906148f8565b915050611742565b508067ffffffffffffffff168260c0015167ffffffffffffffff16146119845761198361489a565b5b5050565b6119928282613a93565b5050565b600080549050816119a7919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016119e29190614297565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b60008054905081611a28919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611a639190614297565b600060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b5050505050565b611aa3816000613a93565b50565b60008054905082611ab7919061457b565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611af492919061494f565b600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050505050565b6000611b346135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050611cde8161360f565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611df4576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff16421080611e1d5750806040015167ffffffffffffffff1642115b15611e54576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e5c613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16611e95826000015167ffffffffffffffff166135ed565b1115611ecd576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ed6826136c3565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361214c856000015167ffffffffffffffff166135ed565b60405161215a92919061472b565b60405180910390a350505050565b60008054905081612179919061457b565b905060006121856135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015612391575060006123446135b1565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15612417577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826123c06135b1565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1660405161240e929190614978565b60405180910390a15b5050565b60006124256135b1565b90506125ca8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60006125d4613466565b9050600083141580156125f457506305f5e10067ffffffffffffffff1683105b1561262b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115612687576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006126d7856134a2565b90508067ffffffffffffffff168267ffffffffffffffff1603612726576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561274b575060008267ffffffffffffffff16145b15612782576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106127ad9190614658565b846127b89190614694565b6127c291906146d1565b90508067ffffffffffffffff168267ffffffffffffffff161115612812576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426128519190614658565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff164261289d9190614658565b6128a79190614658565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516129c092919061472b565b60405180910390a350505050505050565b60006129db6135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160000160009054906101000a900463ffffffff1663ffffffff169050919050565b6000612a316135b1565b9050612bd68160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c545760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612c9a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612d3c91906149a1565b60405180910390a2505050565b60606000805480602002602001604051908101604052809291908181526020018280548015612dcb57602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411612d865790505b5050505050905090565b60005b600080549050811015613013576000612def6135b1565b6006016000808481548110612e0757612e066148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff161180612ff25750600081608001516040015167ffffffffffffffff16145b612fff57612ffe61489a565b5b50808061300b906148f8565b915050612dd8565b50565b6000818154811061302657600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080821415801561307357506305f5e10067ffffffffffffffff1682105b156130aa576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130b2613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561310d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131176135b1565b90506000858560405161312b9291906149fb565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146131a2576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131ae82600801613ed2565b6131ba82600801613ee8565b92506040518060a00160405280600063ffffffff1681526020016131dd866134a2565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161345593929190614a41565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6134999190614a73565b90508091505090565b600062989680680100000000000000006134bc9190614aa7565b82106134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490614b35565b60405180910390fd5b6298968061350a83613ef6565b6135149190614b55565b9050919050565b61352482613f50565b61352d82613fa9565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550613583816134a2565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6135e49190614a73565b90508091505090565b6000629896808267ffffffffffffffff166136089190614aa7565b9050919050565b600081608001516000015163ffffffff1603613657576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146136c0576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008160200151826080015160000151436136de9190614b96565b63ffffffff166136ee9190614694565b90508082608001516020018181516137069190614658565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816137399190614694565b826080015160400181815161374e9190614658565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156137aa576137a9614bce565b5b6040519080825280601f01601f1916602001820160405280156137dc5781602001600182028036833780820191505090505b50905060005b6030811015613882576101006001544233846040516020016138079493929190614c66565b6040516020818303038152906040528051906020012060001c61382a9190614cb4565b60f81b8282815181106138405761383f6148c9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061387a906148f8565b9150506137e2565b5060016000815480929190613896906148f8565b91905055508091505090565b60008282116138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138dd90614d31565b60405180910390fd5b600062989680846138f79190614cb4565b1480156139125750600062989680836139109190614cb4565b145b613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dc3565b60405180910390fd5b600060015442604051602001613968929190614de3565b6040516020818303038152906040528051906020012060001c905060016000815480929190613996906148f8565b91905055506000819050600060016298968087876139b49190614a73565b6139be9190614b55565b6139c89190614e0f565b9050600062989680828467ffffffffffffffff166139e69190614cb4565b6139f09190614aa7565b905060008188613a009190614e0f565b90506298968081613a119190614cb4565b81613a1c9190614a73565b9050809550505050505092915050565b613a36338261401e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051613a87919061435f565b60405180910390a35050565b6000613a9d6135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050613c478161360f565b613c50816136c3565b600080613c5c856134a2565b9050600085148015613c805750600083608001516040015167ffffffffffffffff16115b15613c95578260800151604001519150613d01565b600085118015613cc157508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b15613cce57809150613d00565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b818360800151604001818151613d179190614e43565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613eca86613ec58467ffffffffffffffff166135ed565b613a2c565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b6000806298968083613f089190614cb4565b14613f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3f90614ecb565b60405180910390fd5b819050919050565b613f5981614101565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613fea9190614a73565b613ff49190614694565b8260000160189054906101000a900467ffffffffffffffff166140179190614658565b9050919050565b6140266135b1565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401614084929190614eeb565b6020604051808303816000875af11580156140a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c79190614f40565b6140fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361415d9190614e43565b6141679190614694565b6141719190614694565b8260010160009054906101000a900467ffffffffffffffff166141949190614658565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6141c2816141a5565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61419b565b5b6000614209848285016141d0565b91505092915050565b6000819050919050565b61422581614212565b811461423057600080fd5b50565b6000813590506142428161421c565b92915050565b6000806040838503121561425f5761425e61419b565b5b600061426d858286016141d0565b925050602061427e85828601614233565b9150509250929050565b614291816141a5565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142dd826142b2565b9050919050565b6142ed816142d2565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b600080604083850312156143275761432661419b565b5b6000614335858286016141d0565b9250506020614346858286016142fb565b9150509250929050565b61435981614212565b82525050565b60006020820190506143746000830184614350565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143af816141a5565b82525050565b60006143c183836143a6565b60208301905092915050565b6000602082019050919050565b60006143e58261437a565b6143ef8185614385565b93506143fa83614396565b8060005b8381101561442b57815161441288826143b5565b975061441d836143cd565b9250506001810190506143fe565b5085935050505092915050565b6000602082019050818103600083015261445281846143da565b905092915050565b6000602082840312156144705761446f61419b565b5b600061447e84828501614233565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126144ac576144ab614487565b5b8235905067ffffffffffffffff8111156144c9576144c861448c565b5b6020830191508360018202830111156144e5576144e4614491565b5b9250929050565b6000806000604084860312156145055761450461419b565b5b600084013567ffffffffffffffff811115614523576145226141a0565b5b61452f86828701614496565b9350935050602061454286828701614233565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614586826141a5565b9150614591836141a5565b9250826145a1576145a061454c565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b60006145f36018836145ac565b91506145fe826145bd565b602082019050919050565b60006020820190508181036000830152614622816145e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614663826141a5565b915061466e836141a5565b9250828201905067ffffffffffffffff81111561468e5761468d614629565b5b92915050565b600061469f826141a5565b91506146aa836141a5565b92508282026146b8816141a5565b91508082146146ca576146c9614629565b5b5092915050565b60006146dc826141a5565b91506146e7836141a5565b9250826146f7576146f661454c565b5b828204905092915050565b60006040820190506147176000830185614288565b6147246020830184614350565b9392505050565b60006040820190506147406000830185614350565b61474d6020830184614350565b9392505050565b60008115159050919050565b61476981614754565b82525050565b60006040820190506147846000830185614288565b6147916020830184614760565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156147d25780820151818401526020810190506147b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006147fa82614798565b61480481856147a3565b93506148148185602086016147b4565b61481d816147de565b840191505092915050565b6000604082019050818103600083015261484281856147ef565b90506148516020830184614350565b9392505050565b600081519050614867816141b9565b92915050565b6000602082840312156148835761488261419b565b5b600061489184828501614858565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490382614212565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361493557614934614629565b5b600182019050919050565b614949816142d2565b82525050565b60006040820190506149646000830185614288565b6149716020830184614940565b9392505050565b600060408201905061498d6000830185614288565b61499a6020830184614288565b9392505050565b60006020820190506149b66000830184614940565b92915050565b600081905092915050565b82818337600083830152505050565b60006149e283856149bc565b93506149ef8385846149c7565b82840190509392505050565b6000614a088284866149d6565b91508190509392505050565b6000614a2083856147a3565b9350614a2d8385846149c7565b614a36836147de565b840190509392505050565b60006040820190508181036000830152614a5c818587614a14565b9050614a6b6020830184614350565b949350505050565b6000614a7e82614212565b9150614a8983614212565b9250828203905081811115614aa157614aa0614629565b5b92915050565b6000614ab282614212565b9150614abd83614212565b9250828202614acb81614212565b91508282048414831517614ae257614ae1614629565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000614b1f6012836145ac565b9150614b2a82614ae9565b602082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b6000614b6082614212565b9150614b6b83614212565b925082614b7b57614b7a61454c565b5b828204905092915050565b600063ffffffff82169050919050565b6000614ba182614b86565b9150614bac83614b86565b9250828203905063ffffffff811115614bc857614bc7614629565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b614c18614c1382614212565b614bfd565b82525050565b60008160601b9050919050565b6000614c3682614c1e565b9050919050565b6000614c4882614c2b565b9050919050565b614c60614c5b826142d2565b614c3d565b82525050565b6000614c728287614c07565b602082019150614c828286614c07565b602082019150614c928285614c4f565b601482019150614ca28284614c07565b60208201915081905095945050505050565b6000614cbf82614212565b9150614cca83614212565b925082614cda57614cd961454c565b5b828206905092915050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b6000614d1b601c836145ac565b9150614d2682614ce5565b602082019050919050565b60006020820190508181036000830152614d4a81614d0e565b9050919050565b7f4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f6660008201527f2031302c3030302c303030000000000000000000000000000000000000000000602082015250565b6000614dad602b836145ac565b9150614db882614d51565b604082019050919050565b60006020820190508181036000830152614ddc81614da0565b9050919050565b6000614def8285614c07565b602082019150614dff8284614c07565b6020820191508190509392505050565b6000614e1a82614212565b9150614e2583614212565b9250828201905080821115614e3d57614e3c614629565b5b92915050565b6000614e4e826141a5565b9150614e59836141a5565b9250828203905067ffffffffffffffff811115614e7957614e78614629565b5b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000614eb56016836145ac565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b6000604082019050614f006000830185614940565b614f0d6020830184614350565b9392505050565b614f1d81614754565b8114614f2857600080fd5b50565b600081519050614f3a81614f14565b92915050565b600060208284031215614f5657614f5561419b565b5b6000614f6484828501614f2b565b9150509291505056fea26469706673582212206b149165daf0833944656a4ab803c88eeb55c63258283b4c8bb3ead1bd8548b664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101375760003560e01c80634bc93b64116100b8578063ba2fee511161007c578063ba2fee51146102d0578063c90a7eab14610300578063e1d95a2e1461031c578063e7780e001461033a578063ef3e65f714610344578063ff212c5c1461037457610137565b80634bc93b641461024457806360e7474e146102605780638932cee01461027c5780639d5ceb9114610298578063b317c35f146102b457610137565b80632e168e0e116100ff5780632e168e0e146101ca57806330eab391146101e657806335f63767146101f057806336058dc41461020c57806345a5605a1461022857610137565b80630f5baea81461013c578063190d82e41461015857806322ca0bed1461017457806323d68a6d14610190578063249eaafa146101ac575b600080fd5b610156600480360381019061015191906141e5565b6103a4565b005b610172600480360381019061016d9190614248565b610536565b005b61018e600480360381019061018991906141e5565b6109ca565b005b6101aa60048036038101906101a591906141e5565b610be9565b005b6101b4610eeb565b6040516101c19190614297565b60405180910390f35b6101e460048036038101906101df91906141e5565b611053565b005b6101ee6114cc565b005b61020a60048036038101906102059190614248565b611988565b005b610226600480360381019061022191906141e5565b611996565b005b610242600480360381019061023d91906141e5565b611a17565b005b61025e600480360381019061025991906141e5565b611a98565b005b61027a60048036038101906102759190614310565b611aa6565b005b610296600480360381019061029191906141e5565b611b2a565b005b6102b260048036038101906102ad91906141e5565b612168565b005b6102ce60048036038101906102c99190614248565b61241b565b005b6102ea60048036038101906102e591906141e5565b6129d1565b6040516102f7919061435f565b60405180910390f35b61031a60048036038101906103159190614310565b612a27565b005b610324612d49565b6040516103319190614438565b60405180910390f35b610342612dd5565b005b61035e6004803603810190610359919061445a565b613016565b60405161036b9190614297565b60405180910390f35b61038e600480360381019061038991906144ec565b613054565b60405161039b9190614297565b60405180910390f35b600080549050816103b5919061457b565b905060006103c16135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160020160000160009054906101000a900463ffffffff1663ffffffff160361044b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044290614609565b60405180910390fd5b60008160000160049054906101000a900467ffffffffffffffff1690506000612710610475613466565b60020160089054906101000a900467ffffffffffffffff1661271061049a9190614658565b836104a59190614694565b6104af91906146d1565b90503073ffffffffffffffffffffffffffffffffffffffff1663b317c35f856104e18467ffffffffffffffff166135ed565b6040518363ffffffff1660e01b81526004016104fe929190614702565b600060405180830381600087803b15801561051857600080fd5b505af115801561052c573d6000803e3d6000fd5b5050505050505050565b60006105406135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506106ea8161360f565b60006106f5846134a2565b9050816020015167ffffffffffffffff168167ffffffffffffffff1610610748576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610751826136c3565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef43876040516109bb92919061472b565b60405180910390a35050505050565b600080549050816109db919061457b565b905060006109e76135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015610ba2575080606001515b15610be5577f101ff4d4fce05862cf6774f08861759f211f11318525d9101cac96130c47f909828260600151604051610bdc92919061476f565b60405180910390a15b5050565b6000610bf36135b1565b9050610d988160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610e1c576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b600080600260009054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f1b613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1690506000610f4961378b565b90506000610f5784846138a2565b90503073ffffffffffffffffffffffffffffffffffffffff1663ff212c5c83836040518363ffffffff1660e01b8152600401610f94929190614828565b6020604051808303816000875af1925050508015610fd057506040513d601f19601f82011682018060405250810190610fcd919061486d565b60015b610fe8576000610fe357610fe261489a565b5b61104b565b60008190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050611050565b505050505b90565b600061105d6135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506112078161360f565b611210816136c3565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff16111561148f5761148e846114898367ffffffffffffffff166135ed565b613a2c565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b60006114d6613466565b604051806101a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000805b60008054905081101561195b5760006117596135b1565b6006016000808481548110611771576117706148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050806080015160400151836119459190614658565b9250508080611953906148f8565b915050611742565b508067ffffffffffffffff168260c0015167ffffffffffffffff16146119845761198361489a565b5b5050565b6119928282613a93565b5050565b600080549050816119a7919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16632e168e0e826040518263ffffffff1660e01b81526004016119e29190614297565b600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b5050505050565b60008054905081611a28919061457b565b90503073ffffffffffffffffffffffffffffffffffffffff16638932cee0826040518263ffffffff1660e01b8152600401611a639190614297565b600060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b5050505050565b611aa3816000613a93565b50565b60008054905082611ab7919061457b565b91503073ffffffffffffffffffffffffffffffffffffffff1663c90a7eab83836040518363ffffffff1660e01b8152600401611af492919061494f565b600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050505050565b6000611b346135b1565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050611cde8161360f565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff1603611df4576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff16421080611e1d5750806040015167ffffffffffffffff1642115b15611e54576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e5c613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16611e95826000015167ffffffffffffffff166135ed565b1115611ecd576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ed6826136c3565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef4361214c856000015167ffffffffffffffff166135ed565b60405161215a92919061472b565b60405180910390a350505050565b60008054905081612179919061457b565b905060006121856135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050600081608001516000015163ffffffff16148015612391575060006123446135b1565b60050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15612417577f6086515d5301f36abd5eb3ae2adb83a7605f4fa5492555d9b45197d036cad7f7826123c06135b1565b60050160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1660405161240e929190614978565b60405180910390a15b5050565b60006124256135b1565b90506125ca8160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b60006125d4613466565b9050600083141580156125f457506305f5e10067ffffffffffffffff1683105b1561262b576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16831115612687576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006126d7856134a2565b90508067ffffffffffffffff168267ffffffffffffffff1603612726576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff161415801561274b575060008267ffffffffffffffff16145b15612782576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106127ad9190614658565b846127b89190614694565b6127c291906146d1565b90508067ffffffffffffffff168267ffffffffffffffff161115612812576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426128519190614658565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff164261289d9190614658565b6128a79190614658565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516129c092919061472b565b60405180910390a350505050505050565b60006129db6135b1565b60060160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020160000160009054906101000a900463ffffffff1663ffffffff169050919050565b6000612a316135b1565b9050612bd68160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505061360f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c545760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550612c9a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051612d3c91906149a1565b60405180910390a2505050565b60606000805480602002602001604051908101604052809291908181526020018280548015612dcb57602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411612d865790505b5050505050905090565b60005b600080549050811015613013576000612def6135b1565b6006016000808481548110612e0757612e066148c9565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152505090506000816000015163ffffffff161180612ff25750600081608001516040015167ffffffffffffffff16145b612fff57612ffe61489a565b5b50808061300b906148f8565b915050612dd8565b50565b6000818154811061302657600080fd5b9060005260206000209060049182820401919006600802915054906101000a900467ffffffffffffffff1681565b600080821415801561307357506305f5e10067ffffffffffffffff1682105b156130aa576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130b2613466565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1682111561310d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131176135b1565b90506000858560405161312b9291906149fb565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146131a2576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131ae82600801613ed2565b6131ba82600801613ee8565b92506040518060a00160405280600063ffffffff1681526020016131dd866134a2565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f488888860405161345593929190614a41565b60405180910390a350509392505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6134999190614a73565b90508091505090565b600062989680680100000000000000006134bc9190614aa7565b82106134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490614b35565b60405180910390fd5b6298968061350a83613ef6565b6135149190614b55565b9050919050565b61352482613f50565b61352d82613fa9565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550613583816134a2565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c6135e49190614a73565b90508091505090565b6000629896808267ffffffffffffffff166136089190614aa7565b9050919050565b600081608001516000015163ffffffff1603613657576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146136c0576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008160200151826080015160000151436136de9190614b96565b63ffffffff166136ee9190614694565b90508082608001516020018181516137069190614658565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816137399190614694565b826080015160400181815161374e9190614658565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b60606000603067ffffffffffffffff8111156137aa576137a9614bce565b5b6040519080825280601f01601f1916602001820160405280156137dc5781602001600182028036833780820191505090505b50905060005b6030811015613882576101006001544233846040516020016138079493929190614c66565b6040516020818303038152906040528051906020012060001c61382a9190614cb4565b60f81b8282815181106138405761383f6148c9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061387a906148f8565b9150506137e2565b5060016000815480929190613896906148f8565b91905055508091505090565b60008282116138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138dd90614d31565b60405180910390fd5b600062989680846138f79190614cb4565b1480156139125750600062989680836139109190614cb4565b145b613951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394890614dc3565b60405180910390fd5b600060015442604051602001613968929190614de3565b6040516020818303038152906040528051906020012060001c905060016000815480929190613996906148f8565b91905055506000819050600060016298968087876139b49190614a73565b6139be9190614b55565b6139c89190614e0f565b9050600062989680828467ffffffffffffffff166139e69190614cb4565b6139f09190614aa7565b905060008188613a009190614e0f565b90506298968081613a119190614cb4565b81613a1c9190614a73565b9050809550505050505092915050565b613a36338261401e565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d6083604051613a87919061435f565b60405180910390a35050565b6000613a9d6135b1565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050613c478161360f565b613c50816136c3565b600080613c5c856134a2565b9050600085148015613c805750600083608001516040015167ffffffffffffffff16115b15613c95578260800151604001519150613d01565b600085118015613cc157508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b15613cce57809150613d00565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b818360800151604001818151613d179190614e43565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050905050613eca86613ec58467ffffffffffffffff166135ed565b613a2c565b505050505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b6000806298968083613f089190614cb4565b14613f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3f90614ecb565b60405180910390fd5b819050919050565b613f5981614101565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643613fea9190614a73565b613ff49190614694565b8260000160189054906101000a900467ffffffffffffffff166140179190614658565b9050919050565b6140266135b1565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401614084929190614eeb565b6020604051808303816000875af11580156140a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c79190614f40565b6140fd576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff164361415d9190614e43565b6141679190614694565b6141719190614694565b8260010160009054906101000a900467ffffffffffffffff166141949190614658565b9050919050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6141c2816141a5565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61419b565b5b6000614209848285016141d0565b91505092915050565b6000819050919050565b61422581614212565b811461423057600080fd5b50565b6000813590506142428161421c565b92915050565b6000806040838503121561425f5761425e61419b565b5b600061426d858286016141d0565b925050602061427e85828601614233565b9150509250929050565b614291816141a5565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142dd826142b2565b9050919050565b6142ed816142d2565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b600080604083850312156143275761432661419b565b5b6000614335858286016141d0565b9250506020614346858286016142fb565b9150509250929050565b61435981614212565b82525050565b60006020820190506143746000830184614350565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143af816141a5565b82525050565b60006143c183836143a6565b60208301905092915050565b6000602082019050919050565b60006143e58261437a565b6143ef8185614385565b93506143fa83614396565b8060005b8381101561442b57815161441288826143b5565b975061441d836143cd565b9250506001810190506143fe565b5085935050505092915050565b6000602082019050818103600083015261445281846143da565b905092915050565b6000602082840312156144705761446f61419b565b5b600061447e84828501614233565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126144ac576144ab614487565b5b8235905067ffffffffffffffff8111156144c9576144c861448c565b5b6020830191508360018202830111156144e5576144e4614491565b5b9250929050565b6000806000604084860312156145055761450461419b565b5b600084013567ffffffffffffffff811115614523576145226141a0565b5b61452f86828701614496565b9350935050602061454286828701614233565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614586826141a5565b9150614591836141a5565b9250826145a1576145a061454c565b5b828206905092915050565b600082825260208201905092915050565b7f6f70657261746f7220646f6573206e6f74206578697374730000000000000000600082015250565b60006145f36018836145ac565b91506145fe826145bd565b602082019050919050565b60006020820190508181036000830152614622816145e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614663826141a5565b915061466e836141a5565b9250828201905067ffffffffffffffff81111561468e5761468d614629565b5b92915050565b600061469f826141a5565b91506146aa836141a5565b92508282026146b8816141a5565b91508082146146ca576146c9614629565b5b5092915050565b60006146dc826141a5565b91506146e7836141a5565b9250826146f7576146f661454c565b5b828204905092915050565b60006040820190506147176000830185614288565b6147246020830184614350565b9392505050565b60006040820190506147406000830185614350565b61474d6020830184614350565b9392505050565b60008115159050919050565b61476981614754565b82525050565b60006040820190506147846000830185614288565b6147916020830184614760565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156147d25780820151818401526020810190506147b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006147fa82614798565b61480481856147a3565b93506148148185602086016147b4565b61481d816147de565b840191505092915050565b6000604082019050818103600083015261484281856147ef565b90506148516020830184614350565b9392505050565b600081519050614867816141b9565b92915050565b6000602082840312156148835761488261419b565b5b600061489184828501614858565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490382614212565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361493557614934614629565b5b600182019050919050565b614949816142d2565b82525050565b60006040820190506149646000830185614288565b6149716020830184614940565b9392505050565b600060408201905061498d6000830185614288565b61499a6020830184614288565b9392505050565b60006020820190506149b66000830184614940565b92915050565b600081905092915050565b82818337600083830152505050565b60006149e283856149bc565b93506149ef8385846149c7565b82840190509392505050565b6000614a088284866149d6565b91508190509392505050565b6000614a2083856147a3565b9350614a2d8385846149c7565b614a36836147de565b840190509392505050565b60006040820190508181036000830152614a5c818587614a14565b9050614a6b6020830184614350565b949350505050565b6000614a7e82614212565b9150614a8983614212565b9250828203905081811115614aa157614aa0614629565b5b92915050565b6000614ab282614212565b9150614abd83614212565b9250828202614acb81614212565b91508282048414831517614ae257614ae1614629565b5b5092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000614b1f6012836145ac565b9150614b2a82614ae9565b602082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b6000614b6082614212565b9150614b6b83614212565b925082614b7b57614b7a61454c565b5b828204905092915050565b600063ffffffff82169050919050565b6000614ba182614b86565b9150614bac83614b86565b9250828203905063ffffffff811115614bc857614bc7614629565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b614c18614c1382614212565b614bfd565b82525050565b60008160601b9050919050565b6000614c3682614c1e565b9050919050565b6000614c4882614c2b565b9050919050565b614c60614c5b826142d2565b614c3d565b82525050565b6000614c728287614c07565b602082019150614c828286614c07565b602082019150614c928285614c4f565b601482019150614ca28284614c07565b60208201915081905095945050505050565b6000614cbf82614212565b9150614cca83614212565b925082614cda57614cd961454c565b5b828206905092915050565b7f4d6178206d7573742062652067726561746572207468616e206d696e00000000600082015250565b6000614d1b601c836145ac565b9150614d2682614ce5565b602082019050919050565b60006020820190508181036000830152614d4a81614d0e565b9050919050565b7f4d696e20616e64204d6178206d757374206265206d756c7469706c6573206f6660008201527f2031302c3030302c303030000000000000000000000000000000000000000000602082015250565b6000614dad602b836145ac565b9150614db882614d51565b604082019050919050565b60006020820190508181036000830152614ddc81614da0565b9050919050565b6000614def8285614c07565b602082019150614dff8284614c07565b6020820191508190509392505050565b6000614e1a82614212565b9150614e2583614212565b9250828201905080821115614e3d57614e3c614629565b5b92915050565b6000614e4e826141a5565b9150614e59836141a5565b9250828203905067ffffffffffffffff811115614e7957614e78614629565b5b92915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000614eb56016836145ac565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b6000604082019050614f006000830185614940565b614f0d6020830184614350565b9392505050565b614f1d81614754565b8114614f2857600080fd5b50565b600081519050614f3a81614f14565b92915050565b600060208284031215614f5657614f5561419b565b5b6000614f6484828501614f2b565b9150509291505056fea26469706673582212206b149165daf0833944656a4ab803c88eeb55c63258283b4c8bb3ead1bd8548b664736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVOperators.sol:ISSVOperators": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}, "withdrawOperatorEarnings(uint64,uint256)": {"notice": "Withdraws operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "withdrawOperatorEarnings(uint64,uint256)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "tokenAmount": "The amount of tokens to withdraw (SSV)"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:1998:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:1998:3:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204e436de464aaac361955132d5b7eba678d08fec6ccd349017a4a8cd588f423f864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/OperatorLib.sol:OperatorLib": {"srcmap": "199:2146:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "199:2146:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba1ab76862fb7dc63a7293523bf1a4ced5f35265d149a13de47a2a846709756c64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba1ab76862fb7dc63a7293523bf1a4ced5f35265d149a13de47a2a846709756c64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb57e43b803fcd345f67aa0a1450e69dcb2500deeba6fb275b5b728ce7573f0664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:7:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:405:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:405:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9ca47dd3a40f8c0151f4e3bbc31aa614b805ce0fa3dbac8e9ee12ad7c9f04f364736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:8:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073b86e87cf8217a13ef3645b0a0691570801f6cda7b6e9f0dbfe2d711d892d9764736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVOperators.sol:SSVOperators": {"srcmap": "358:7314:9:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "358:7314:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5706:597;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5295:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1782:708;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6309:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6464:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4298:991;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2988:1304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2496:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;778:998;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5706:597;5793:21;5817:17;:15;:17::i;:::-;5793:41;;5844:24;5871:1;:11;;:23;5883:10;5871:23;;;;;;;;;;;;;;;5844:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:21;:8;:19;:21::i;:::-;5936:19;5958:12;:3;:10;:12::i;:::-;5936:34;;6000:8;:12;;;5984:28;;:12;:28;;;5980:64;;6021:23;;;;;;;;;;;;;;5980:64;6055:25;:8;:23;:25::i;:::-;6105:12;6090:8;:12;;:27;;;;;;;;;;;6153:8;6127:1;:11;;:23;6139:10;6127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6179:1;:27;;:39;6207:10;6179:39;;;;;;;;;;;;;;;;6172:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:10;6234:62;;6254:10;6234:62;;;6278:12;6292:3;6234:62;;;;;;;:::i;:::-;;;;;;;;5783:520;;;5706:597;;:::o;5295:405::-;5377:21;5401:17;:15;:17::i;:::-;5377:41;;5428:36;:1;:11;;:23;5440:10;5428:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;5540:1;5479;:27;;:39;5507:10;5479:39;;;;;;;;;;;;;;;:57;;;;;;;;;;;;:62;;;5475:90;;5550:15;;;;;;;;;;;;;;5475:90;5583:1;:27;;:39;5611:10;5583:39;;;;;;;;;;;;;;;;5576:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5682:10;5638:55;;5670:10;5638:55;;;;;;;;;;;;5367:333;5295:405;:::o;1782:708::-;1853:21;1877:17;:15;:17::i;:::-;1853:41;;1904:24;1931:1;:11;;:23;1943:10;1931:23;;;;;;;;;;;;;;;1904:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:21;:8;:19;:21::i;:::-;1996:25;:8;:23;:25::i;:::-;2031:21;2055:8;:17;;;:25;;;2031:49;;2117:1;2091:8;:17;;;:23;;:27;;;;;;;;;;;2156:1;2128:8;:17;;;:25;;:29;;;;;;;;;;;2193:1;2167:8;:23;;:27;;;;;;;;;;;2219:1;2204:8;:12;;:16;;;;;;;;;;;2257:8;2231:1;:11;;:23;2243:10;2231:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:1;:20;;:32;2304:10;2283:32;;;;;;;;;;;;;;;;2276:39;;;;;;;;;;;2347:1;2330:14;:18;;;2326:116;;;2364:67;2395:10;2407:23;:14;:21;;;:23::i;:::-;2364:30;:67::i;:::-;2326:116;2472:10;2456:27;;;;;;;;;;;;1843:647;;;1782:708;:::o;6309:149::-;6406:45;6432:10;6444:6;6406:25;:45::i;:::-;6309:149;;:::o;6464:131::-;6548:40;6574:10;6586:1;6548:25;:40::i;:::-;6464:131;:::o;4298:991::-;4373:21;4397:17;:15;:17::i;:::-;4373:41;;4424:24;4451:1;:11;;:23;4463:10;4451:23;;;;;;;;;;;;;;;4424:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:21;:8;:19;:21::i;:::-;4516:48;4567:1;:27;;:39;4595:10;4567:39;;;;;;;;;;;;;;;4516:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:1;4621:16;:34;;;:39;;;4617:67;;4669:15;;;;;;;;;;;;;;4617:67;4730:16;:34;;;4712:52;;:15;:52;:106;;;;4786:16;:32;;;4768:50;;:15;:50;4712:106;4695:194;;;4850:28;;;;;;;;;;;;;;4695:194;4935:25;:23;:25::i;:::-;:40;;;;;;;;;;;;4903:72;;:29;:16;:20;;;:27;;;:29::i;:::-;:72;4899:97;;;4984:12;;;;;;;;;;;;;;4899:97;5007:25;:8;:23;:25::i;:::-;5057:16;:20;;;5042:8;:12;;:35;;;;;;;;;;;5113:8;5087:1;:11;;:23;5099:10;5087:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:1;:27;;:39;5167:10;5139:39;;;;;;;;;;;;;;;;5132:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5226:10;5194:88;;5214:10;5194:88;;;5238:12;5252:29;:16;:20;;;:27;;;:29::i;:::-;5194:88;;;;;;;:::i;:::-;;;;;;;;4363:926;;;4298:991;:::o;2988:1304::-;3076:21;3100:17;:15;:17::i;:::-;3076:41;;3127:36;:1;:11;;:23;3139:10;3127:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;3174:26;3203:25;:23;:25::i;:::-;3174:54;;3250:1;3243:3;:8;;:38;;;;;450:11;3255:26;;:3;:26;3243:38;3239:62;;;3290:11;;;;;;;;;;;;;;3239:62;3321:2;:17;;;;;;;;;;;;3315:23;;:3;:23;3311:48;;;3347:12;;;;;;;;;;;;;;3311:48;3370:18;3391:1;:11;;:23;3403:10;3391:23;;;;;;;;;;;;;;;:27;;;;;;;;;;;;3370:48;;3428:16;3447:12;:3;:10;:12::i;:::-;3428:31;;3489:9;3474:24;;:11;:24;;;3470:188;;3521:25;;;;;;;;;;;;;;3470:188;3580:1;3567:9;:14;;;;:34;;;;;3600:1;3585:11;:16;;;3567:34;3563:95;;;3624:23;;;;;;;;;;;;;;3563:95;3756:20;510:6;3814:2;:25;;;;;;;;;;;;510:6;3795:44;;;;:::i;:::-;3780:11;:60;;;;:::i;:::-;3779:81;;;;:::i;:::-;3756:104;;3887:13;3875:25;;:9;:25;;;3871:63;;;3909:25;;;;;;;;;;;;;;3871:63;3987:221;;;;;;;;4025:9;3987:221;;;;;;4074:2;:27;;;;;;;;;;;;4055:15;4048:53;;;;:::i;:::-;3987:221;;;;;;4171:2;:27;;;;;;;;;;;;4141:2;:27;;;;;;;;;;;;4122:15;4115:53;;;;:::i;:::-;:83;;;;:::i;:::-;3987:221;;;;;3945:1;:27;;:39;3973:10;3945:39;;;;;;;;;;;;;;;:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:10;4223:62;;4243:10;4223:62;;;4267:12;4281:3;4223:62;;;;;;;:::i;:::-;;;;;;;;3066:1226;;;;;2988:1304;;:::o;2496:486::-;2585:21;2609:17;:15;:17::i;:::-;2585:41;;2636:36;:1;:11;;:23;2648:10;2636:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36::i;:::-;2710:1;2687:25;;:11;:25;;;2683:172;;2766:5;2728:1;:11;;:23;2740:10;2728:23;;;;;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;2683:172;;;2840:4;2802:1;:11;;:23;2814:10;2802:23;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;2683:172;2900:11;2865:1;:20;;:32;2886:10;2865:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2951:10;2926:49;;;2963:11;2926:49;;;;;;:::i;:::-;;;;;;;;2575:407;2496:486;;:::o;778:998::-;870:9;902:1;895:3;:8;;:38;;;;;450:11;907:26;;:3;:26;895:38;891:103;;;956:27;;;;;;;;;;;;;;891:103;1013:25;:23;:25::i;:::-;:40;;;;;;;;;;;;1007:46;;:3;:46;1003:112;;;1076:28;;;;;;;;;;;;;;1003:112;1125:21;1149:17;:15;:17::i;:::-;1125:41;;1177:16;1206:9;;1196:20;;;;;;;:::i;:::-;;;;;;;;1177:39;;1258:1;1230;:14;;:24;1245:8;1230:24;;;;;;;;;;;;;;;;;;;;;:29;;;1226:81;;1268:39;;;;;;;;;;;;;;1226:81;1318:28;:1;:16;;:26;:28::i;:::-;1368:26;:1;:16;;:24;:26::i;:::-;1356:39;;1423:246;;;;;;;;1594:1;1423:246;;;;;;1614:12;:3;:10;:12::i;:::-;1423:246;;;;;;1453:10;1423:246;;;;;;1653:5;1423:246;;;;;;1487:77;;;;;;;;1527:12;1487:77;;;;;;1549:1;1487:77;;;;;;1561:1;1487:77;;;;;1423:246;;;1405:1;:11;;:15;1417:2;1405:15;;;;;;;;;;;;;;;:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:2;1679:1;:14;;:24;1694:8;1679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1742:10;1724:45;;1738:2;1724:45;;;1754:9;;1765:3;1724:45;;;;;;;;:::i;:::-;;;;;;;;881:895;;778:998;;;;;:::o;1852:180:6:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;996:255:4:-;1113:1;1086:8;:17;;;:23;;;:28;;;1082:79;;1123:38;;;;;;;;;;;;;;1082:79;1193:10;1175:28;;:8;:14;;;:28;;;1171:73;;1212:32;;;;;;;;;;;;;;1171:73;996:255;:::o;276:205:8:-;330:6;105:10;365:7;:25;;;;:::i;:::-;356:5;:35;348:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;438:17;449:5;438:10;:17::i;:::-;:35;;;;:::i;:::-;424:50;;276:205;;;:::o;256:365:4:-;346:19;419:8;:12;;;392:8;:17;;;:23;;;376:12;369:46;;;;:::i;:::-;368:63;;;;;;:::i;:::-;346:85;;469:12;442:8;:17;;;:23;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;535:8;:23;;;520:38;;:12;:38;;;;:::i;:::-;491:8;:17;;;:25;;:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;601:12;568:8;:17;;;:23;;:46;;;;;;;;;;;336:285;256:365;:::o;140:109:8:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;7463:207:9:-;7556:43;7580:10;7592:6;7556:23;:43::i;:::-;7644:10;7614:49;;7632:10;7614:49;;;7656:6;7614:49;;;;;;:::i;:::-;;;;;;;;7463:207;;:::o;6626:831::-;6714:21;6738:17;:15;:17::i;:::-;6714:41;;6765:24;6792:1;:11;;:23;6804:10;6792:23;;;;;;;;;;;;;;;6765:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6825:21;:8;:19;:21::i;:::-;6857:25;:8;:23;:25::i;:::-;6893:22;6925:19;6947:15;:6;:13;:15::i;:::-;6925:37;;6987:1;6977:6;:11;:44;;;;;7020:1;6992:8;:17;;;:25;;;:29;;;6977:44;6973:299;;;7055:8;:17;;;:25;;;7037:43;;6973:299;;;7110:1;7101:6;:10;:55;;;;;7144:12;7115:41;;:8;:17;;;:25;;;:41;;;;7101:55;7097:175;;;7190:12;7172:30;;7097:175;;;7240:21;;;;;;;;;;;;;;7097:175;6973:299;7311:15;7282:8;:17;;;:25;;:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;7363:8;7337:1;:11;;:23;7349:10;7337:23;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:68;7413:10;7425:24;:15;:22;;;:24::i;:::-;7382:30;:68::i;:::-;6704:753;;;;6626:831;;:::o;1672:184:7:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;945:123:11:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;487:169:8:-;545:7;599:1;105:10;572:5;:23;;;;:::i;:::-;:28;564:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;644:5;637:12;;487:169;;;:::o;297:198:3:-;374:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;407:2;411:6;374:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;369:120;;441:37;;;;;;;;;;;;;;369:120;297:198;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:101;370:7;410:18;403:5;399:30;388:41;;334:101;;;:::o;441:120::-;513:23;530:5;513:23;:::i;:::-;506:5;503:34;493:62;;551:1;548;541:12;493:62;441:120;:::o;567:137::-;612:5;650:6;637:20;628:29;;666:32;692:5;666:32;:::i;:::-;567:137;;;;:::o;710:77::-;747:7;776:5;765:16;;710:77;;;:::o;793:122::-;866:24;884:5;866:24;:::i;:::-;859:5;856:35;846:63;;905:1;902;895:12;846:63;793:122;:::o;921:139::-;967:5;1005:6;992:20;983:29;;1021:33;1048:5;1021:33;:::i;:::-;921:139;;;;:::o;1066:472::-;1133:6;1141;1190:2;1178:9;1169:7;1165:23;1161:32;1158:119;;;1196:79;;:::i;:::-;1158:119;1316:1;1341:52;1385:7;1376:6;1365:9;1361:22;1341:52;:::i;:::-;1331:62;;1287:116;1442:2;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1413:118;1066:472;;;;;:::o;1544:327::-;1602:6;1651:2;1639:9;1630:7;1626:23;1622:32;1619:119;;;1657:79;;:::i;:::-;1619:119;1777:1;1802:52;1846:7;1837:6;1826:9;1822:22;1802:52;:::i;:::-;1792:62;;1748:116;1544:327;;;;:::o;1877:126::-;1914:7;1954:42;1947:5;1943:54;1932:65;;1877:126;;;:::o;2009:96::-;2046:7;2075:24;2093:5;2075:24;:::i;:::-;2064:35;;2009:96;;;:::o;2111:122::-;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:472::-;2451:6;2459;2508:2;2496:9;2487:7;2483:23;2479:32;2476:119;;;2514:79;;:::i;:::-;2476:119;2634:1;2659:52;2703:7;2694:6;2683:9;2679:22;2659:52;:::i;:::-;2649:62;;2605:116;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2384:472;;;;;:::o;2862:117::-;2971:1;2968;2961:12;2985:117;3094:1;3091;3084:12;3108:117;3217:1;3214;3207:12;3244:552;3301:8;3311:6;3361:3;3354:4;3346:6;3342:17;3338:27;3328:122;;3369:79;;:::i;:::-;3328:122;3482:6;3469:20;3459:30;;3512:18;3504:6;3501:30;3498:117;;;3534:79;;:::i;:::-;3498:117;3648:4;3640:6;3636:17;3624:29;;3702:3;3694:4;3686:6;3682:17;3672:8;3668:32;3665:41;3662:128;;;3709:79;;:::i;:::-;3662:128;3244:552;;;;;:::o;3802:672::-;3881:6;3889;3897;3946:2;3934:9;3925:7;3921:23;3917:32;3914:119;;;3952:79;;:::i;:::-;3914:119;4100:1;4089:9;4085:17;4072:31;4130:18;4122:6;4119:30;4116:117;;;4152:79;;:::i;:::-;4116:117;4265:64;4321:7;4312:6;4301:9;4297:22;4265:64;:::i;:::-;4247:82;;;;4043:296;4378:2;4404:53;4449:7;4440:6;4429:9;4425:22;4404:53;:::i;:::-;4394:63;;4349:118;3802:672;;;;;:::o;4480:115::-;4565:23;4582:5;4565:23;:::i;:::-;4560:3;4553:36;4480:115;;:::o;4601:218::-;4692:4;4730:2;4719:9;4715:18;4707:26;;4743:69;4809:1;4798:9;4794:17;4785:6;4743:69;:::i;:::-;4601:218;;;;:::o;4825:118::-;4912:24;4930:5;4912:24;:::i;:::-;4907:3;4900:37;4825:118;;:::o;4949:332::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;5202:72;5270:2;5259:9;5255:18;5246:6;5202:72;:::i;:::-;4949:332;;;;;:::o;5287:180::-;5335:77;5332:1;5325:88;5432:4;5429:1;5422:15;5456:4;5453:1;5446:15;5473:205;5512:3;5531:19;5548:1;5531:19;:::i;:::-;5526:24;;5564:19;5581:1;5564:19;:::i;:::-;5559:24;;5606:1;5603;5599:9;5592:16;;5629:18;5624:3;5621:27;5618:53;;;5651:18;;:::i;:::-;5618:53;5473:205;;;;:::o;5684:275::-;5723:7;5746:19;5763:1;5746:19;:::i;:::-;5741:24;;5779:19;5796:1;5779:19;:::i;:::-;5774:24;;5833:1;5830;5826:9;5855:29;5872:11;5855:29;:::i;:::-;5844:40;;5916:11;5907:7;5904:24;5894:58;;5932:18;;:::i;:::-;5894:58;5731:228;5684:275;;;;:::o;5965:180::-;6013:77;6010:1;6003:88;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6151:182;6190:1;6207:19;6224:1;6207:19;:::i;:::-;6202:24;;6240:19;6257:1;6240:19;:::i;:::-;6235:24;;6278:1;6268:35;;6283:18;;:::i;:::-;6268:35;6325:1;6322;6318:9;6313:14;;6151:182;;;;:::o;6339:118::-;6426:24;6444:5;6426:24;:::i;:::-;6421:3;6414:37;6339:118;;:::o;6463:222::-;6556:4;6594:2;6583:9;6579:18;6571:26;;6607:71;6675:1;6664:9;6660:17;6651:6;6607:71;:::i;:::-;6463:222;;;;:::o;6691:147::-;6792:11;6829:3;6814:18;;6691:147;;;;:::o;6844:146::-;6941:6;6936:3;6931;6918:30;6982:1;6973:6;6968:3;6964:16;6957:27;6844:146;;;:::o;7018:327::-;7132:3;7153:88;7234:6;7229:3;7153:88;:::i;:::-;7146:95;;7251:56;7300:6;7295:3;7288:5;7251:56;:::i;:::-;7332:6;7327:3;7323:16;7316:23;;7018:327;;;;;:::o;7351:291::-;7491:3;7513:103;7612:3;7603:6;7595;7513:103;:::i;:::-;7506:110;;7633:3;7626:10;;7351:291;;;;;:::o;7648:168::-;7731:11;7765:6;7760:3;7753:19;7805:4;7800:3;7796:14;7781:29;;7648:168;;;;:::o;7822:102::-;7863:6;7914:2;7910:7;7905:2;7898:5;7894:14;7890:28;7880:38;;7822:102;;;:::o;7952:314::-;8048:3;8069:70;8132:6;8127:3;8069:70;:::i;:::-;8062:77;;8149:56;8198:6;8193:3;8186:5;8149:56;:::i;:::-;8230:29;8252:6;8230:29;:::i;:::-;8225:3;8221:39;8214:46;;7952:314;;;;;:::o;8272:439::-;8421:4;8459:2;8448:9;8444:18;8436:26;;8508:9;8502:4;8498:20;8494:1;8483:9;8479:17;8472:47;8536:86;8617:4;8608:6;8600;8536:86;:::i;:::-;8528:94;;8632:72;8700:2;8689:9;8685:18;8676:6;8632:72;:::i;:::-;8272:439;;;;;;:::o;8717:194::-;8757:4;8777:20;8795:1;8777:20;:::i;:::-;8772:25;;8811:20;8829:1;8811:20;:::i;:::-;8806:25;;8855:1;8852;8848:9;8840:17;;8879:1;8873:4;8870:11;8867:37;;;8884:18;;:::i;:::-;8867:37;8717:194;;;;:::o;8917:410::-;8957:7;8980:20;8998:1;8980:20;:::i;:::-;8975:25;;9014:20;9032:1;9014:20;:::i;:::-;9009:25;;9069:1;9066;9062:9;9091:30;9109:11;9091:30;:::i;:::-;9080:41;;9270:1;9261:7;9257:15;9254:1;9251:22;9231:1;9224:9;9204:83;9181:139;;9300:18;;:::i;:::-;9181:139;8965:362;8917:410;;;;:::o;9333:169::-;9417:11;9451:6;9446:3;9439:19;9491:4;9486:3;9482:14;9467:29;;9333:169;;;;:::o;9508:168::-;9648:20;9644:1;9636:6;9632:14;9625:44;9508:168;:::o;9682:366::-;9824:3;9845:67;9909:2;9904:3;9845:67;:::i;:::-;9838:74;;9921:93;10010:3;9921:93;:::i;:::-;10039:2;10034:3;10030:12;10023:19;;9682:366;;;:::o;10054:419::-;10220:4;10258:2;10247:9;10243:18;10235:26;;10307:9;10301:4;10297:20;10293:1;10282:9;10278:17;10271:47;10335:131;10461:4;10335:131;:::i;:::-;10327:139;;10054:419;;;:::o;10479:185::-;10519:1;10536:20;10554:1;10536:20;:::i;:::-;10531:25;;10570:20;10588:1;10570:20;:::i;:::-;10565:25;;10609:1;10599:35;;10614:18;;:::i;:::-;10599:35;10656:1;10653;10649:9;10644:14;;10479:185;;;;:::o;10670:93::-;10706:7;10746:10;10739:5;10735:22;10724:33;;10670:93;;;:::o;10769:200::-;10808:4;10828:19;10845:1;10828:19;:::i;:::-;10823:24;;10861:19;10878:1;10861:19;:::i;:::-;10856:24;;10904:1;10901;10897:9;10889:17;;10928:10;10922:4;10919:20;10916:46;;;10942:18;;:::i;:::-;10916:46;10769:200;;;;:::o;10975:222::-;11068:4;11106:2;11095:9;11091:18;11083:26;;11119:71;11187:1;11176:9;11172:17;11163:6;11119:71;:::i;:::-;10975:222;;;;:::o;11203:208::-;11242:4;11262:19;11279:1;11262:19;:::i;:::-;11257:24;;11295:19;11312:1;11295:19;:::i;:::-;11290:24;;11338:1;11335;11331:9;11323:17;;11362:18;11356:4;11353:28;11350:54;;;11384:18;;:::i;:::-;11350:54;11203:208;;;;:::o;11417:176::-;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11585:1;11582;11578:9;11573:14;;11417:176;;;;:::o;11599:172::-;11739:24;11735:1;11727:6;11723:14;11716:48;11599:172;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:332::-;12695:4;12733:2;12722:9;12718:18;12710:26;;12746:71;12814:1;12803:9;12799:17;12790:6;12746:71;:::i;:::-;12827:72;12895:2;12884:9;12880:18;12871:6;12827:72;:::i;:::-;12574:332;;;;;:::o;12912:90::-;12946:7;12989:5;12982:13;12975:21;12964:32;;12912:90;;;:::o;13008:116::-;13078:21;13093:5;13078:21;:::i;:::-;13071:5;13068:32;13058:60;;13114:1;13111;13104:12;13058:60;13008:116;:::o;13130:137::-;13184:5;13215:6;13209:13;13200:22;;13231:30;13255:5;13231:30;:::i;:::-;13130:137;;;;:::o;13273:345::-;13340:6;13389:2;13377:9;13368:7;13364:23;13360:32;13357:119;;;13395:79;;:::i;:::-;13357:119;13515:1;13540:61;13593:7;13584:6;13573:9;13569:22;13540:61;:::i;:::-;13530:71;;13486:125;13273:345;;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"FeeRecipientAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeDeclarationCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"OperatorFeeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"cancelDeclaredOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"declareOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"executeOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"reduceOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"whitelisted\",\"type\":\"address\"}],\"name\":\"setOperatorWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"}],\"name\":\"withdrawAllOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"operatorId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawOperatorEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50613172806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a11565b6101a8565b005b6100ce60048036038101906100c99190612a51565b61063c565b005b6100ea60048036038101906100e59190612a51565b61093e565b005b61010660048036038101906101019190612a11565b610db7565b005b610122600480360381019061011d9190612a51565b610dc5565b005b61013e60048036038101906101399190612a51565b610dd3565b005b61015a60048036038101906101559190612a11565b611411565b005b61017660048036038101906101719190612adc565b6119c7565b005b610192600480360381019061018d9190612b81565b611ce9565b60405161019f9190612bf0565b60405180910390f35b60006101b26120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c81612137565b6000610367846121eb565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c382612264565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef438760405161062d929190612c1a565b60405180910390a35050505050565b60006106466120fb565b90506107eb8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff160361086f576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b60006109486120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610af281612137565b610afb81612264565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff161115610d7a57610d7984610d748367ffffffffffffffff1661232c565b61234e565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610dc182826123b5565b5050565b610dd08160006123b5565b50565b6000610ddd6120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f8781612137565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361109d576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806110c65750806040015167ffffffffffffffff1642115b156110fd576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111056127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1661113e826000015167ffffffffffffffff1661232c565b1115611176576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f82612264565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436113f5856000015167ffffffffffffffff1661232c565b604051611403929190612c1a565b60405180910390a350505050565b600061141b6120fb565b90506115c08160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60006115ca6127f4565b9050600083141580156115ea57506305f5e10067ffffffffffffffff1683105b15611621576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561167d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006116cd856121eb565b90508067ffffffffffffffff168267ffffffffffffffff160361171c576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611741575060008267ffffffffffffffff16145b15611778576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106117a39190612c72565b846117ae9190612cae565b6117b89190612d1a565b90508067ffffffffffffffff168267ffffffffffffffff161115611808576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118479190612c72565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426118939190612c72565b61189d9190612c72565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516119b6929190612c1a565b60405180910390a350505050505050565b60006119d16120fb565b9050611b768160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf45760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611c3a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611cdc9190612d5a565b60405180910390a2505050565b6000808214158015611d0857506305f5e10067ffffffffffffffff1682105b15611d3f576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d476127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611da2576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611dac6120fb565b905060008585604051611dc0929190612db4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611e37576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e4382600801612830565b611e4f82600801612846565b92506040518060a00160405280600063ffffffff168152602001611e72866121eb565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516120ea93929190612e1c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61212e9190612e4e565b90508091505090565b600081608001516000015163ffffffff160361217f576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122059190612e82565b8210612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90612f21565b60405180910390fd5b6298968061225383612854565b61225d9190612f41565b9050919050565b600081602001518260800151600001514361227f9190612f82565b63ffffffff1661228f9190612cae565b90508082608001516020018181516122a79190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816122da9190612cae565b82608001516040018181516122ef9190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123479190612e82565b9050919050565b61235833826128ae565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516123a99190612fba565b60405180910390a35050565b60006123bf6120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061256981612137565b61257281612264565b60008061257e856121eb565b90506000851480156125a25750600083608001516040015167ffffffffffffffff16115b156125b7578260800151604001519150612623565b6000851180156125e357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156125f057809150612622565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126399190612fd5565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506127ec866127e78467ffffffffffffffff1661232c565b61234e565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128279190612e4e565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128669190613011565b146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061308e565b60405180910390fd5b819050919050565b6128b66120fb565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016129149291906130ae565b6020604051808303816000875af1158015612933573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612957919061310f565b61298d576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6129b88161299b565b81146129c357600080fd5b50565b6000813590506129d5816129af565b92915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612991565b5b6000612a36858286016129c6565b9250506020612a47858286016129fc565b9150509250929050565b600060208284031215612a6757612a66612991565b5b6000612a75848285016129c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aa982612a7e565b9050919050565b612ab981612a9e565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b60008060408385031215612af357612af2612991565b5b6000612b01858286016129c6565b9250506020612b1285828601612ac7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b4157612b40612b1c565b5b8235905067ffffffffffffffff811115612b5e57612b5d612b21565b5b602083019150836001820283011115612b7a57612b79612b26565b5b9250929050565b600080600060408486031215612b9a57612b99612991565b5b600084013567ffffffffffffffff811115612bb857612bb7612996565b5b612bc486828701612b2b565b93509350506020612bd7868287016129fc565b9150509250925092565b612bea8161299b565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129db565b82525050565b6000604082019050612c2f6000830185612c0b565b612c3c6020830184612c0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7d8261299b565b9150612c888361299b565b9250828201905067ffffffffffffffff811115612ca857612ca7612c43565b5b92915050565b6000612cb98261299b565b9150612cc48361299b565b9250828202612cd28161299b565b9150808214612ce457612ce3612c43565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d258261299b565b9150612d308361299b565b925082612d4057612d3f612ceb565b5b828204905092915050565b612d5481612a9e565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600081905092915050565b82818337600083830152505050565b6000612d9b8385612d75565b9350612da8838584612d80565b82840190509392505050565b6000612dc1828486612d8f565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612dfb8385612dcd565b9350612e08838584612d80565b612e1183612dde565b840190509392505050565b60006040820190508181036000830152612e37818587612def565b9050612e466020830184612c0b565b949350505050565b6000612e59826129db565b9150612e64836129db565b9250828203905081811115612e7c57612e7b612c43565b5b92915050565b6000612e8d826129db565b9150612e98836129db565b9250828202612ea6816129db565b91508282048414831517612ebd57612ebc612c43565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f0b601283612ec4565b9150612f1682612ed5565b602082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b6000612f4c826129db565b9150612f57836129db565b925082612f6757612f66612ceb565b5b828204905092915050565b600063ffffffff82169050919050565b6000612f8d82612f72565b9150612f9883612f72565b9250828203905063ffffffff811115612fb457612fb3612c43565b5b92915050565b6000602082019050612fcf6000830184612c0b565b92915050565b6000612fe08261299b565b9150612feb8361299b565b9250828203905067ffffffffffffffff81111561300b5761300a612c43565b5b92915050565b600061301c826129db565b9150613027836129db565b92508261303757613036612ceb565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613078601683612ec4565b915061308382613042565b602082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b60006040820190506130c36000830185612d4b565b6130d06020830184612c0b565b9392505050565b60008115159050919050565b6130ec816130d7565b81146130f757600080fd5b50565b600081519050613109816130e3565b92915050565b60006020828403121561312557613124612991565b5b6000613133848285016130fa565b9150509291505056fea26469706673582212204df5620f3b3037b05438f0141e8b7ab83c168781b707d6e912910aba93d5075f64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80634bc93b64116100665780634bc93b64146101085780638932cee014610124578063b317c35f14610140578063c90a7eab1461015c578063ff212c5c1461017857610093565b8063190d82e41461009857806323d68a6d146100b45780632e168e0e146100d057806335f63767146100ec575b600080fd5b6100b260048036038101906100ad9190612a11565b6101a8565b005b6100ce60048036038101906100c99190612a51565b61063c565b005b6100ea60048036038101906100e59190612a51565b61093e565b005b61010660048036038101906101019190612a11565b610db7565b005b610122600480360381019061011d9190612a51565b610dc5565b005b61013e60048036038101906101399190612a51565b610dd3565b005b61015a60048036038101906101559190612a11565b611411565b005b61017660048036038101906101719190612adc565b6119c7565b005b610192600480360381019061018d9190612b81565b611ce9565b60405161019f9190612bf0565b60405180910390f35b60006101b26120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061035c81612137565b6000610367846121eb565b9050816020015167ffffffffffffffff168167ffffffffffffffff16106103ba576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103c382612264565b80826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508467ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef438760405161062d929190612c1a565b60405180910390a35050505050565b60006106466120fb565b90506107eb8160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60008160050160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff160361086f576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060050160008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5055fa347441172447637c015e80a3ee748b9382212ceb5dca5a3683298fd6f360405160405180910390a35050565b60006109486120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610af281612137565b610afb81612264565b60008160800151604001519050600082608001516000019063ffffffff16908163ffffffff1681525050600082608001516040019067ffffffffffffffff16908167ffffffffffffffff16815250506000826000019063ffffffff16908163ffffffff16815250506000826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560008167ffffffffffffffff161115610d7a57610d7984610d748367ffffffffffffffff1661232c565b61234e565b5b8367ffffffffffffffff167f0e0ba6c2b04de36d6d509ec5bd155c43a9fe862f8052096dd54f3902a74cca3e60405160405180910390a250505050565b610dc182826123b5565b5050565b610dd08160006123b5565b50565b6000610ddd6120fb565b905060008160060160008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815250509050610f8781612137565b60008260050160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000816020015167ffffffffffffffff160361109d576040517f1d226c3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff164210806110c65750806040015167ffffffffffffffff1642115b156110fd576040517f97e4b51800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111056127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1661113e826000015167ffffffffffffffff1661232c565b1115611176576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f82612264565b8060000151826020019067ffffffffffffffff16908167ffffffffffffffff1681525050818360060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508260050160008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549067ffffffffffffffff02191690556000820160086101000a81549067ffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff021916905550508367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f513e931ff778ed01e676d55880d8db185c29b0094546ff2b3e9f5b6920d16bef436113f5856000015167ffffffffffffffff1661232c565b604051611403929190612c1a565b60405180910390a350505050565b600061141b6120fb565b90506115c08160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b60006115ca6127f4565b9050600083141580156115ea57506305f5e10067ffffffffffffffff1683105b15611621576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1683111561167d576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260060160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160049054906101000a900467ffffffffffffffff16905060006116cd856121eb565b90508067ffffffffffffffff168267ffffffffffffffff160361171c576040517fc81272f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff1614158015611741575060008267ffffffffffffffff16145b15611778576040517f410a2b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127108460020160089054906101000a900467ffffffffffffffff166127106117a39190612c72565b846117ae9190612cae565b6117b89190612d1a565b90508067ffffffffffffffff168267ffffffffffffffff161115611808576040517f958065d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808367ffffffffffffffff1681526020018560010160189054906101000a900467ffffffffffffffff16426118479190612c72565b67ffffffffffffffff1681526020018560020160009054906101000a900467ffffffffffffffff168660010160189054906101000a900467ffffffffffffffff16426118939190612c72565b61189d9190612c72565b67ffffffffffffffff168152508560050160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508667ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f796204296f2eb56d7432fa85961e9750d0cb21741873ebf7077e28263e32735843896040516119b6929190612c1a565b60405180910390a350505050505050565b60006119d16120fb565b9050611b768160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050612137565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf45760008160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611c3a565b60018160060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b818160040160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508267ffffffffffffffff167f29f72634ccb172103f8c542da23de7f6cf9bce724c5bb91bd6f3a516b14c63fe83604051611cdc9190612d5a565b60405180910390a2505050565b6000808214158015611d0857506305f5e10067ffffffffffffffff1682105b15611d3f576040517f732f941300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d476127f4565b60020160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16821115611da2576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611dac6120fb565b905060008585604051611dc0929190612db4565b60405180910390209050600082600201600083815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614611e37576040517f289c949400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e4382600801612830565b611e4f82600801612846565b92506040518060a00160405280600063ffffffff168152602001611e72866121eb565b67ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160405180606001604052804363ffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152508152508260060160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050508282600201600083815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fd839f31c14bd632f424e307b36abff63ca33684f77f28e35dc13718ef338f7f48888886040516120ea93929190612e1c565b60405180910390a350509392505050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c61212e9190612e4e565b90508091505090565b600081608001516000015163ffffffff160361217f576040517f961e3e8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600062989680680100000000000000006122059190612e82565b8210612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d90612f21565b60405180910390fd5b6298968061225383612854565b61225d9190612f41565b9050919050565b600081602001518260800151600001514361227f9190612f82565b63ffffffff1661228f9190612cae565b90508082608001516020018181516122a79190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050816000015163ffffffff16816122da9190612cae565b82608001516040018181516122ef9190612c72565b91509067ffffffffffffffff16908167ffffffffffffffff16815250504382608001516000019063ffffffff16908163ffffffff16815250505050565b6000629896808267ffffffffffffffff166123479190612e82565b9050919050565b61235833826128ae565b8167ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f178bf78bdd8914b8483d640b4a4f84e20943b5eb6b639b7474286364c7651d60836040516123a99190612fba565b60405180910390a35050565b60006123bf6120fb565b905060008160060160008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900460ff16151515158152602001600282016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505081525050905061256981612137565b61257281612264565b60008061257e856121eb565b90506000851480156125a25750600083608001516040015167ffffffffffffffff16115b156125b7578260800151604001519150612623565b6000851180156125e357508067ffffffffffffffff1683608001516040015167ffffffffffffffff1610155b156125f057809150612622565b6040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8183608001516040018181516126399190612fd5565b91509067ffffffffffffffff16908167ffffffffffffffff1681525050828460060160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160006101000a81548160ff02191690831515021790555060808201518160020160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050509050506127ec866127e78467ffffffffffffffff1661232c565b61234e565b505050505050565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6128279190612e4e565b90508091505090565b6001816000016000828254019250508190555050565b600081600001549050919050565b60008062989680836128669190613011565b146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d9061308e565b60405180910390fd5b819050919050565b6128b66120fb565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016129149291906130ae565b6020604051808303816000875af1158015612933573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612957919061310f565b61298d576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080fd5b600080fd5b600067ffffffffffffffff82169050919050565b6129b88161299b565b81146129c357600080fd5b50565b6000813590506129d5816129af565b92915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612991565b5b6000612a36858286016129c6565b9250506020612a47858286016129fc565b9150509250929050565b600060208284031215612a6757612a66612991565b5b6000612a75848285016129c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aa982612a7e565b9050919050565b612ab981612a9e565b8114612ac457600080fd5b50565b600081359050612ad681612ab0565b92915050565b60008060408385031215612af357612af2612991565b5b6000612b01858286016129c6565b9250506020612b1285828601612ac7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b4157612b40612b1c565b5b8235905067ffffffffffffffff811115612b5e57612b5d612b21565b5b602083019150836001820283011115612b7a57612b79612b26565b5b9250929050565b600080600060408486031215612b9a57612b99612991565b5b600084013567ffffffffffffffff811115612bb857612bb7612996565b5b612bc486828701612b2b565b93509350506020612bd7868287016129fc565b9150509250925092565b612bea8161299b565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129db565b82525050565b6000604082019050612c2f6000830185612c0b565b612c3c6020830184612c0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c7d8261299b565b9150612c888361299b565b9250828201905067ffffffffffffffff811115612ca857612ca7612c43565b5b92915050565b6000612cb98261299b565b9150612cc48361299b565b9250828202612cd28161299b565b9150808214612ce457612ce3612c43565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d258261299b565b9150612d308361299b565b925082612d4057612d3f612ceb565b5b828204905092915050565b612d5481612a9e565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b600081905092915050565b82818337600083830152505050565b6000612d9b8385612d75565b9350612da8838584612d80565b82840190509392505050565b6000612dc1828486612d8f565b91508190509392505050565b600082825260208201905092915050565b6000601f19601f8301169050919050565b6000612dfb8385612dcd565b9350612e08838584612d80565b612e1183612dde565b840190509392505050565b60006040820190508181036000830152612e37818587612def565b9050612e466020830184612c0b565b949350505050565b6000612e59826129db565b9150612e64836129db565b9250828203905081811115612e7c57612e7b612c43565b5b92915050565b6000612e8d826129db565b9150612e98836129db565b9250828202612ea6816129db565b91508282048414831517612ebd57612ebc612c43565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000612f0b601283612ec4565b9150612f1682612ed5565b602082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b6000612f4c826129db565b9150612f57836129db565b925082612f6757612f66612ceb565b5b828204905092915050565b600063ffffffff82169050919050565b6000612f8d82612f72565b9150612f9883612f72565b9250828203905063ffffffff811115612fb457612fb3612c43565b5b92915050565b6000602082019050612fcf6000830184612c0b565b92915050565b6000612fe08261299b565b9150612feb8361299b565b9250828203905067ffffffffffffffff81111561300b5761300a612c43565b5b92915050565b600061301c826129db565b9150613027836129db565b92508261303757613036612ceb565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000613078601683612ec4565b915061308382613042565b602082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b60006040820190506130c36000830185612d4b565b6130d06020830184612c0b565b9392505050565b60008115159050919050565b6130ec816130d7565b81146130f757600080fd5b50565b600081519050613109816130e3565b92915050565b60006020828403121561312557613124612991565b5b6000613133848285016130fa565b9150509291505056fea26469706673582212204df5620f3b3037b05438f0141e8b7ab83c168781b707d6e912910aba93d5075f64736f6c63430008120033", "userdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"notice": "Cancels the declared operator's fee"}, "declareOperatorFee(uint64,uint256)": {"notice": "Declares the operator's fee"}, "executeOperatorFee(uint64)": {"notice": "Executes the operator's fee"}, "reduceOperatorFee(uint64,uint256)": {"notice": "Reduces the operator's fee"}, "registerOperator(bytes,uint256)": {"notice": "Registers a new operator"}, "removeOperator(uint64)": {"notice": "Removes an existing operator"}, "setOperatorWhitelist(uint64,address)": {"notice": "Sets the whitelist for an operator"}, "withdrawAllOperatorEarnings(uint64)": {"notice": "Withdraws all operator earnings"}}, "notice": null}, "devdoc": {"methods": {"cancelDeclaredOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "declareOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The fee to be declared (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "executeOperatorFee(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}, "reduceOperatorFee(uint64,uint256)": {"author": null, "details": null, "params": {"fee": "The new Operator's fee (SSV)", "operatorId": "The ID of the operator"}, "return": null}, "registerOperator(bytes,uint256)": {"author": null, "details": null, "params": {"fee": "The operator's fee (SSV)", "publicKey": "The public key of the operator"}, "return": null}, "removeOperator(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator to be removed"}, "return": null}, "setOperatorWhitelist(uint64,address)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator", "whitelisted": "The address to be whitelisted"}, "return": null}, "withdrawAllOperatorEarnings(uint64)": {"author": null, "details": null, "params": {"operatorId": "The ID of the operator"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/docs/setup.md b/docs/setup.md new file mode 100644 index 00000000..1bcacae6 --- /dev/null +++ b/docs/setup.md @@ -0,0 +1,34 @@ +# SSV Network + +### [Intro](../README.md) | [Architecture](architecture.md) | Setup | [Tasks](tasks.md) | [Local development](local-dev.md) | [Roles](roles.md) | [Publish](publish.md) + +## Developer Setup + +The stack is a simple one: + +- Solidity +- JavaScript +- Node/NPM +- HardHat +- Ethers + +### Install Node (also installs NPM) + +- Use the latest [LTS (long-term support) version](https://nodejs.org/en/download/). + +### Install required Node modules + +All NPM resources are project local. No global installs are required. + +``` +cd path/to/ssv-network +npm install +``` + +### Configure Environment + +- Copy [.env.example](../.env.example) to `.env` and edit to suit. +- API keys are only needed for deploying to public networks. +- `.env` is included in `.gitignore` and will not be committed to the repo. + +At this moment you are ready to run tests, compile contracts and run coverage tests. diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 00000000..9295be50 --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,145 @@ +import 'dotenv/config'; + +import { HardhatUserConfig } from 'hardhat/config'; +import { NetworkUserConfig } from 'hardhat/types'; +import '@nomicfoundation/hardhat-toolbox'; +import '@openzeppelin/hardhat-upgrades'; +import 'hardhat-tracer'; +import '@nomiclabs/hardhat-solhint'; +import 'hardhat-contract-sizer'; +import 'hardhat-storage-layout-changes'; +import 'hardhat-abi-exporter'; +import './tasks/deploy'; +import './tasks/update-module'; +import './tasks/upgrade'; + +type SSVNetworkConfig = NetworkUserConfig & { + ssvToken: string; +}; + +const config: HardhatUserConfig = { + // Your type-safe config goes here + mocha: { + timeout: 40000000000000000, + }, + solidity: { + compilers: [ + { + version: '0.8.4', + }, + { + version: '0.8.18', + settings: { + optimizer: { + enabled: true, + runs: 10000, + }, + }, + }, + ], + }, + networks: { + ganache: { + chainId: 1337, + url: 'http://127.0.0.1:8585', + ssvToken: process.env.SSVTOKEN_ADDRESS, // if empty, deploy SSV mock token + } as SSVNetworkConfig, + hardhat: { + allowUnlimitedContractSize: true, + gas: 5000000, + }, + }, + etherscan: { + // Your API key for Etherscan + // Obtain one at https://etherscan.io/ + apiKey: process.env.ETHERSCAN_KEY, + customChains: [ + { + network: 'holesky', + chainId: 17000, + urls: { + apiURL: 'https://api-holesky.etherscan.io/api', + browserURL: 'https://holesky.etherscan.io', + }, + }, + ], + }, + gasReporter: { + enabled: true, + currency: 'USD', + gasPrice: 0.3, + }, + contractSizer: { + alphaSort: true, + disambiguatePaths: false, + runOnCompile: true, + strict: false, + }, + abiExporter: { + path: './abis', + runOnCompile: true, + clear: true, + flat: true, + spacing: 2, + pretty: false, + only: ['contracts/SSVNetwork.sol', 'contracts/SSVNetworkViews.sol'], + }, +}; + +if (process.env.GOERLI_ETH_NODE_URL) { + const sharedConfig = { + url: process.env.GOERLI_ETH_NODE_URL, + accounts: [`0x${process.env.GOERLI_OWNER_PRIVATE_KEY}`], + gasPrice: +(process.env.GAS_PRICE || ''), + gas: +(process.env.GAS || ''), + }; + //@ts-ignore + config.networks = { + ...config.networks, + goerli_development: { + ...sharedConfig, + ssvToken: '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + } as SSVNetworkConfig, + goerli_testnet: { + ...sharedConfig, + ssvToken: '0x3a9f01091C446bdE031E39ea8354647AFef091E7', + } as SSVNetworkConfig, + }; +} + +if (process.env.HOLESKY_ETH_NODE_URL) { + const sharedConfig = { + url: process.env.HOLESKY_ETH_NODE_URL, + accounts: [`0x${process.env.HOLESKY_OWNER_PRIVATE_KEY}`], + gasPrice: +(process.env.GAS_PRICE || ''), + gas: +(process.env.GAS || ''), + }; + //@ts-ignore + config.networks = { + ...config.networks, + holesky_development: { + ...sharedConfig, + ssvToken: '0x68A8DDD7a59A900E0657e9f8bbE02B70c947f25F', + } as SSVNetworkConfig, + holesky_testnet: { + ...sharedConfig, + ssvToken: '0xad45A78180961079BFaeEe349704F411dfF947C6', + } as SSVNetworkConfig, + }; +} + +if (process.env.MAINNET_ETH_NODE_URL) { + //@ts-ignore + config.networks = { + ...config.networks, + mainnet: { + url: process.env.MAINNET_ETH_NODE_URL, + accounts: [`0x${process.env.MAINNET_OWNER_PRIVATE_KEY}`], + gasPrice: +(process.env.GAS_PRICE || ''), + gas: +(process.env.GAS || ''), + ssvToken: '0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54', + } as SSVNetworkConfig, + }; +} + +export default config; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..a31de820 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25909 @@ +{ + "name": "ssv-network", + "version": "1.0.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ssv-network", + "version": "1.0.2", + "license": "MIT", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^2.0.0", + "@nomiclabs/hardhat-ethers": "^2.2.3", + "@nomiclabs/hardhat-solhint": "^2.0.0", + "@openzeppelin/contracts": "^4.8.0", + "@openzeppelin/contracts-upgradeable": "^4.8.0", + "@openzeppelin/hardhat-upgrades": "^1.24.0", + "@types/chai": "^4.3.0", + "@types/chai-as-promised": "^7.1.5", + "@types/cli-table": "^0.3.0", + "@types/mocha": "^9.1.0", + "@types/node": "^17.0.23", + "@typescript-eslint/eslint-plugin": "^5.36.0", + "chai-as-promised": "^7.1.1", + "cli-table": "^0.3.11", + "dotenv": "^16.0.0", + "eslint": "^8.23.0", + "gh-pages": "^3.2.3", + "hardhat": "^2.14.0", + "hardhat-abi-exporter": "^2.10.1", + "hardhat-contract-sizer": "^2.6.1", + "hardhat-storage-layout-changes": "^0.1.2", + "hardhat-tracer": "^1.2.1", + "prompts": "^2.4.2", + "simple-git": "^3.16.1", + "ssv-keys": "github:bloxapp/ssv-keys#v1.0.4", + "ts-node": "^10.7.0", + "typescript": "^4.6.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", + "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", + "dev": true, + "dependencies": { + "@aws-crypto/util": "^1.2.2", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-1.2.2.tgz", + "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.465.0.tgz", + "integrity": "sha512-Clqu2eD50OOzwSftGpzJrIOGev/7VJhJpc02SeS4cqFgI9EVd+rnFKS/Ux0kcwjLQBMiPcCLtql3KAHApFHAIA==", + "dev": true, + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "peer": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-ethash": "3.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.2", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "dev": true, + "dependencies": { + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", + "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.0", + "chai": "^4.2.0", + "ethers": "^5.0.0", + "hardhat": "^2.9.4" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.9.tgz", + "integrity": "sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==", + "dev": true, + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", + "integrity": "sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg==", + "dev": true, + "peerDependencies": { + "@ethersproject/abi": "^5.4.7", + "@ethersproject/providers": "^5.4.7", + "@nomicfoundation/hardhat-chai-matchers": "^1.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^3.0.0", + "@typechain/ethers-v5": "^10.1.0", + "@typechain/hardhat": "^6.1.2", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=12.0.0", + "chai": "^4.2.0", + "ethers": "^5.4.7", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.1.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomiclabs/hardhat-ethers": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", + "dev": true, + "peerDependencies": { + "ethers": "^5.0.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", + "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-solhint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.1.tgz", + "integrity": "sha512-SrTLufY21t78KLpJL5fS6gHIsCwVv0yWsHp1aQOPL1qwRWpe0Mnh5wb2YzBHd3Dbr/KzUYys+j2ui0PsSVU9pg==", + "dev": true, + "dependencies": { + "solhint": "^2.0.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/@openzeppelin/contracts": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==", + "dev": true + }, + "node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz", + "integrity": "sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A==", + "dev": true + }, + "node_modules/@openzeppelin/defender-base-client": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.52.0.tgz", + "integrity": "sha512-VFNu/pjVpAnFKIfuKT1cn9dRpbcO8FO8EAmVZ2XrrAsKXEWDZ3TNBtACxmj7fAu0ad/TzRkb66o5rMts7Fv7jw==", + "dev": true, + "dependencies": { + "amazon-cognito-identity-js": "^6.0.1", + "async-retry": "^1.3.3", + "axios": "^1.4.0", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + } + }, + "node_modules/@openzeppelin/hardhat-upgrades": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.28.0.tgz", + "integrity": "sha512-7sb/Jf+X+uIufOBnmHR0FJVWuxEs2lpxjJnLNN6eCJCP8nD0v+Ot5lTOW2Qb/GFnh+fLvJtEkhkowz4ZQ57+zQ==", + "dev": true, + "dependencies": { + "@openzeppelin/defender-base-client": "^1.46.0", + "@openzeppelin/platform-deploy-client": "^0.8.0", + "@openzeppelin/upgrades-core": "^1.27.0", + "chalk": "^4.1.0", + "debug": "^4.1.1", + "proper-lockfile": "^4.1.1" + }, + "bin": { + "migrate-oz-cli-project": "dist/scripts/migrate-oz-cli-project.js" + }, + "peerDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^3.1.0", + "ethers": "^5.0.5", + "hardhat": "^2.0.2" + }, + "peerDependenciesMeta": { + "@nomiclabs/harhdat-etherscan": { + "optional": true + } + } + }, + "node_modules/@openzeppelin/platform-deploy-client": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz", + "integrity": "sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA==", + "deprecated": "@openzeppelin/platform-deploy-client is deprecated. Please use @openzeppelin/defender-sdk-deploy-client", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.6.3", + "@openzeppelin/defender-base-client": "^1.46.0", + "axios": "^0.21.2", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + } + }, + "node_modules/@openzeppelin/platform-deploy-client/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@openzeppelin/upgrades-core": { + "version": "1.31.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.31.3.tgz", + "integrity": "sha512-i7q0IuItKS4uO0clJwm4CARmt98aA9dLfKh38HFRbX+aFLGXwF0sOvB2iwr6f87ShH7d3DNuLrVgnnXUrYb7CA==", + "dev": true, + "dependencies": { + "cbor": "^9.0.0", + "chalk": "^4.1.0", + "compare-versions": "^6.0.0", + "debug": "^4.1.1", + "ethereumjs-util": "^7.0.3", + "minimist": "^1.2.7", + "proper-lockfile": "^4.1.1", + "solidity-ast": "^0.4.51" + }, + "bin": { + "openzeppelin-upgrades-core": "dist/cli/cli.js" + } + }, + "node_modules/@openzeppelin/upgrades-core/node_modules/cbor": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.1.tgz", + "integrity": "sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==", + "dev": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@scure/base": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", + "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", + "dev": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@smithy/types": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.6.0.tgz", + "integrity": "sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==", + "dev": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "ethers": "^5.1.3", + "typechain": "^8.1.1", + "typescript": ">=4.3.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", + "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", + "dev": true, + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.4.7", + "@ethersproject/providers": "^5.4.7", + "@typechain/ethers-v5": "^10.2.1", + "ethers": "^5.4.7", + "hardhat": "^2.9.9", + "typechain": "^8.1.1" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typechain/hardhat/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@typechain/hardhat/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/cli-table": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.4.tgz", + "integrity": "sha512-GsALrTL69mlwbAw/MHF1IPTadSLZQnsxe7a80G8l4inN/iEXCOcVeT/S7aRc6hbhqzL9qZ314kHPDQnQ3ev+HA==", + "dev": true + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/figlet": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.5.8.tgz", + "integrity": "sha512-G22AUvy4Tl95XLE7jmUM8s8mKcoz+Hr+Xm9W90gJsppJq9f9tHvOGkrpn4gRX0q/cLtBdNkWtWCKDg2UDZoZvQ==", + "dev": true + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "peer": true + }, + "node_modules/@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "dev": true, + "peer": true + }, + "node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/underscore": { + "version": "1.11.15", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.15.tgz", + "integrity": "sha512-HP38xE+GuWGlbSRq9WrZkousaQ7dragtZCruBVMi0oX1migFZavZ3OROKHSkNp/9ouq82zrWtZpg18jFnVN96g==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "peer": true + }, + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/abstract-level/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amazon-cognito-identity-js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", + "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-js": "1.2.2", + "buffer": "4.9.2", + "fast-base64-decode": "^1.0.0", + "isomorphic-unfetch": "^3.0.0", + "js-cookie": "^2.2.1" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", + "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", + "dev": true + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", + "integrity": "sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "peer": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bls-eth-wasm": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bls-eth-wasm/-/bls-eth-wasm-1.1.1.tgz", + "integrity": "sha512-yaoOHCgjICZc2qTpYCvIkJ6L4N2MXBNmdhIpTZGmKZOUc3mmU941EV95qMK02apyYRSKuCydPuCN3fK4o24C1g==", + "dev": true + }, + "node_modules/bls-signatures": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/bls-signatures/-/bls-signatures-0.2.5.tgz", + "integrity": "sha512-5TzQNCtR4zWE4lM08EOMIT8l3b4h8g5LNKu50fUYP1PnupaLGSLklAcTto4lnH7VXpyhsar+74L9wNJII4E/4Q==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true, + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/case": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/cids/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/cids/node_modules/multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "node_modules/class-validator": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", + "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "dev": true, + "dependencies": { + "libphonenumber-js": "^1.9.43", + "validator": "^13.7.0" + } + }, + "node_modules/classic-level": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", + "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dev": true, + "dependencies": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/cosmiconfig/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "dev": true + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delete-empty": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz", + "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.0", + "minimist": "^1.2.0", + "path-starts-with": "^2.0.0", + "rimraf": "^2.6.2" + }, + "bin": { + "delete-empty": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/delete-empty/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "peer": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "node_modules/emitter-component": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz", + "integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "peer": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dev": true, + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "node_modules/eth-ens-namehash/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-gas-reporter/node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "peer": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/eth-gas-reporter/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/eth-gas-reporter/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-gas-reporter/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-gas-reporter/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/eth-lib/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/eth-lib/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/eth-lib/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/eth2-keystore-js": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/eth2-keystore-js/-/eth2-keystore-js-1.0.8.tgz", + "integrity": "sha512-H5JLUeo7aiZs7zVAb+9gSJZZxfcx5na8zPxcgFbggNfac+atyO5H6KpvDUPJFRm/umHWM7++MdvS/q5Sbw+f9g==", + "dev": true, + "dependencies": { + "@types/node": "^15.12.2", + "crypto": "^1.0.1", + "ethereumjs-util": "^7.0.10", + "ethereumjs-wallet": "^1.0.1", + "husky": "^6.0.0", + "scrypt-js": "^3.0.1", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^4.3.2" + } + }, + "node_modules/eth2-keystore-js/node_modules/@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==", + "dev": true + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethereumjs-wallet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", + "dev": true, + "dependencies": { + "aes-js": "^3.1.2", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", + "scrypt-js": "^3.0.1", + "utf8": "^3.0.0", + "uuid": "^8.3.2" + } + }, + "node_modules/ethereumjs-wallet/node_modules/aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "dev": true + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figlet": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==", + "dev": true, + "bin": { + "figlet": "bin/index.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "peer": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-random-values": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-random-values/-/get-random-values-1.2.2.tgz", + "integrity": "sha512-lMyPjQyl0cNNdDf2oR+IQ/fM3itDvpoHy45Ymo2r0L1EjazeSl13SfbKZs7KtZ/3MDCeueiaJiuOEfKqRTsSgA==", + "dev": true, + "dependencies": { + "global": "^4.4.0" + }, + "engines": { + "node": "10 || 12 || >=14" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gh-pages": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gh-pages/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gh-pages/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/ghost-testrpc/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ghost-testrpc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ghost-testrpc/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "peer": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "peer": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hardhat": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.1.tgz", + "integrity": "sha512-bsWa63g1GB78ZyMN08WLhFElLPA+J+pShuKD1BFO2+88g3l+BL3R07vj9deIi9dMbssxgE714Gof1dBEDGqnCw==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-abi-exporter": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz", + "integrity": "sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "delete-empty": "^3.0.0" + }, + "engines": { + "node": ">=14.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-contract-sizer": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz", + "integrity": "sha512-QiinUgBD5MqJZJh1hl1jc9dNnpJg7eE/w4/4GEnrcmZJJTDbVFNe3+/3Ep24XqISSkYxRz36czcPHKHd/a0dwA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.0", + "strip-ansi": "^6.0.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "dev": true, + "peer": true, + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/hardhat-storage-layout-changes": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/hardhat-storage-layout-changes/-/hardhat-storage-layout-changes-0.1.2.tgz", + "integrity": "sha512-fWX2jykXoRha6vCDD21NkbrrjKJ8U9juCodf8PTMEDjTjpb+rfUzgZdFOVHpo9DHQTnobMGY5HlrmtEdwgFlTw==", + "dev": true, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-tracer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.3.0.tgz", + "integrity": "sha512-mUYuRJWlxCwY4R2urCpNM4ecVSq/iMLiVP9YZKlfXyv4R8T+4HAcTfumilUOXHGe6wHI+8Ki2EaTon3KgzATDA==", + "dev": true, + "dependencies": { + "ethers": "^5.6.1" + }, + "peerDependencies": { + "chalk": "4.x", + "ethers": "5.x", + "hardhat": "2.x" + } + }, + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/hardhat/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/hardhat/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/hardhat/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/hardhat/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/hardhat/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "peer": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "peer": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "peer": true + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/husky": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "dependencies": { + "punycode": "2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/idna-uts46-hx/node_modules/punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "peer": true + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/inquirer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/js-base64": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", + "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==", + "dev": true + }, + "node_modules/js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jsencrypt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.2.1.tgz", + "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" + } + }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.10.51", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.51.tgz", + "integrity": "sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "peer": true + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "peer": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", + "dev": true, + "dependencies": { + "mkdirp": "*" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mock-fs": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", + "dev": true + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/multibase/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "varint": "^5.0.0" + } + }, + "node_modules/multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + } + }, + "node_modules/multihashes/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-jsencrypt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-jsencrypt/-/node-jsencrypt-1.0.0.tgz", + "integrity": "sha512-ANQ/XkOVS02R89MtfoelFxarMsLA12nlOT802VS4LVhl+JRSRZIvkLIjvKYZmIar+mENUkR9mBKUdcdiPy/7lA==", + "dev": true, + "dependencies": { + "get-random-values": "^1.2.0" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "dev": true, + "dependencies": { + "http-https": "^1.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "peer": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "dev": true + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-starts-with": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz", + "integrity": "sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "git+ssh://git@github.com/meshin-blox/prompts.git#a22bdac044f6b32ba67adb4eacc2e58322512a2d", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "peer": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "peer": true + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "peer": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sc-istanbul/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dev": true, + "dependencies": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "peer": true, + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-git": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.21.0.tgz", + "integrity": "sha512-oTzw9248AF5bDTMk9MrxsRzEzivMlY+DWH0yWS4VYpMhNLhDWnN06pCtaUyPnqv/FpsdeNmRqmZugMABHRPdDA==", + "dev": true, + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-2.3.1.tgz", + "integrity": "sha512-wP/G+Dqj8LNWlCI9Mt6XiQRWQfZwv1rkZe/V+HKtip5SAZJVvp144PdH28KE45ZvR99Hhrp/Mujt74fSmXsFiw==", + "dev": true, + "dependencies": { + "ajv": "^6.6.1", + "antlr4": "4.7.1", + "chalk": "^2.4.2", + "commander": "2.18.0", + "cosmiconfig": "^5.0.7", + "eslint": "^5.6.0", + "fast-diff": "^1.1.2", + "glob": "^7.1.3", + "ignore": "^4.0.6", + "js-yaml": "^3.12.0", + "lodash": "^4.17.11", + "semver": "^6.3.0" + }, + "bin": { + "solhint": "solhint.js" + }, + "optionalDependencies": { + "prettier": "^1.14.3" + } + }, + "node_modules/solhint/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/solhint/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/solhint/node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/solhint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/solhint/node_modules/commander": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "dev": true + }, + "node_modules/solhint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/solhint/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/solhint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solhint/node_modules/eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/solhint/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/solhint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/eslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint/node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/solhint/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/solhint/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/solhint/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/solhint/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/solhint/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/solhint/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/solhint/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/solhint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/solhint/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/solidity-ast": { + "version": "0.4.55", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", + "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", + "dev": true, + "dependencies": { + "array.prototype.findlast": "^1.2.2" + } + }, + "node_modules/solidity-coverage": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.16.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/solidity-coverage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/solidity-coverage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "node_modules/solidity-coverage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/solidity-coverage/node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/solidity-coverage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/solidity-coverage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true + }, + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/ssv-keys": { + "version": "1.0.4", + "resolved": "git+ssh://git@github.com/bloxapp/ssv-keys.git#cc9e5cdd4696a0e855fc4642c2868abd62d5141a", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/figlet": "^1.5.4", + "@types/underscore": "^1.11.4", + "@types/yargs": "^17.0.12", + "argparse": "^2.0.1", + "assert": "^2.0.0", + "atob": "^2.1.2", + "bls-eth-wasm": "^1.0.4", + "bls-signatures": "^0.2.5", + "btoa": "^1.2.1", + "class-validator": "^0.13.2", + "colors": "^1.4.0", + "crypto": "^1.0.1", + "eth2-keystore-js": "^1.0.8", + "ethereumjs-util": "^7.1.5", + "ethereumjs-wallet": "^1.0.1", + "ethers": "^5.7.2", + "events": "^3.3.0", + "figlet": "^1.5.2", + "js-base64": "^3.7.2", + "jsencrypt": "3.2.1", + "minimist": "^1.2.6", + "moment": "^2.29.3", + "node-jsencrypt": "^1.0.0", + "prompts": "https://github.com/meshin-blox/prompts.git", + "scrypt-js": "^3.0.1", + "semver": "^7.5.1", + "stream": "^0.0.2", + "underscore": "^1.13.4", + "web3": "1.7.3", + "yargs": "^17.5.1" + }, + "bin": { + "ssv-keys": "dist/tsc/src/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ssv-keys/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ssv-keys/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/ssv-keys/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ssv-keys/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ssv-keys/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/ssv-keys/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ssv-keys/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", + "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", + "dev": true, + "dependencies": { + "emitter-component": "^1.1.1" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "peer": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swarm-js": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^11.8.5", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + } + }, + "node_modules/swarm-js/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/swarm-js/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/swarm-js/node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swarm-js/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/swarm-js/node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/swarm-js/node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/swarm-js/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/swarm-js/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/swarm-js/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/swarm-js/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/swarm-js/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/swarm-js/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/swarm-js/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true, + "bin": { + "tslint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/tslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/tslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/tslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/tslint/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tslint/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "peer": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/undici": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "dev": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", + "dev": true + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/web3": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.3.tgz", + "integrity": "sha512-UgBvQnKIXncGYzsiGacaiHtm0xzQ/JtGqcSO/ddzQHYxnNuwI72j1Pb4gskztLYihizV9qPNQYHMSCiBlStI9A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "web3-bzz": "1.7.3", + "web3-core": "1.7.3", + "web3-eth": "1.7.3", + "web3-eth-personal": "1.7.3", + "web3-net": "1.7.3", + "web3-shh": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-bzz": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.3.tgz", + "integrity": "sha512-y2i2IW0MfSqFc1JBhBSQ59Ts9xE30hhxSmLS13jLKWzie24/An5dnoGarp2rFAy20tevJu1zJVPYrEl14jiL5w==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-bzz/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/web3-core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.3.tgz", + "integrity": "sha512-4RNxueGyevD1XSjdHE57vz/YWRHybpcd3wfQS33fgMyHZBVLFDNwhn+4dX4BeofVlK/9/cmPAokLfBUStZMLdw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-requestmanager": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-helpers": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.3.tgz", + "integrity": "sha512-qS2t6UKLhRV/6C7OFHtMeoHphkcA+CKUr2vfpxy4hubs3+Nj28K9pgiqFuvZiXmtEEwIAE2A28GBOC3RdcSuFg==", + "dev": true, + "dependencies": { + "web3-eth-iban": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-helpers/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-core-helpers/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-method": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.3.tgz", + "integrity": "sha512-SeF8YL/NVFbj/ddwLhJeS0io8y7wXaPYA2AVT0h2C2ESYkpvOtQmyw2Bc3aXxBmBErKcbOJjE2ABOKdUmLSmMA==", + "dev": true, + "dependencies": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "web3-core-helpers": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-method/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-core-method/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-promievent": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.3.tgz", + "integrity": "sha512-+mcfNJLP8h2JqcL/UdMGdRVfTdm+bsoLzAFtLpazE4u9kU7yJUgMMAqnK59fKD3Zpke3DjaUJKwz1TyiGM5wig==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-requestmanager": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.3.tgz", + "integrity": "sha512-bC+jeOjPbagZi2IuL1J5d44f3zfPcgX+GWYUpE9vicNkPUxFBWRG+olhMo7L+BIcD57cTmukDlnz+1xBULAjFg==", + "dev": true, + "dependencies": { + "util": "^0.12.0", + "web3-core-helpers": "1.7.3", + "web3-providers-http": "1.7.3", + "web3-providers-ipc": "1.7.3", + "web3-providers-ws": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-subscriptions": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.3.tgz", + "integrity": "sha512-/i1ZCLW3SDxEs5mu7HW8KL4Vq7x4/fDXY+yf/vPoDljlpvcLEOnI8y9r7om+0kYwvuTlM6DUHHafvW0221TyRQ==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/web3-core/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/web3-core/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-core/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.3.tgz", + "integrity": "sha512-BCIRMPwaMlTCbswXyGT6jj9chCh9RirbDFkPtvqozfQ73HGW7kP78TXXf9+Xdo1GjutQfxi/fQ9yPdxtDJEpDA==", + "dev": true, + "dependencies": { + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-eth-accounts": "1.7.3", + "web3-eth-contract": "1.7.3", + "web3-eth-ens": "1.7.3", + "web3-eth-iban": "1.7.3", + "web3-eth-personal": "1.7.3", + "web3-net": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.3.tgz", + "integrity": "sha512-ZlD8DrJro0ocnbZViZpAoMX44x5aYAb73u2tMq557rMmpiluZNnhcCYF/NnVMy6UIkn7SF/qEA45GXA1ne6Tnw==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "5.0.7", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-abi/node_modules/@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "dev": true, + "dependencies": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "node_modules/web3-eth-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-abi/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.3.tgz", + "integrity": "sha512-aDaWjW1oJeh0LeSGRVyEBiTe/UD2/cMY4dD6pQYa8dOhwgMtNQjxIQ7kacBBXe7ZKhjbIFZDhvXN4mjXZ82R2Q==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.0.10", + "scrypt-js": "^3.0.1", + "uuid": "3.3.2", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/web3-eth-accounts/node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/web3-eth-accounts/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-contract": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.3.tgz", + "integrity": "sha512-7mjkLxCNMWlQrlfM/MmNnlKRHwFk5XrZcbndoMt3KejcqDP6dPHi2PZLutEcw07n/Sk8OMpSamyF3QiGfmyRxw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-contract/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/web3-eth-contract/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-contract/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-ens": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.3.tgz", + "integrity": "sha512-q7+hFGHIc0mBI3LwgRVcLCQmp6GItsWgUtEZ5bjwdjOnJdbjYddm7PO9RDcTDQ6LIr7hqYaY4WTRnDHZ6BEt5Q==", + "dev": true, + "dependencies": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-eth-contract": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-ens/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-ens/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.3.tgz", + "integrity": "sha512-1GPVWgajwhh7g53mmYDD1YxcftQniIixMiRfOqlnA1w0mFGrTbCoPeVaSQ3XtSf+rYehNJIZAUeDBnONVjXXmg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-iban/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-iban/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-personal": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.3.tgz", + "integrity": "sha512-iTLz2OYzEsJj2qGE4iXC1Gw+KZN924fTAl0ESBFs2VmRhvVaM7GFqZz/wx7/XESl3GVxGxlRje3gNK0oGIoYYQ==", + "dev": true, + "dependencies": { + "@types/node": "^12.12.6", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-net": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-personal/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/web3-eth-personal/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth-personal/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-eth/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-net": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.3.tgz", + "integrity": "sha512-zAByK0Qrr71k9XW0Adtn+EOuhS9bt77vhBO6epAeQ2/VKl8rCGLAwrl3GbeEl7kWa8s/su72cjI5OetG7cYR0g==", + "dev": true, + "dependencies": { + "web3-core": "1.7.3", + "web3-core-method": "1.7.3", + "web3-utils": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-net/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3-net/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-http": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.3.tgz", + "integrity": "sha512-TQJfMsDQ5Uq9zGMYlu7azx1L7EvxW+Llks3MaWn3cazzr5tnrDbGh6V17x6LN4t8tFDHWx0rYKr3mDPqyTjOZw==", + "dev": true, + "dependencies": { + "web3-core-helpers": "1.7.3", + "xhr2-cookies": "1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.3.tgz", + "integrity": "sha512-Z4EGdLKzz6I1Bw+VcSyqVN4EJiT2uAro48Am1eRvxUi4vktGoZtge1ixiyfrRIVb6nPe7KnTFl30eQBtMqS0zA==", + "dev": true, + "dependencies": { + "oboe": "2.1.5", + "web3-core-helpers": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.3.tgz", + "integrity": "sha512-PpykGbkkkKtxPgv7U4ny4UhnkqSZDfLgBEvFTXuXLAngbX/qdgfYkhIuz3MiGplfL7Yh93SQw3xDjImXmn2Rgw==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.3", + "websocket": "^1.0.32" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-shh": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.3.tgz", + "integrity": "sha512-bQTSKkyG7GkuULdZInJ0osHjnmkHij9tAySibpev1XjYdjLiQnd0J9YGF4HjvxoG3glNROpuCyTaRLrsLwaZuw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "web3-core": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-net": "1.7.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/web3/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/web3/node_modules/web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dev": true, + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "peer": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dev": true, + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dev": true, + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "dev": true, + "dependencies": { + "cookiejar": "^2.1.1" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "dev": true, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@aws-crypto/sha256-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", + "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", + "dev": true, + "requires": { + "@aws-crypto/util": "^1.2.2", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "@aws-crypto/util": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-1.2.2.tgz", + "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", + "dev": true, + "requires": { + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "@aws-sdk/types": { + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.465.0.tgz", + "integrity": "sha512-Clqu2eD50OOzwSftGpzJrIOGev/7VJhJpc02SeS4cqFgI9EVd+rnFKS/Ux0kcwjLQBMiPcCLtql3KAHApFHAIA==", + "dev": true, + "requires": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "dev": true + }, + "@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "peer": true + }, + "@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "peer": true, + "requires": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + } + } + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "requires": { + "debug": "^4.1.1" + } + }, + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.3.1" + } + }, + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true + }, + "@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nomicfoundation/ethereumjs-block": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" + } + }, + "@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-ethash": "3.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + } + }, + "@nomicfoundation/ethereumjs-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-util": "9.0.2", + "crc-32": "^1.2.0" + } + }, + "@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-evm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "dev": true, + "requires": { + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + } + }, + "@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "dev": true + }, + "@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "@nomicfoundation/ethereumjs-trie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + } + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "dev": true, + "requires": { + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-util": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "dev": true, + "requires": { + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + } + } + }, + "@nomicfoundation/ethereumjs-vm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + } + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", + "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.9.tgz", + "integrity": "sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==", + "dev": true, + "peer": true, + "requires": { + "ethereumjs-util": "^7.1.4" + } + }, + "@nomicfoundation/hardhat-toolbox": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", + "integrity": "sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg==", + "dev": true, + "requires": {} + }, + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "dev": true, + "optional": true + }, + "@nomiclabs/hardhat-ethers": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", + "dev": true, + "requires": {} + }, + "@nomiclabs/hardhat-etherscan": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", + "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@nomiclabs/hardhat-solhint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.1.tgz", + "integrity": "sha512-SrTLufY21t78KLpJL5fS6gHIsCwVv0yWsHp1aQOPL1qwRWpe0Mnh5wb2YzBHd3Dbr/KzUYys+j2ui0PsSVU9pg==", + "dev": true, + "requires": { + "solhint": "^2.0.0" + } + }, + "@openzeppelin/contracts": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==", + "dev": true + }, + "@openzeppelin/contracts-upgradeable": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz", + "integrity": "sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A==", + "dev": true + }, + "@openzeppelin/defender-base-client": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.52.0.tgz", + "integrity": "sha512-VFNu/pjVpAnFKIfuKT1cn9dRpbcO8FO8EAmVZ2XrrAsKXEWDZ3TNBtACxmj7fAu0ad/TzRkb66o5rMts7Fv7jw==", + "dev": true, + "requires": { + "amazon-cognito-identity-js": "^6.0.1", + "async-retry": "^1.3.3", + "axios": "^1.4.0", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + } + }, + "@openzeppelin/hardhat-upgrades": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.28.0.tgz", + "integrity": "sha512-7sb/Jf+X+uIufOBnmHR0FJVWuxEs2lpxjJnLNN6eCJCP8nD0v+Ot5lTOW2Qb/GFnh+fLvJtEkhkowz4ZQ57+zQ==", + "dev": true, + "requires": { + "@openzeppelin/defender-base-client": "^1.46.0", + "@openzeppelin/platform-deploy-client": "^0.8.0", + "@openzeppelin/upgrades-core": "^1.27.0", + "chalk": "^4.1.0", + "debug": "^4.1.1", + "proper-lockfile": "^4.1.1" + } + }, + "@openzeppelin/platform-deploy-client": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz", + "integrity": "sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.6.3", + "@openzeppelin/defender-base-client": "^1.46.0", + "axios": "^0.21.2", + "lodash": "^4.17.19", + "node-fetch": "^2.6.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "@openzeppelin/upgrades-core": { + "version": "1.31.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.31.3.tgz", + "integrity": "sha512-i7q0IuItKS4uO0clJwm4CARmt98aA9dLfKh38HFRbX+aFLGXwF0sOvB2iwr6f87ShH7d3DNuLrVgnnXUrYb7CA==", + "dev": true, + "requires": { + "cbor": "^9.0.0", + "chalk": "^4.1.0", + "compare-versions": "^6.0.0", + "debug": "^4.1.1", + "ethereumjs-util": "^7.0.3", + "minimist": "^1.2.7", + "proper-lockfile": "^4.1.1", + "solidity-ast": "^0.4.51" + }, + "dependencies": { + "cbor": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.1.tgz", + "integrity": "sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==", + "dev": true, + "requires": { + "nofilter": "^3.1.0" + } + } + } + }, + "@scure/base": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", + "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", + "dev": true + }, + "@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@smithy/types": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.6.0.tgz", + "integrity": "sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==", + "dev": true, + "requires": { + "tslib": "^2.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "peer": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", + "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", + "dev": true, + "peer": true, + "requires": { + "fs-extra": "^9.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true + } + } + }, + "@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/cli-table": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.4.tgz", + "integrity": "sha512-GsALrTL69mlwbAw/MHF1IPTadSLZQnsxe7a80G8l4inN/iEXCOcVeT/S7aRc6hbhqzL9qZ314kHPDQnQ3ev+HA==", + "dev": true + }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/figlet": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.5.8.tgz", + "integrity": "sha512-G22AUvy4Tl95XLE7jmUM8s8mKcoz+Hr+Xm9W90gJsppJq9f9tHvOGkrpn4gRX0q/cLtBdNkWtWCKDg2UDZoZvQ==", + "dev": true + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "peer": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "peer": true + }, + "@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, + "@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "dev": true, + "peer": true + }, + "@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dev": true, + "requires": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "@types/underscore": { + "version": "1.11.15", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.15.tgz", + "integrity": "sha512-HP38xE+GuWGlbSRq9WrZkousaQ7dragtZCruBVMi0oX1migFZavZ3OROKHSkNp/9ouq82zrWtZpg18jFnVN96g==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "peer": true + }, + "abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "dev": true + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "peer": true + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amazon-cognito-identity-js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", + "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", + "dev": true, + "requires": { + "@aws-crypto/sha256-js": "1.2.2", + "buffer": "4.9.2", + "fast-base64-decode": "^1.0.0", + "isomorphic-unfetch": "^3.0.0", + "js-cookie": "^2.2.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "optional": true, + "peer": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "antlr4": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", + "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", + "dev": true + }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "peer": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "peer": true + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array.prototype.findlast": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", + "integrity": "sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "peer": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "requires": { + "retry": "0.13.1" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "peer": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true + }, + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "bls-eth-wasm": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bls-eth-wasm/-/bls-eth-wasm-1.1.1.tgz", + "integrity": "sha512-yaoOHCgjICZc2qTpYCvIkJ6L4N2MXBNmdhIpTZGmKZOUc3mmU941EV95qMK02apyYRSKuCydPuCN3fK4o24C1g==", + "dev": true + }, + "bls-signatures": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/bls-signatures/-/bls-signatures-0.2.5.tgz", + "integrity": "sha512-5TzQNCtR4zWE4lM08EOMIT8l3b4h8g5LNKu50fUYP1PnupaLGSLklAcTto4lnH7VXpyhsar+74L9wNJII4E/4Q==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "case": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true + }, + "cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "peer": true, + "requires": { + "nofilter": "^3.1.0" + } + }, + "chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "peer": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "peer": true + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "class-validator": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", + "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "dev": true, + "requires": { + "libphonenumber-js": "^1.9.43", + "validator": "^13.7.0" + } + }, + "classic-level": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", + "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dev": true, + "requires": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "peer": true + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "dev": true + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "peer": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delete-empty": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz", + "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.0", + "minimist": "^1.2.0", + "path-starts-with": "^2.0.0", + "rimraf": "^2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "peer": true, + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "requires": { + "heap": ">= 0.2.0" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "emitter-component": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz", + "integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "peer": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "peer": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "peer": true + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dev": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + } + } + }, + "eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "peer": true, + "requires": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "peer": true + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "peer": true + }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "peer": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "peer": true + }, + "ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "peer": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "peer": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "eth2-keystore-js": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/eth2-keystore-js/-/eth2-keystore-js-1.0.8.tgz", + "integrity": "sha512-H5JLUeo7aiZs7zVAb+9gSJZZxfcx5na8zPxcgFbggNfac+atyO5H6KpvDUPJFRm/umHWM7++MdvS/q5Sbw+f9g==", + "dev": true, + "requires": { + "@types/node": "^15.12.2", + "crypto": "^1.0.1", + "ethereumjs-util": "^7.0.10", + "ethereumjs-wallet": "^1.0.1", + "husky": "^6.0.0", + "scrypt-js": "^3.0.1", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typescript": "^4.3.2" + }, + "dependencies": { + "@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==", + "dev": true + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + } + }, + "ethereumjs-wallet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", + "dev": true, + "requires": { + "aes-js": "^3.1.2", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", + "scrypt-js": "^3.0.1", + "utf8": "^3.0.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "dev": true + } + } + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figlet": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true + }, + "filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^3.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "peer": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "peer": true + }, + "get-random-values": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-random-values/-/get-random-values-1.2.2.tgz", + "integrity": "sha512-lMyPjQyl0cNNdDf2oR+IQ/fM3itDvpoHy45Ymo2r0L1EjazeSl13SfbKZs7KtZ/3MDCeueiaJiuOEfKqRTsSgA==", + "dev": true, + "requires": { + "global": "^4.4.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gh-pages": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "peer": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "peer": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "peer": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hardhat": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.1.tgz", + "integrity": "sha512-bsWa63g1GB78ZyMN08WLhFElLPA+J+pShuKD1BFO2+88g3l+BL3R07vj9deIi9dMbssxgE714Gof1dBEDGqnCw==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "requires": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "hardhat-abi-exporter": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz", + "integrity": "sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.5.0", + "delete-empty": "^3.0.0" + } + }, + "hardhat-contract-sizer": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz", + "integrity": "sha512-QiinUgBD5MqJZJh1hl1jc9dNnpJg7eE/w4/4GEnrcmZJJTDbVFNe3+/3Ep24XqISSkYxRz36czcPHKHd/a0dwA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.0", + "strip-ansi": "^6.0.0" + } + }, + "hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "dev": true, + "peer": true, + "requires": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + } + }, + "hardhat-storage-layout-changes": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/hardhat-storage-layout-changes/-/hardhat-storage-layout-changes-0.1.2.tgz", + "integrity": "sha512-fWX2jykXoRha6vCDD21NkbrrjKJ8U9juCodf8PTMEDjTjpb+rfUzgZdFOVHpo9DHQTnobMGY5HlrmtEdwgFlTw==", + "dev": true, + "requires": {} + }, + "hardhat-tracer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.3.0.tgz", + "integrity": "sha512-mUYuRJWlxCwY4R2urCpNM4ecVSq/iMLiVP9YZKlfXyv4R8T+4HAcTfumilUOXHGe6wHI+8Ki2EaTon3KgzATDA==", + "dev": true, + "requires": { + "ethers": "^5.6.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "peer": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "peer": true, + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "peer": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "husky": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "dev": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "peer": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "peer": true + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "requires": { + "fp-ts": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "js-base64": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", + "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==", + "dev": true + }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "dev": true + }, + "js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsencrypt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.2.1.tgz", + "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "peer": true + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "peer": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "requires": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + } + }, + "level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true + }, + "level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "libphonenumber-js": { + "version": "1.10.51", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.51.tgz", + "integrity": "sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "peer": true, + "requires": { + "get-func-name": "^2.0.1" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "peer": true + }, + "mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "requires": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "peer": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "dev": true, + "requires": { + "mkdirp": "*" + } + }, + "mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "requires": { + "obliterator": "^2.0.0" + } + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "mock-fs": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", + "dev": true + }, + "module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "dev": true, + "requires": { + "varint": "^5.0.0" + } + }, + "multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", + "dev": true + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.21" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "dev": true + }, + "node-jsencrypt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-jsencrypt/-/node-jsencrypt-1.0.0.tgz", + "integrity": "sha512-ANQ/XkOVS02R89MtfoelFxarMsLA12nlOT802VS4LVhl+JRSRZIvkLIjvKYZmIar+mENUkR9mBKUdcdiPy/7lA==", + "dev": true, + "requires": { + "get-random-values": "^1.2.0" + } + }, + "nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "peer": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "dev": true, + "requires": { + "http-https": "^1.0.0" + } + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "peer": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-starts-with": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz", + "integrity": "sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "peer": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "peer": true, + "requires": { + "asap": "~2.0.6" + } + }, + "prompts": { + "version": "git+ssh://git@github.com/meshin-blox/prompts.git#a22bdac044f6b32ba67adb4eacc2e58322512a2d", + "dev": true, + "from": "prompts@^2.4.2", + "requires": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + } + }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "peer": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "peer": true, + "requires": { + "minimatch": "^3.0.5" + } + }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "peer": true + }, + "regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "peer": true, + "requires": { + "req-from": "^2.0.0" + } + }, + "req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "peer": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "peer": true + } + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "requires": { + "bn.js": "^5.2.0" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "peer": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "peer": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "peer": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "peer": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dev": true, + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "peer": true, + "requires": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "peer": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "dev": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-git": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.21.0.tgz", + "integrity": "sha512-oTzw9248AF5bDTMk9MrxsRzEzivMlY+DWH0yWS4VYpMhNLhDWnN06pCtaUyPnqv/FpsdeNmRqmZugMABHRPdDA==", + "dev": true, + "requires": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.4" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "solhint": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-2.3.1.tgz", + "integrity": "sha512-wP/G+Dqj8LNWlCI9Mt6XiQRWQfZwv1rkZe/V+HKtip5SAZJVvp144PdH28KE45ZvR99Hhrp/Mujt74fSmXsFiw==", + "dev": true, + "requires": { + "ajv": "^6.6.1", + "antlr4": "4.7.1", + "chalk": "^2.4.2", + "commander": "2.18.0", + "cosmiconfig": "^5.0.7", + "eslint": "^5.6.0", + "fast-diff": "^1.1.2", + "glob": "^7.1.3", + "ignore": "^4.0.6", + "js-yaml": "^3.12.0", + "lodash": "^4.17.11", + "prettier": "^1.14.3", + "semver": "^6.3.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "solidity-ast": { + "version": "0.4.55", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", + "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", + "dev": true, + "requires": { + "array.prototype.findlast": "^1.2.2" + } + }, + "solidity-coverage": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.16.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "peer": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "peer": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true + } + } + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "ssv-keys": { + "version": "git+ssh://git@github.com/bloxapp/ssv-keys.git#cc9e5cdd4696a0e855fc4642c2868abd62d5141a", + "dev": true, + "from": "ssv-keys@github:bloxapp/ssv-keys#v1.0.4", + "requires": { + "@types/figlet": "^1.5.4", + "@types/underscore": "^1.11.4", + "@types/yargs": "^17.0.12", + "argparse": "^2.0.1", + "assert": "^2.0.0", + "atob": "^2.1.2", + "bls-eth-wasm": "^1.0.4", + "bls-signatures": "^0.2.5", + "btoa": "^1.2.1", + "class-validator": "^0.13.2", + "colors": "^1.4.0", + "crypto": "^1.0.1", + "eth2-keystore-js": "^1.0.8", + "ethereumjs-util": "^7.1.5", + "ethereumjs-wallet": "^1.0.1", + "ethers": "^5.7.2", + "events": "^3.3.0", + "figlet": "^1.5.2", + "js-base64": "^3.7.2", + "jsencrypt": "3.2.1", + "minimist": "^1.2.6", + "moment": "^2.29.3", + "node-jsencrypt": "^1.0.0", + "prompts": "https://github.com/meshin-blox/prompts.git", + "scrypt-js": "^3.0.1", + "semver": "^7.5.1", + "stream": "^0.0.2", + "underscore": "^1.13.4", + "web3": "1.7.3", + "yargs": "^17.5.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", + "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", + "dev": true, + "requires": { + "emitter-component": "^1.1.1" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "swarm-js": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^11.8.5", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + } + } + }, + "sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "peer": true, + "requires": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + } + }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "peer": true, + "requires": { + "get-port": "^3.1.0" + } + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + } + } + }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "peer": true, + "requires": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "peer": true + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + } + }, + "ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "peer": true, + "requires": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "peer": true + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true + } + } + }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "peer": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "peer": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "peer": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "undici": { + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "dev": true, + "requires": { + "@fastify/busboy": "^2.0.0" + } + }, + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true + }, + "varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "web3": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.3.tgz", + "integrity": "sha512-UgBvQnKIXncGYzsiGacaiHtm0xzQ/JtGqcSO/ddzQHYxnNuwI72j1Pb4gskztLYihizV9qPNQYHMSCiBlStI9A==", + "dev": true, + "requires": { + "web3-bzz": "1.7.3", + "web3-core": "1.7.3", + "web3-eth": "1.7.3", + "web3-eth-personal": "1.7.3", + "web3-net": "1.7.3", + "web3-shh": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-bzz": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.3.tgz", + "integrity": "sha512-y2i2IW0MfSqFc1JBhBSQ59Ts9xE30hhxSmLS13jLKWzie24/An5dnoGarp2rFAy20tevJu1zJVPYrEl14jiL5w==", + "dev": true, + "requires": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + } + } + }, + "web3-core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.3.tgz", + "integrity": "sha512-4RNxueGyevD1XSjdHE57vz/YWRHybpcd3wfQS33fgMyHZBVLFDNwhn+4dX4BeofVlK/9/cmPAokLfBUStZMLdw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-requestmanager": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-core-helpers": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.3.tgz", + "integrity": "sha512-qS2t6UKLhRV/6C7OFHtMeoHphkcA+CKUr2vfpxy4hubs3+Nj28K9pgiqFuvZiXmtEEwIAE2A28GBOC3RdcSuFg==", + "dev": true, + "requires": { + "web3-eth-iban": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-core-method": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.3.tgz", + "integrity": "sha512-SeF8YL/NVFbj/ddwLhJeS0io8y7wXaPYA2AVT0h2C2ESYkpvOtQmyw2Bc3aXxBmBErKcbOJjE2ABOKdUmLSmMA==", + "dev": true, + "requires": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "web3-core-helpers": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-core-promievent": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.3.tgz", + "integrity": "sha512-+mcfNJLP8h2JqcL/UdMGdRVfTdm+bsoLzAFtLpazE4u9kU7yJUgMMAqnK59fKD3Zpke3DjaUJKwz1TyiGM5wig==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.3.tgz", + "integrity": "sha512-bC+jeOjPbagZi2IuL1J5d44f3zfPcgX+GWYUpE9vicNkPUxFBWRG+olhMo7L+BIcD57cTmukDlnz+1xBULAjFg==", + "dev": true, + "requires": { + "util": "^0.12.0", + "web3-core-helpers": "1.7.3", + "web3-providers-http": "1.7.3", + "web3-providers-ipc": "1.7.3", + "web3-providers-ws": "1.7.3" + } + }, + "web3-core-subscriptions": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.3.tgz", + "integrity": "sha512-/i1ZCLW3SDxEs5mu7HW8KL4Vq7x4/fDXY+yf/vPoDljlpvcLEOnI8y9r7om+0kYwvuTlM6DUHHafvW0221TyRQ==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.3" + } + }, + "web3-eth": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.3.tgz", + "integrity": "sha512-BCIRMPwaMlTCbswXyGT6jj9chCh9RirbDFkPtvqozfQ73HGW7kP78TXXf9+Xdo1GjutQfxi/fQ9yPdxtDJEpDA==", + "dev": true, + "requires": { + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-eth-accounts": "1.7.3", + "web3-eth-contract": "1.7.3", + "web3-eth-ens": "1.7.3", + "web3-eth-iban": "1.7.3", + "web3-eth-personal": "1.7.3", + "web3-net": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-abi": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.3.tgz", + "integrity": "sha512-ZlD8DrJro0ocnbZViZpAoMX44x5aYAb73u2tMq557rMmpiluZNnhcCYF/NnVMy6UIkn7SF/qEA45GXA1ne6Tnw==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.0.7", + "web3-utils": "1.7.3" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-accounts": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.3.tgz", + "integrity": "sha512-aDaWjW1oJeh0LeSGRVyEBiTe/UD2/cMY4dD6pQYa8dOhwgMtNQjxIQ7kacBBXe7ZKhjbIFZDhvXN4mjXZ82R2Q==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.0.10", + "scrypt-js": "^3.0.1", + "uuid": "3.3.2", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-contract": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.3.tgz", + "integrity": "sha512-7mjkLxCNMWlQrlfM/MmNnlKRHwFk5XrZcbndoMt3KejcqDP6dPHi2PZLutEcw07n/Sk8OMpSamyF3QiGfmyRxw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.5", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-ens": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.3.tgz", + "integrity": "sha512-q7+hFGHIc0mBI3LwgRVcLCQmp6GItsWgUtEZ5bjwdjOnJdbjYddm7PO9RDcTDQ6LIr7hqYaY4WTRnDHZ6BEt5Q==", + "dev": true, + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-promievent": "1.7.3", + "web3-eth-abi": "1.7.3", + "web3-eth-contract": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-iban": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.3.tgz", + "integrity": "sha512-1GPVWgajwhh7g53mmYDD1YxcftQniIixMiRfOqlnA1w0mFGrTbCoPeVaSQ3XtSf+rYehNJIZAUeDBnONVjXXmg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-eth-personal": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.3.tgz", + "integrity": "sha512-iTLz2OYzEsJj2qGE4iXC1Gw+KZN924fTAl0ESBFs2VmRhvVaM7GFqZz/wx7/XESl3GVxGxlRje3gNK0oGIoYYQ==", + "dev": true, + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.7.3", + "web3-core-helpers": "1.7.3", + "web3-core-method": "1.7.3", + "web3-net": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-net": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.3.tgz", + "integrity": "sha512-zAByK0Qrr71k9XW0Adtn+EOuhS9bt77vhBO6epAeQ2/VKl8rCGLAwrl3GbeEl7kWa8s/su72cjI5OetG7cYR0g==", + "dev": true, + "requires": { + "web3-core": "1.7.3", + "web3-core-method": "1.7.3", + "web3-utils": "1.7.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "web3-utils": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz", + "integrity": "sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "web3-providers-http": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.3.tgz", + "integrity": "sha512-TQJfMsDQ5Uq9zGMYlu7azx1L7EvxW+Llks3MaWn3cazzr5tnrDbGh6V17x6LN4t8tFDHWx0rYKr3mDPqyTjOZw==", + "dev": true, + "requires": { + "web3-core-helpers": "1.7.3", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.3.tgz", + "integrity": "sha512-Z4EGdLKzz6I1Bw+VcSyqVN4EJiT2uAro48Am1eRvxUi4vktGoZtge1ixiyfrRIVb6nPe7KnTFl30eQBtMqS0zA==", + "dev": true, + "requires": { + "oboe": "2.1.5", + "web3-core-helpers": "1.7.3" + } + }, + "web3-providers-ws": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.3.tgz", + "integrity": "sha512-PpykGbkkkKtxPgv7U4ny4UhnkqSZDfLgBEvFTXuXLAngbX/qdgfYkhIuz3MiGplfL7Yh93SQw3xDjImXmn2Rgw==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.3", + "websocket": "^1.0.32" + } + }, + "web3-shh": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.3.tgz", + "integrity": "sha512-bQTSKkyG7GkuULdZInJ0osHjnmkHij9tAySibpev1XjYdjLiQnd0J9YGF4HjvxoG3glNROpuCyTaRLrsLwaZuw==", + "dev": true, + "requires": { + "web3-core": "1.7.3", + "web3-core-method": "1.7.3", + "web3-core-subscriptions": "1.7.3", + "web3-net": "1.7.3" + } + }, + "web3-utils": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", + "dev": true, + "peer": true, + "requires": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + } + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dev": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "peer": true + }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "peer": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } + } + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "requires": {} + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dev": true, + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dev": true, + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "dev": true, + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json index f4f73491..dbc0163d 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,7 @@ "lint:fix": "eslint --fix . --ext .ts", "solidity-coverage": "NO_GAS_ENFORCE=1 npx hardhat coverage", "slither": "slither contracts --solc-remaps @openzeppelin=node_modules/@openzeppelin", - "size-contracts": "npx hardhat size-contracts", - "install-echidna": "brew install echidna", - "echidna": "node .echidna.test.js" + "size-contracts": "npx hardhat size-contracts" }, "devDependencies": { "@nomicfoundation/hardhat-toolbox": "^2.0.0", diff --git a/slither.config.json b/slither.config.json deleted file mode 100644 index bd60c819..00000000 --- a/slither.config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "filter_paths": "(task/|test/|@openzeppelin/)", - "solc_remaps": "@=node_modules/@" -} \ No newline at end of file diff --git a/test/account/withdraw.ts b/test/account/withdraw.ts new file mode 100644 index 00000000..30ab62ca --- /dev/null +++ b/test/account/withdraw.ts @@ -0,0 +1,215 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +// Declare globals +let ssvNetworkContract: any, ssvViews: any, ssvToken: any, cluster1: any, minDepositAmount: any; + +describe('Withdraw Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; + ssvToken = metadata.ssvToken; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // cold register + await helpers.coldRegisterValidator(); + + // Register validators + const cluster = await helpers.registerValidators( + 4, + minDepositAmount, + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + cluster1 = cluster.args; + }); + + it('Withdraw from cluster emits "ClusterWithdrawn"', async () => { + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, helpers.CONFIG.minimalOperatorFee, cluster1.cluster), + ).to.emit(ssvNetworkContract, 'ClusterWithdrawn'); + }); + + it('Withdraw from cluster gas limits', async () => { + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, helpers.CONFIG.minimalOperatorFee, cluster1.cluster), + [GasGroup.WITHDRAW_CLUSTER_BALANCE], + ); + }); + + it('Withdraw from operator balance emits "OperatorWithdrawn"', async () => { + await expect( + ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee), + ).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); + }); + + it('Withdraw from operator balance gas limits', async () => { + await trackGas( + ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee), + [GasGroup.WITHDRAW_OPERATOR_BALANCE], + ); + }); + + it('Withdraw the total operator balance emits "OperatorWithdrawn"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawAllOperatorEarnings(1)).to.emit( + ssvNetworkContract, + 'OperatorWithdrawn', + ); + }); + + it('Withdraw the total operator balance gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawAllOperatorEarnings(1), [ + GasGroup.WITHDRAW_OPERATOR_BALANCE, + ]); + }); + + it('Withdraw from a cluster that has a removed operator emits "ClusterWithdrawn"', async () => { + await ssvNetworkContract.removeOperator(1); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, helpers.CONFIG.minimalOperatorFee, cluster1.cluster), + ).to.emit(ssvNetworkContract, 'ClusterWithdrawn'); + }); + + it('Withdraw more than the cluster balance reverts "InsufficientBalance"', async () => { + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, minDepositAmount, cluster1.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Sequentially withdraw more than the cluster balance reverts "InsufficientBalance"', async () => { + const burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4; + + cluster1 = await helpers.deposit( + 1, + cluster1.owner, + cluster1.operatorIds, + (minDepositAmount * 2).toString(), + cluster1.cluster, + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster), + ).to.be.equals(minDepositAmount * 3 - burnPerBlock * 2); + + cluster1 = await helpers.withdraw(4, cluster1.operatorIds, minDepositAmount, cluster1.cluster); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster), + ).to.be.equals(minDepositAmount * 2 - burnPerBlock * 3); + + cluster1 = await helpers.withdraw(4, cluster1.operatorIds, minDepositAmount, cluster1.cluster); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.operatorIds, cluster1.cluster), + ).to.be.equals(minDepositAmount - burnPerBlock * 4); + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, minDepositAmount, cluster1.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw from a liquidatable cluster reverts "InsufficientBalance" (liquidation threshold)', async () => { + await utils.progressBlocks(20); + await expect( + ssvNetworkContract.connect(helpers.DB.owners[4]).withdraw(cluster1.operatorIds, 4000000000, cluster1.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw from a liquidatable cluster reverts "InsufficientBalance" (liquidation collateral)', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation - 10); + await expect( + ssvNetworkContract.connect(helpers.DB.owners[4]).withdraw(cluster1.operatorIds, 7500000000, cluster1.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw from a liquidatable cluster after liquidation period reverts "InsufficientBalance"', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation + 10); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, helpers.CONFIG.minimalOperatorFee, cluster1.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw balance from an operator I do not own reverts "CallerNotOwner"', async () => { + await expect( + ssvNetworkContract.connect(helpers.DB.owners[2]).withdrawOperatorEarnings(1, minDepositAmount), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); + }); + + it('Withdraw more than the operator balance reverts "InsufficientBalance"', async () => { + await expect( + ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(1, minDepositAmount), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Sequentially withdraw more than the operator balance reverts "InsufficientBalance"', async () => { + await ssvNetworkContract + .connect(helpers.DB.owners[0]) + .withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.be.equals( + helpers.CONFIG.minimalOperatorFee * 4 - helpers.CONFIG.minimalOperatorFee * 3, + ); + + await ssvNetworkContract + .connect(helpers.DB.owners[0]) + .withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3); + expect(await ssvViews.getOperatorEarnings(1)).to.be.equals( + helpers.CONFIG.minimalOperatorFee * 6 - helpers.CONFIG.minimalOperatorFee * 6, + ); + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[0]) + .withdrawOperatorEarnings(1, helpers.CONFIG.minimalOperatorFee * 3), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw the total balance from an operator I do not own reverts "CallerNotOwner"', async () => { + await expect( + ssvNetworkContract.connect(helpers.DB.owners[2]).withdrawAllOperatorEarnings(12), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotOwner'); + }); + + it('Withdraw more than the operator total balance reverts "InsufficientBalance"', async () => { + await expect( + ssvNetworkContract.connect(helpers.DB.owners[0]).withdrawOperatorEarnings(13, minDepositAmount), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Withdraw from a cluster without validators', async () => { + cluster1 = await helpers.removeValidator( + 4, + helpers.DataGenerator.publicKey(1), + cluster1.operatorIds, + cluster1.cluster, + ); + const currentClusterBalance = minDepositAmount - helpers.CONFIG.minimalOperatorFee * 4; + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster1.operatorIds, currentClusterBalance, cluster1.cluster), + ).to.emit(ssvNetworkContract, 'ClusterWithdrawn'); + }); +}); diff --git a/test/dao/network-fee-withdraw.ts b/test/dao/network-fee-withdraw.ts new file mode 100644 index 00000000..5355d356 --- /dev/null +++ b/test/dao/network-fee-withdraw.ts @@ -0,0 +1,100 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +// Declare globals +let ssvNetworkContract: any, ssvViews: any, minDepositAmount: any, burnPerBlock: any, networkFee: any; + +describe('DAO Network Fee Withdraw Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; + + // Define minumum allowed network fee to pass shrinkable validation + networkFee = helpers.CONFIG.minimalOperatorFee; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; + + // Set network fee + await ssvNetworkContract.updateNetworkFee(networkFee); + + // Register validators + // cold register + await helpers.coldRegisterValidator(); + + await helpers.registerValidators( + 4, + minDepositAmount, + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + await utils.progressBlocks(10); + }); + + it('Withdraw network earnings emits "NetworkEarningsWithdrawn"', async () => { + const amount = await ssvViews.getNetworkEarnings(); + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount)) + .to.emit(ssvNetworkContract, 'NetworkEarningsWithdrawn') + .withArgs(amount, helpers.DB.owners[0].address); + }); + + it('Withdraw network earnings gas limits', async () => { + const amount = await ssvViews.getNetworkEarnings(); + await trackGas(ssvNetworkContract.withdrawNetworkEarnings(amount), [GasGroup.WITHDRAW_NETWORK_EARNINGS]); + }); + + it('Get withdrawable network earnings', async () => { + expect(await ssvViews.getNetworkEarnings()).to.above(0); + }); + + it('Get withdrawable network earnings as not owner', async () => { + await ssvViews.connect(helpers.DB.owners[3]).getNetworkEarnings(); + }); + + it('Withdraw network earnings with not enough balance reverts "InsufficientBalance"', async () => { + const amount = (await ssvViews.getNetworkEarnings()) * 2; + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'InsufficientBalance', + ); + }); + + it('Withdraw network earnings from an address thats not the DAO reverts "caller is not the owner"', async () => { + const amount = await ssvViews.getNetworkEarnings(); + await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).withdrawNetworkEarnings(amount)).to.be.revertedWith( + 'Ownable: caller is not the owner', + ); + }); + + it('Withdraw network earnings providing UINT64 max value reverts "Max value exceeded"', async () => { + const amount = ethers.BigNumber.from(2) + .pow(64) + .mul(ethers.BigNumber.from(1e8)); + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount)).to.be.revertedWith('Max value exceeded'); + }); + + it('Withdraw network earnings sequentially when not enough balance reverts "InsufficientBalance"', async () => { + const amount = (await ssvViews.getNetworkEarnings()) / 2; + + await ssvNetworkContract.withdrawNetworkEarnings(amount); + expect(await ssvViews.getNetworkEarnings()).to.be.equals(networkFee * 13 + networkFee * 11 - amount); + + await ssvNetworkContract.withdrawNetworkEarnings(amount); + expect(await ssvViews.getNetworkEarnings()).to.be.equals(networkFee * 14 + networkFee * 12 - amount * 2); + + await expect(ssvNetworkContract.withdrawNetworkEarnings(amount)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'InsufficientBalance', + ); + }); +}); diff --git a/test/dao/operational.ts b/test/dao/operational.ts new file mode 100644 index 00000000..b8b28785 --- /dev/null +++ b/test/dao/operational.ts @@ -0,0 +1,77 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import { trackGas } from '../helpers/gas-usage'; +import { progressBlocks } from '../helpers/utils'; + +import { expect } from 'chai'; + +let ssvNetworkContract: any, ssvNetworkViews: any, firstCluster: any; + +// Declare globals +describe('DAO operational Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvNetworkViews = metadata.ssvViews; + }); + + it('Starting the transfer process does not change owner', async () => { + await ssvNetworkContract.transferOwnership(helpers.DB.owners[4].address); + + expect(await ssvNetworkContract.owner()).equals(helpers.DB.owners[0].address); + }); + + it('Ownership is transferred in a 2-step process', async () => { + await ssvNetworkContract.transferOwnership(helpers.DB.owners[4].address); + await ssvNetworkContract.connect(helpers.DB.owners[4]).acceptOwnership(); + + expect(await ssvNetworkContract.owner()).equals(helpers.DB.owners[4].address); + }); + + it('Get the network validators count (add/remove validaotor)', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + + const deposit = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; + + const cluster = await helpers.registerValidators( + 4, + deposit.toString(), + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + firstCluster = cluster.args; + + expect(await ssvNetworkViews.getNetworkValidatorsCount()).to.equal(1); + + await ssvNetworkContract + .connect(helpers.DB.owners[4]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster); + expect(await ssvNetworkViews.getNetworkValidatorsCount()).to.equal(0); + }); + + it('Get the network validators count (add/remove validaotor)', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + + const deposit = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; + firstCluster = await helpers.registerValidators( + 4, + deposit.toString(), + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + expect(await ssvNetworkViews.getNetworkValidatorsCount()).to.equal(1); + + await progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + + await ssvNetworkContract + .connect(helpers.DB.owners[4]) + .liquidate(firstCluster.args.owner, firstCluster.args.operatorIds, firstCluster.args.cluster); + + expect(await ssvNetworkViews.getNetworkValidatorsCount()).to.equal(0); + }); +}); diff --git a/test/deployment/deploy.ts b/test/deployment/deploy.ts new file mode 100644 index 00000000..fb83d23a --- /dev/null +++ b/test/deployment/deploy.ts @@ -0,0 +1,157 @@ +// Imports +import { CONFIG, DB, initializeContract, DataGenerator } from '../helpers/contract-helpers'; +import { trackGas } from '../helpers/gas-usage'; +import { ethers, upgrades } from 'hardhat'; +import { expect } from 'chai'; + +describe('Deployment tests', () => { + let ssvNetworkContract: any, ssvNetworkViews: any, ssvToken: any; + + beforeEach(async () => { + const metadata = await initializeContract(); + ssvNetworkContract = metadata.contract; + ssvNetworkViews = metadata.ssvViews; + ssvToken = metadata.ssvToken; + }); + + it('Check default values after deploying', async () => { + expect(await ssvNetworkViews.getNetworkValidatorsCount()).to.equal(0); + expect(await ssvNetworkViews.getNetworkEarnings()).to.equal(0); + expect(await ssvNetworkViews.getOperatorFeeIncreaseLimit()).to.equal(CONFIG.operatorMaxFeeIncrease); + expect(await ssvNetworkViews.getOperatorFeePeriods()).to.deep.equal([ + CONFIG.declareOperatorFeePeriod, + CONFIG.executeOperatorFeePeriod, + ]); + expect(await ssvNetworkViews.getLiquidationThresholdPeriod()).to.equal(CONFIG.minimalBlocksBeforeLiquidation); + expect(await ssvNetworkViews.getMinimumLiquidationCollateral()).to.equal(CONFIG.minimumLiquidationCollateral); + expect(await ssvNetworkViews.getValidatorsPerOperatorLimit()).to.equal(CONFIG.validatorsPerOperatorLimit); + expect(await ssvNetworkViews.getOperatorFeeIncreaseLimit()).to.equal(CONFIG.operatorMaxFeeIncrease); + }); + + it('Upgrade SSVNetwork contract. Check new function execution', async () => { + await ssvNetworkContract + .connect(DB.owners[1]) + .registerOperator(DataGenerator.publicKey(0), CONFIG.minimalOperatorFee); + + const BasicUpgrade = await ethers.getContractFactory('SSVNetworkBasicUpgrade'); + const ssvNetworkUpgrade = await upgrades.upgradeProxy(ssvNetworkContract.address, BasicUpgrade, { + kind: 'uups', + unsafeAllow: ['delegatecall'], + }); + await ssvNetworkUpgrade.deployed(); + + await ssvNetworkUpgrade.resetNetworkFee(10000000); + expect(await ssvNetworkViews.getNetworkFee()).to.equal(10000000); + }); + + it('Upgrade SSVNetwork contract. Deploy implemetation manually', async () => { + const SSVNetwork = await ethers.getContractFactory('SSVNetwork'); + const BasicUpgrade = await ethers.getContractFactory('SSVNetworkBasicUpgrade'); + + // Get current SSVNetwork proxy + const ssvNetwork = SSVNetwork.attach(ssvNetworkContract.address); + + // Deploy a new implementation with another account + const contractImpl = await BasicUpgrade.connect(DB.owners[1]).deploy(); + await contractImpl.deployed(); + + const newNetworkFee = ethers.utils.parseUnits('10000000', 'wei'); + const calldata = contractImpl.interface.encodeFunctionData('resetNetworkFee', [newNetworkFee]); + + // The owner of SSVNetwork contract peforms the upgrade + await ssvNetwork.upgradeToAndCall(contractImpl.address, calldata); + + expect(await ssvNetworkViews.getNetworkFee()).to.equal(10000000); + }); + + it('Upgrade SSVNetwork contract. Check base contract is not re-initialized', async () => { + const BasicUpgrade = await ethers.getContractFactory('SSVNetworkBasicUpgrade'); + const ssvNetworkUpgrade = await upgrades.upgradeProxy(ssvNetworkContract.address, BasicUpgrade, { + kind: 'uups', + unsafeAllow: ['delegatecall'], + }); + await ssvNetworkUpgrade.deployed(); + + const address = await upgrades.erc1967.getImplementationAddress(ssvNetworkUpgrade.address); + const instance = await ssvNetworkUpgrade.attach(address); + + await expect( + instance + .connect(DB.owners[1]) + .initialize( + '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + '0x6471F70b932390f527c6403773D082A0Db8e8A9F', + 2000000, + 2000000, + 2000000, + 2000000, + 2000000, + 2000, + ), + ).to.be.revertedWith('Initializable: contract is already initialized'); + }); + + it('Upgrade SSVNetwork contract. Check state is only changed from proxy contract', async () => { + const BasicUpgrade = await ethers.getContractFactory('SSVNetworkBasicUpgrade'); + const ssvNetworkUpgrade = await upgrades.upgradeProxy(ssvNetworkContract.address, BasicUpgrade, { + kind: 'uups', + unsafeAllow: ['delegatecall'], + }); + await ssvNetworkUpgrade.deployed(); + + const address = await upgrades.erc1967.getImplementationAddress(ssvNetworkUpgrade.address); + const instance = await ssvNetworkUpgrade.attach(address); + + await trackGas(instance.connect(DB.owners[1]).resetNetworkFee(100000000000)); + + expect(await ssvNetworkViews.getNetworkFee()).to.be.equals(0); + }); + + it('Update a module (SSVOperators)', async () => { + const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); + const ssvNetwork = await ssvNetworkFactory.attach(ssvNetworkContract.address); + + const ssvOperatorsFactory = await ethers.getContractFactory('SSVOperatorsUpdate'); + + const operatorsImpl = await ssvOperatorsFactory.connect(DB.owners[1]).deploy(); + await operatorsImpl.deployed(); + + await expect(ssvNetwork.updateModule(0, ethers.constants.AddressZero)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'TargetModuleDoesNotExist', + ); + + await ssvNetwork.updateModule(0, operatorsImpl.address); + + await expect(ssvNetworkContract.declareOperatorFee(0, 0)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'NoFeeDeclared', + ); + }); + + it('ETH can not be transferred to SSVNetwork / SSVNetwork views', async () => { + const amount = ethers.utils.parseUnits('10000000', 'wei'); + + const sender = ethers.provider.getSigner(0); + + await expect( + sender.sendTransaction({ + to: ssvNetworkContract.address, + value: amount, + }), + ).to.be.reverted; + + await expect( + sender.sendTransaction({ + to: ssvNetworkViews.address, + value: amount, + }), + ).to.be.reverted; + + expect(await ethers.provider.getBalance(ssvNetworkContract.address)).to.be.equal(0); + expect(await ethers.provider.getBalance(ssvNetworkViews.address)).to.be.equal(0); + }); +}); diff --git a/test/deployment/version.ts b/test/deployment/version.ts new file mode 100644 index 00000000..8611a20f --- /dev/null +++ b/test/deployment/version.ts @@ -0,0 +1,26 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import { expect } from 'chai'; +import { ethers } from 'hardhat'; +// Declare globals +let ssvNetworkContract: any, ssvNetworkViews: any; + +describe('Version upgrade tests', () => { + beforeEach(async () => { + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvNetworkViews = metadata.ssvViews; + }); + + it('Upgrade contract version number', async () => { + expect(await ssvNetworkViews.getVersion()).to.equal(helpers.CONFIG.initialVersion); + const ssvViews = await ethers.getContractFactory('SSVViewsT'); + const viewsContract = await ssvViews.deploy(); + await viewsContract.deployed(); + + await ssvNetworkContract.updateModule(helpers.SSV_MODULES.SSV_VIEWS, viewsContract.address) + + expect(await ssvNetworkViews.getVersion()).to.equal("v1.1.0"); + }); + +}); \ No newline at end of file diff --git a/test/helpers/contract-helpers.ts b/test/helpers/contract-helpers.ts new file mode 100644 index 00000000..bf4516a6 --- /dev/null +++ b/test/helpers/contract-helpers.ts @@ -0,0 +1,392 @@ +// Imports +declare const ethers: any; +import { SSVKeys, KeyShares, EncryptShare } from 'ssv-keys'; +import { trackGas, GasGroup } from './gas-usage'; +import { Validator, Operator } from './types'; +import validatorKeys from './json/validatorKeys.json'; +import operatorKeys from './json/operatorKeys.json'; + +export let DB: any; +export let CONFIG: any; +export let SSV_MODULES: any; + +export const DEFAULT_OPERATOR_IDS = { + 4: [1, 2, 3, 4], + 7: [1, 2, 3, 4, 5, 6, 7], + 10: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + 13: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], +}; + +const getSecretSharedPayload = async (validator: Validator, operatorIds: number[], ownerId: number) => { + const selOperators = DB.operators.filter((item: Operator) => operatorIds.includes(item.id)); + const operators = selOperators.map((item: Operator) => ({ id: item.id, operatorKey: item.operatorKey })); + + const ssvKeys = new SSVKeys(); + const keyShares = new KeyShares(); + + const publicKey = validator.publicKey; + const privateKey = validator.privateKey; + + const threshold = await ssvKeys.createThreshold(privateKey, operators); + const encryptedShares: EncryptShare[] = await ssvKeys.encryptShares(operators, threshold.shares); + const payload = await keyShares.buildPayload( + { + publicKey, + operators, + encryptedShares, + }, + { + ownerAddress: DB.owners[ownerId].address, + ownerNonce: DB.ownerNonce, + privateKey, + }, + ); + return payload; +}; + +export const DataGenerator = { + publicKey: (id: number) => { + const validators = DB.validators.filter((item: Validator) => item.id === id); + if (validators.length > 0) { + return validators[0].publicKey; + } + return `0x${id.toString(16).padStart(48, '0')}`; + }, + shares: async (ownerId: number, validatorId: number, operatorCount: number) => { + let shared: any; + const validators = DB.validators.filter((item: Operator) => item.id === validatorId); + if (validators.length > 0) { + const validator = validators[0]; + const operatorIds: number[] = []; + for (let i = 1; i <= operatorCount; i++) { + operatorIds.push(i); + } + const payload = await getSecretSharedPayload(validator, operatorIds, ownerId); + shared = payload.sharesData; + } else { + shared = `0x${validatorId.toString(16).padStart(48, '0')}`; + } + return shared; + }, + cluster: { + new: (size = 4) => { + const usedOperatorIds: any = {}; + for (const clusterId in DB.clusters) { + for (const operatorId of DB.clusters[clusterId].operatorIds) { + usedOperatorIds[operatorId] = true; + } + } + + const result = []; + for (const operator of DB.operators) { + if (operator && !usedOperatorIds[operator.id]) { + result.push(operator.id); + usedOperatorIds[operator.id] = true; + + if (result.length == size) { + break; + } + } + } + if (result.length < size) { + throw new Error('No new clusters. Try to register more operators.'); + } + return result; + }, + byId: (id: any) => DB.clusters[id].operatorIds, + }, +}; + +export const getClusterForValidator = ( + validatorCount: number, + networkFeeIndex: number, + index: number, + balance: number, + active: boolean, +) => { + return { validatorCount, networkFeeIndex, index, balance, active }; +}; + +export const initializeContract = async () => { + CONFIG = { + initialVersion: 'v1.1.0', + operatorMaxFeeIncrease: 1000, + declareOperatorFeePeriod: 3600, // HOUR + executeOperatorFeePeriod: 86400, // DAY + minimalOperatorFee: 100000000, + minimalBlocksBeforeLiquidation: 100800, + minimumLiquidationCollateral: 200000000, + validatorsPerOperatorLimit: 500, + maximumOperatorFee: 76528650000000, + }; + + DB = { + owners: [], + validators: [], + operators: [], + registeredValidators: [], + registeredOperators: [], + clusters: [], + ssvNetwork: {}, + ssvViews: {}, + ssvToken: {}, + ssvOperatorsMod: {}, + ssvClustersMod: {}, + ssvDAOMod: {}, + ssvViewsMod: {}, + ownerNonce: 0, + }; + + SSV_MODULES = { + SSV_OPERATORS: 0, + SSV_CLUSTERS: 1, + SSV_DAO: 2, + SSV_VIEWS: 3, + }; + + // Define accounts + DB.owners = await ethers.getSigners(); + + // Load validators + DB.validators = validatorKeys as Validator[]; + + // Load operators + DB.operators = operatorKeys as Operator[]; + + // Initialize contract + const ssvNetwork = await ethers.getContractFactory('SSVNetwork'); + const ssvViews = await ethers.getContractFactory('SSVNetworkViews'); + + const ssvViewsMod = await ethers.getContractFactory('contracts/modules/SSVViews.sol:SSVViews'); + const ssvToken = await ethers.getContractFactory('SSVToken'); + const ssvOperatorsMod = await ethers.getContractFactory('SSVOperators'); + const ssvClustersMod = await ethers.getContractFactory('SSVClusters'); + const ssvDAOMod = await ethers.getContractFactory('SSVDAO'); + + DB.ssvToken = await ssvToken.deploy(); + await DB.ssvToken.deployed(); + + DB.ssvViewsMod.contract = await ssvViewsMod.deploy(); + await DB.ssvViewsMod.contract.deployed(); + + DB.ssvOperatorsMod.contract = await ssvOperatorsMod.deploy(); + await DB.ssvOperatorsMod.contract.deployed(); + + DB.ssvClustersMod.contract = await ssvClustersMod.deploy(); + await DB.ssvClustersMod.contract.deployed(); + + DB.ssvDAOMod.contract = await ssvDAOMod.deploy(); + await DB.ssvDAOMod.contract.deployed(); + + DB.ssvNetwork.contract = await upgrades.deployProxy( + ssvNetwork, + [ + DB.ssvToken.address, + DB.ssvOperatorsMod.contract.address, + DB.ssvClustersMod.contract.address, + DB.ssvDAOMod.contract.address, + DB.ssvViewsMod.contract.address, + CONFIG.minimalBlocksBeforeLiquidation, + CONFIG.minimumLiquidationCollateral, + CONFIG.validatorsPerOperatorLimit, + CONFIG.declareOperatorFeePeriod, + CONFIG.executeOperatorFeePeriod, + CONFIG.operatorMaxFeeIncrease, + ], + { + kind: 'uups', + unsafeAllow: ['delegatecall'], + }, + ); + + await DB.ssvNetwork.contract.deployed(); + + DB.ssvViews.contract = await upgrades.deployProxy(ssvViews, [DB.ssvNetwork.contract.address], { + kind: 'uups', + }); + await DB.ssvViews.contract.deployed(); + + DB.ssvNetwork.owner = DB.owners[0]; + + await DB.ssvToken.mint(DB.owners[1].address, '10000000000000000000'); + await DB.ssvToken.mint(DB.owners[2].address, '10000000000000000000'); + await DB.ssvToken.mint(DB.owners[3].address, '10000000000000000000'); + await DB.ssvToken.mint(DB.owners[4].address, '10000000000000000000'); + await DB.ssvToken.mint(DB.owners[5].address, '10000000000000000000'); + await DB.ssvToken.mint(DB.owners[6].address, '10000000000000000000'); + + await DB.ssvNetwork.contract.updateMaximumOperatorFee(CONFIG.maximumOperatorFee); + + return { + contract: DB.ssvNetwork.contract, + owner: DB.ssvNetwork.owner, + ssvToken: DB.ssvToken, + ssvViews: DB.ssvViews.contract, + }; +}; + +export const deposit = async ( + ownerId: number, + ownerAddress: string, + operatorIds: number[], + amount: string, + cluster: any, +) => { + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, amount); + const depositedCluster = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).deposit(ownerAddress, operatorIds, amount, cluster), + ); + return depositedCluster.eventsByName.ClusterDeposited[0].args; +}; + +export const liquidate = async (ownerAddress: string, operatorIds: number[], cluster: any) => { + const liquidatedCluster = await trackGas(DB.ssvNetwork.contract.liquidate(ownerAddress, operatorIds, cluster)); + return liquidatedCluster.eventsByName.ClusterLiquidated[0].args; +}; + +export const withdraw = async (ownerId: number, operatorIds: number[], amount: string, cluster: any) => { + const withdrawnCluster = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).withdraw(operatorIds, amount, cluster), + ); + + return withdrawnCluster.eventsByName.ClusterWithdrawn[0].args; +}; + +export const reactivate = async (ownerId: number, operatorIds: number[], amount: string, cluster: any) => { + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, amount); + const reactivatedCluster = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).reactivate(operatorIds, amount, cluster), + ); + return reactivatedCluster.eventsByName.ClusterReactivated[0].args; +}; + +export const registerOperators = async ( + ownerId: number, + numberOfOperators: number, + fee: string, + gasGroups: GasGroup[] = [GasGroup.REGISTER_OPERATOR], +) => { + for (let i = 0; i < numberOfOperators && i < DB.operators.length; i++) { + const operator = DB.operators[i]; + operator.publicKey = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(operator.operatorKey)); + const { eventsByName } = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).registerOperator(operator.publicKey, fee), + gasGroups, + ); + const event = eventsByName.OperatorAdded[0]; + operator.id = event.args[0].toNumber(); + DB.operators[i] = operator; + DB.registeredOperators.push({ id: operator.id, ownerId: ownerId }); + } +}; + +export const registerValidators = async ( + ownerId: number, + amount: string, + validatorIds: number[], + operatorIds: number[], + cluster: any, + gasGroups?: GasGroup[], +) => { + const regValidators: any = []; + let args: any; + + const selValidators = DB.validators.filter((item: Validator) => validatorIds.includes(item.id)); + for (const validator of selValidators) { + const payload = await getSecretSharedPayload(validator, operatorIds, ownerId); + + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, amount); + const result = await trackGas( + DB.ssvNetwork.contract + .connect(DB.owners[ownerId]) + .registerValidator(payload.publicKey, payload.operatorIds, payload.sharesData, amount, cluster), + gasGroups, + ); + DB.ownerNonce++; + DB.registeredValidators.push({ id: validator.id, payload }); + regValidators.push({ publicKey: payload.publicKey, shares: payload.sharesData }); + args = result.eventsByName.ValidatorAdded[0].args; + } + + return { regValidators, args }; +}; + +export const bulkRegisterValidators = async ( + ownerId: number, + numberOfValidators: number, + operatorIds: number[], + minDepositAmount: any, + cluster: any, + gasGroups?: GasGroup[], +) => { + const pks = Array.from({ length: numberOfValidators }, (_, index) => DataGenerator.publicKey(index + 1)); + const shares = Array.from({ length: numberOfValidators }, (_, index) => + DataGenerator.shares(1, index, operatorIds.length), + ); + const depositAmount = minDepositAmount * numberOfValidators; + + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, depositAmount); + + const result = await trackGas( + DB.ssvNetwork.contract + .connect(DB.owners[ownerId]) + .bulkRegisterValidator(pks, operatorIds, shares, depositAmount, cluster), + gasGroups, + ); + + return { + args: result.eventsByName.ValidatorAdded[0].args, + pks, + }; +}; + +export const coldRegisterValidator = async () => { + const ssvKeys = new SSVKeys(); + const keyShares = new KeyShares(); + + const validator = DB.validators[0]; + const operators = DB.operators.slice(0, 4).map((item: Operator) => ({ id: item.id, operatorKey: item.operatorKey })); + const publicKey = validator.publicKey; + const privateKey = validator.privateKey; + const threshold = await ssvKeys.createThreshold(privateKey, operators); + const encryptedShares: EncryptShare[] = await ssvKeys.encryptShares(operators, threshold.shares); + const payload = await keyShares.buildPayload( + { + publicKey, + operators, + encryptedShares, + }, + { + ownerAddress: DB.owners[0].address, + ownerNonce: 1, + privateKey, + }, + ); + + const amount = '1000000000000000'; + await DB.ssvToken.approve(DB.ssvNetwork.contract.address, amount); + await DB.ssvNetwork.contract + .connect(DB.owners[0]) + .registerValidator(payload.publicKey, payload.operatorIds, payload.sharesData, amount, { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }); +}; + +export const removeValidator = async (ownerId: number, pk: string, operatorIds: number[], cluster: any) => { + const removedValidator = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).removeValidator(pk, operatorIds, cluster), + ); + return removedValidator.eventsByName.ValidatorRemoved[0].args; +}; + +export const getCluster = (payload: any) => + ethers.utils.AbiCoder.prototype.encode( + [ + 'tuple(uint32 validatorCount, uint64 networkFee, uint64 networkFeeIndex, uint64 index, uint64 balance, bool active) cluster', + ], + [payload], + ); diff --git a/test/helpers/gas-usage.ts b/test/helpers/gas-usage.ts new file mode 100644 index 00000000..95678e9b --- /dev/null +++ b/test/helpers/gas-usage.ts @@ -0,0 +1,205 @@ +import { expect } from 'chai'; + +export enum GasGroup { + REGISTER_OPERATOR, + REMOVE_OPERATOR, + REMOVE_OPERATOR_WITH_WITHDRAW, + SET_OPERATOR_WHITELIST, + + DECLARE_OPERATOR_FEE, + CANCEL_OPERATOR_FEE, + EXECUTE_OPERATOR_FEE, + REDUCE_OPERATOR_FEE, + + REGISTER_VALIDATOR_EXISTING_CLUSTER, + REGISTER_VALIDATOR_NEW_STATE, + REGISTER_VALIDATOR_WITHOUT_DEPOSIT, + + BULK_REGISTER_10_VALIDATOR_NEW_STATE_4, + BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_4, + + REGISTER_VALIDATOR_EXISTING_CLUSTER_7, + REGISTER_VALIDATOR_NEW_STATE_7, + REGISTER_VALIDATOR_WITHOUT_DEPOSIT_7, + + BULK_REGISTER_10_VALIDATOR_NEW_STATE_7, + BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_7, + + REGISTER_VALIDATOR_EXISTING_CLUSTER_10, + REGISTER_VALIDATOR_NEW_STATE_10, + REGISTER_VALIDATOR_WITHOUT_DEPOSIT_10, + + BULK_REGISTER_10_VALIDATOR_NEW_STATE_10, + BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_10, + + REGISTER_VALIDATOR_EXISTING_CLUSTER_13, + REGISTER_VALIDATOR_NEW_STATE_13, + REGISTER_VALIDATOR_WITHOUT_DEPOSIT_13, + + BULK_REGISTER_10_VALIDATOR_NEW_STATE_13, + BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_13, + + REMOVE_VALIDATOR, + BULK_REMOVE_10_VALIDATOR_4, + REMOVE_VALIDATOR_7, + BULK_REMOVE_10_VALIDATOR_7, + REMOVE_VALIDATOR_10, + BULK_REMOVE_10_VALIDATOR_10, + REMOVE_VALIDATOR_13, + BULK_REMOVE_10_VALIDATOR_13, + DEPOSIT, + WITHDRAW_CLUSTER_BALANCE, + WITHDRAW_OPERATOR_BALANCE, + VALIDATOR_EXIT, + BULK_EXIT_10_VALIDATOR_4, + BULK_EXIT_10_VALIDATOR_7, + BULK_EXIT_10_VALIDATOR_10, + BULK_EXIT_10_VALIDATOR_13, + + LIQUIDATE_CLUSTER_4, + LIQUIDATE_CLUSTER_7, + LIQUIDATE_CLUSTER_10, + LIQUIDATE_CLUSTER_13, + REACTIVATE_CLUSTER, + + NETWORK_FEE_CHANGE, + WITHDRAW_NETWORK_EARNINGS, + DAO_UPDATE_OPERATOR_FEE_INCREASE_LIMIT, + DAO_UPDATE_DECLARE_OPERATOR_FEE_PERIOD, + DAO_UPDATE_EXECUTE_OPERATOR_FEE_PERIOD, + DAO_UPDATE_OPERATOR_MAX_FEE, + + CHANGE_LIQUIDATION_THRESHOLD_PERIOD, + CHANGE_MINIMUM_COLLATERAL, +} + +const MAX_GAS_PER_GROUP: any = { + /* REAL GAS LIMITS */ + [GasGroup.REGISTER_OPERATOR]: 134500, + [GasGroup.REMOVE_OPERATOR]: 70500, + [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]: 70300, + [GasGroup.SET_OPERATOR_WHITELIST]: 84300, + + [GasGroup.DECLARE_OPERATOR_FEE]: 70000, + [GasGroup.CANCEL_OPERATOR_FEE]: 41900, + [GasGroup.EXECUTE_OPERATOR_FEE]: 52000, + [GasGroup.REDUCE_OPERATOR_FEE]: 51900, + + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]: 202000, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE]: 235500, + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT]: 180600, + + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_4]: 889900, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_4]: 813000, + + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_7]: 272500, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7]: 289000, + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_7]: 251600, + + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_7]: 1085500, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_7]: 1068500, + + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_10]: 342700, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10]: 359500, + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_10]: 322200, + + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_10]: 1365000, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_10]: 1348200, + + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_13]: 413700, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13]: 430500, + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_13]: 393300, + + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_13]: 1650200, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_13]: 1630500, + + [GasGroup.REMOVE_VALIDATOR]: 114000, + [GasGroup.BULK_REMOVE_10_VALIDATOR_4]: 191500, + + [GasGroup.REMOVE_VALIDATOR_7]: 155500, + [GasGroup.BULK_REMOVE_10_VALIDATOR_7]: 241700, + + [GasGroup.REMOVE_VALIDATOR_10]: 197000, + [GasGroup.BULK_REMOVE_10_VALIDATOR_10]: 292500, + + [GasGroup.REMOVE_VALIDATOR_13]: 238500, + [GasGroup.BULK_REMOVE_10_VALIDATOR_13]: 343000, + + [GasGroup.DEPOSIT]: 77500, + [GasGroup.WITHDRAW_CLUSTER_BALANCE]: 95000, + [GasGroup.WITHDRAW_OPERATOR_BALANCE]: 64900, + [GasGroup.VALIDATOR_EXIT]: 43000, + [GasGroup.BULK_EXIT_10_VALIDATOR_4]: 126200, + [GasGroup.BULK_EXIT_10_VALIDATOR_7]: 139500, + [GasGroup.BULK_EXIT_10_VALIDATOR_10]: 152500, + [GasGroup.BULK_EXIT_10_VALIDATOR_13]: 165500, + + [GasGroup.LIQUIDATE_CLUSTER_4]: 130500, + [GasGroup.LIQUIDATE_CLUSTER_7]: 171000, + [GasGroup.LIQUIDATE_CLUSTER_10]: 212000, + [GasGroup.LIQUIDATE_CLUSTER_13]: 252800, + [GasGroup.REACTIVATE_CLUSTER]: 121500, + + [GasGroup.NETWORK_FEE_CHANGE]: 45800, + [GasGroup.WITHDRAW_NETWORK_EARNINGS]: 62500, + [GasGroup.DAO_UPDATE_OPERATOR_FEE_INCREASE_LIMIT]: 38200, + [GasGroup.DAO_UPDATE_DECLARE_OPERATOR_FEE_PERIOD]: 40900, + [GasGroup.DAO_UPDATE_EXECUTE_OPERATOR_FEE_PERIOD]: 41000, + [GasGroup.DAO_UPDATE_OPERATOR_MAX_FEE]: 40300, + + [GasGroup.CHANGE_LIQUIDATION_THRESHOLD_PERIOD]: 41000, + [GasGroup.CHANGE_MINIMUM_COLLATERAL]: 41200, +}; + +class GasStats { + max: number | null = null; + min: number | null = null; + totalGas = 0; + txCount = 0; + + addStat(gas: number) { + this.totalGas += gas; + ++this.txCount; + this.max = Math.max(gas, this.max === null ? -Infinity : this.max); + this.min = Math.min(gas, this.min === null ? Infinity : this.min); + } + + get average(): number { + return this.totalGas / this.txCount; + } +} + +const gasUsageStats = new Map(); + +for (const group in MAX_GAS_PER_GROUP) { + gasUsageStats.set(group, new GasStats()); +} + +export const trackGas = async (tx: Promise, groups?: Array): Promise => { + const receipt = await (await tx).wait(); + + groups && + [...new Set(groups)].forEach(group => { + const gasUsed = parseInt(receipt.gasUsed); + + if (!process.env.NO_GAS_ENFORCE) { + const maxGas = MAX_GAS_PER_GROUP[group]; + expect(gasUsed).to.be.lessThanOrEqual(maxGas, 'gasUsed higher than max allowed gas'); + } + + gasUsageStats.get(group.toString()).addStat(gasUsed); + }); + return { + ...receipt, + gasUsed: +receipt.gasUsed, + eventsByName: receipt.events.reduce((aggr: any, item: any) => { + aggr[item.event] = aggr[item.event] || []; + aggr[item.event].push(item); + return aggr; + }, {}), + }; +}; + +export const getGasStats = (group: string) => { + return gasUsageStats.get(group) || new GasStats(); +}; diff --git a/test/liquidate/liquidated-cluster.ts b/test/liquidate/liquidated-cluster.ts new file mode 100644 index 00000000..36fd9d14 --- /dev/null +++ b/test/liquidate/liquidated-cluster.ts @@ -0,0 +1,196 @@ +// Decalre imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, + ssvViews: any, + minDepositAmount: any, + firstCluster: any, + burnPerBlock: any, + networkFee: any; + +// Declare globals +describe('Liquidate Cluster Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + networkFee = helpers.CONFIG.minimalOperatorFee; + burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; + + await ssvNetworkContract.updateNetworkFee(networkFee); + + // first validator + const cluster = await helpers.registerValidators( + 1, + (minDepositAmount * 2).toString(), + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + firstCluster = cluster.args; + }); + + it('Liquidate -> deposit -> reactivate', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + + let clusterEventData = await helpers.liquidate(firstCluster.owner, firstCluster.operatorIds, firstCluster.cluster); + + expect( + await ssvViews.isLiquidated(firstCluster.owner, firstCluster.operatorIds, clusterEventData.cluster), + ).to.equal(true); + + clusterEventData = await helpers.deposit( + 1, + firstCluster.owner, + firstCluster.operatorIds, + minDepositAmount, + clusterEventData.cluster, + ); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .reactivate(clusterEventData.operatorIds, minDepositAmount, clusterEventData.cluster), + ).to.emit(ssvNetworkContract, 'ClusterReactivated'); + }); + + it('RegisterValidator -> liquidate -> removeValidator -> deposit -> withdraw', async () => { + let clusterEventData = await helpers.registerValidators( + 1, + minDepositAmount, + [2], + [1, 2, 3, 4], + firstCluster.cluster, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + + clusterEventData.args = await helpers.liquidate( + clusterEventData.args.owner, + clusterEventData.args.operatorIds, + clusterEventData.args.cluster, + ); + await expect(clusterEventData.args.cluster.balance).to.be.equals(0); + + clusterEventData.args = await helpers.removeValidator( + 1, + helpers.DataGenerator.publicKey(1), + clusterEventData.args.operatorIds, + clusterEventData.args.cluster, + ); + + clusterEventData.args = await helpers.deposit( + 1, + clusterEventData.args.owner, + clusterEventData.args.operatorIds, + minDepositAmount, + clusterEventData.args.cluster, + ); + await expect(clusterEventData.args.cluster.balance).to.be.equals(minDepositAmount); // shrink + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .withdraw(clusterEventData.args.operatorIds, minDepositAmount, clusterEventData.args.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterIsLiquidated'); + }); + + it('Withdraw -> liquidate -> deposit -> reactivate', async () => { + await utils.progressBlocks(2); + + const withdrawAmount = 2e7; + let clusterEventData = await helpers.withdraw( + 1, + firstCluster.operatorIds, + withdrawAmount.toString(), + firstCluster.cluster, + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[1].address, clusterEventData.operatorIds, clusterEventData.cluster), + ).to.be.equals(minDepositAmount * 2 - withdrawAmount - burnPerBlock * 3); + + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation - 2); + + clusterEventData = await helpers.liquidate( + clusterEventData.owner, + clusterEventData.operatorIds, + clusterEventData.cluster, + ); + await expect( + ssvViews.getBalance(helpers.DB.owners[1].address, clusterEventData.operatorIds, clusterEventData.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterIsLiquidated'); + + clusterEventData = await helpers.deposit( + 1, + clusterEventData.owner, + clusterEventData.operatorIds, + minDepositAmount, + clusterEventData.cluster, + ); + + clusterEventData = await helpers.reactivate( + 1, + clusterEventData.operatorIds, + minDepositAmount, + clusterEventData.cluster, + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[1].address, clusterEventData.operatorIds, clusterEventData.cluster), + ).to.be.equals(minDepositAmount * 2); + + await utils.progressBlocks(2); + expect( + await ssvViews.getBalance(helpers.DB.owners[1].address, clusterEventData.operatorIds, clusterEventData.cluster), + ).to.be.equals(minDepositAmount * 2 - burnPerBlock * 2); + }); + + it('Remove validator -> withdraw -> try liquidate reverts "ClusterNotLiquidatable"', async () => { + let cluster = await helpers.registerValidators( + 2, + minDepositAmount, + [2], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + let clusterEventData = cluster.args; + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation - 10); + + const remove = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .removeValidator(helpers.DataGenerator.publicKey(2), clusterEventData.operatorIds, clusterEventData.cluster), + ); + clusterEventData = remove.eventsByName.ValidatorRemoved[0].args; + + let balance = await ssvViews.getBalance( + helpers.DB.owners[2].address, + clusterEventData.operatorIds, + clusterEventData.cluster, + ); + + clusterEventData = await helpers.withdraw( + 2, + clusterEventData.operatorIds, + ((balance - helpers.CONFIG.minimumLiquidationCollateral) * 1.01).toString(), + clusterEventData.cluster, + ); + + await expect( + ssvNetworkContract.liquidate(clusterEventData.owner, clusterEventData.operatorIds, clusterEventData.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterNotLiquidatable'); + }); +}); diff --git a/test/operators/remove.ts b/test/operators/remove.ts new file mode 100644 index 00000000..b415616b --- /dev/null +++ b/test/operators/remove.ts @@ -0,0 +1,94 @@ +// Declare imports +declare const ethers: any; +import * as helpers from '../helpers/contract-helpers'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +// Declare globals +let ssvNetworkContract: any, ssvViews: any; + +describe('Remove Operator Tests', () => { + beforeEach(async () => { + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + // Register a validator + // cold register + await helpers.coldRegisterValidator(); + }); + + it('Remove operator emits "OperatorRemoved"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(1)) + .to.emit(ssvNetworkContract, 'OperatorRemoved') + .withArgs(1); + }); + + it('Remove private operator emits "OperatorRemoved"', async () => { + const result = await trackGas( + ssvNetworkContract.registerOperator(helpers.DataGenerator.publicKey(22), helpers.CONFIG.minimalOperatorFee), + ); + const { operatorId } = result.eventsByName.OperatorAdded[0].args; + + await ssvNetworkContract.setOperatorWhitelist(operatorId, helpers.DB.owners[2].address); + + await expect(ssvNetworkContract.removeOperator(operatorId)) + .to.emit(ssvNetworkContract, 'OperatorRemoved') + .withArgs(operatorId); + + expect(await ssvViews.getOperatorById(operatorId)).to.deep.equal([ + helpers.DB.owners[0].address, // owner + 0, // fee + 0, // validatorCount + ethers.constants.AddressZero, // whitelisted address + false, // isPrivate + false, // active + ]); + }); + + it('Remove operator gas limits', async () => { + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR]); + }); + + it('Remove operator with a balance emits "OperatorWithdrawn"', async () => { + await helpers.registerValidators( + 4, + `${helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4}`, + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + await expect(ssvNetworkContract.removeOperator(1)).to.emit(ssvNetworkContract, 'OperatorWithdrawn'); + }); + + it('Remove operator with a balance gas limits', async () => { + await helpers.registerValidators( + 4, + `${helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4}`, + [1], + [1, 2, 3, 4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]); + }); + + it('Remove operator I do not own reverts "CallerNotOwner"', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).removeOperator(1)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'CallerNotOwner', + ); + }); + + it('Remove same operator twice reverts "OperatorDoesNotExist"', async () => { + await ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(1); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(1)).to.be.revertedWithCustomError( + ssvNetworkContract, + 'OperatorDoesNotExist', + ); + }); +}); diff --git a/test/sanity/balances.ts b/test/sanity/balances.ts new file mode 100644 index 00000000..1fcd9f3f --- /dev/null +++ b/test/sanity/balances.ts @@ -0,0 +1,514 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, + ssvViews: any, + cluster1: any, + minDepositAmount: any, + burnPerBlock: any, + networkFee: any, + initNetworkFeeBalance: any; + +// Declare globals +describe('Balance Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvViews = metadata.ssvViews; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + networkFee = helpers.CONFIG.minimalOperatorFee; + burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; + + // Set network fee + await ssvNetworkContract.updateNetworkFee(networkFee); + + // Register validators + // cold register + await helpers.coldRegisterValidator(); + + cluster1 = await helpers.registerValidators( + 4, + minDepositAmount, + [1], + helpers.DataGenerator.cluster.new(), + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + initNetworkFeeBalance = await ssvViews.getNetworkEarnings(); + }); + + it('Check cluster balance with removing operator', async () => { + const operatorIds = cluster1.args.operatorIds; + const cluster = cluster1.args.cluster; + let prevBalance: any; + for (let i = 1; i <= 13; i++) { + await ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(i); + let balance = await ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster); + let networkFee = await ssvViews.getNetworkFee(); + if (i > 4) { + expect(prevBalance - balance).to.equal(networkFee); + } + prevBalance = balance; + } + }); + + it('Check cluster balance after removing operator, progress blocks and confirm', async () => { + const operatorIds = cluster1.args.operatorIds; + const cluster = cluster1.args.cluster; + const owner = cluster1.args.owner; + + // get difference of account balance between blocks before removing operator + let balance1 = await ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster); + await utils.progressBlocks(1); + let balance2 = await ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster); + + await ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(1); + + // get difference of account balance between blocks after removing operator + let balance3 = await ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster); + await utils.progressBlocks(1); + let balance4 = await ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster); + + // check the reducing the balance after removing operator (only 3 operators) + expect(balance1 - balance2).to.be.greaterThan(balance3 - balance4); + + // try to register a new validator in the new cluster with the same operator Ids, check revert + const newOperatorIds = operatorIds.map((id: any) => id.toNumber()); + await expect( + helpers.registerValidators( + 1, + minDepositAmount, + [1], + newOperatorIds, + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'OperatorDoesNotExist'); + + // try to remove the validator again and check the operator removed is skipped + const removed = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .removeValidator(helpers.DataGenerator.publicKey(1), operatorIds, cluster), + ); + const cluster2 = removed.eventsByName.ValidatorRemoved[0]; + + // try to liquidate + const liquidated = await trackGas( + ssvNetworkContract.connect(helpers.DB.owners[4]).liquidate(owner, operatorIds, cluster2.args.cluster), + ); + const cluster3 = liquidated.eventsByName.ClusterLiquidated[0]; + + await expect( + ssvViews.getBalance(helpers.DB.owners[4].address, operatorIds, cluster3.args.cluster), + ).to.be.revertedWithCustomError(ssvViews, 'ClusterIsLiquidated'); + }); + + it('Check cluster balance in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock); + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2); + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 3); + }); + + it('Check cluster balance in two and twelve blocks, after network fee updates', async () => { + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock); + const newBurnPerBlock = burnPerBlock + networkFee; + await ssvNetworkContract.updateNetworkFee(networkFee * 2); + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock); + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 2); + await utils.progressBlocks(10); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 12); + }); + + it('Check DAO earnings in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 2); + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 4); + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 6); + }); + + it('Check DAO earnings in two and twelve blocks, after network fee updates', async () => { + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 2); + const newNetworkFee = networkFee * 2; + await ssvNetworkContract.updateNetworkFee(newNetworkFee); + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 2); + await utils.progressBlocks(1); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 4); + await utils.progressBlocks(10); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 24); + }); + + it('Check operators earnings in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(2)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(3)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(4)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + helpers.CONFIG.minimalOperatorFee * 2, + ); + await utils.progressBlocks(1); + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(2)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(3)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(4)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee * 2, + ); + await utils.progressBlocks(1); + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(2)).to.equal( + helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(3)).to.equal( + helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2, + ); + expect(await ssvViews.getOperatorEarnings(4)).to.equal( + helpers.CONFIG.minimalOperatorFee * 6 + helpers.CONFIG.minimalOperatorFee * 2, + ); + }); + + it('Check cluster balance with removed operator', async () => { + await ssvNetworkContract.removeOperator(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).not.equals(0); + }); + + it('Check cluster balance with not enough balance', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation + 10); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.be.equals(0); + }); + + it('Check cluster balance in a non liquidated cluster', async () => { + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock); + }); + + it('Check cluster balance in a liquidated cluster reverts "ClusterIsLiquidated"', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation - 1); + const liquidatedCluster = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .liquidate(cluster1.args.owner, cluster1.args.operatorIds, cluster1.args.cluster), + ); + const updatedCluster = liquidatedCluster.eventsByName.ClusterLiquidated[0].args; + + expect( + await ssvViews.isLiquidated(updatedCluster.owner, updatedCluster.operatorIds, updatedCluster.cluster), + ).to.equal(true); + await expect( + ssvViews.getBalance(helpers.DB.owners[4].address, updatedCluster.operatorIds, updatedCluster.cluster), + ).to.be.revertedWithCustomError(ssvViews, 'ClusterIsLiquidated'); + }); + + it('Check operator earnings, cluster balances and network earnings', async () => { + // 2 exisiting clusters + // update network fee + // register a new validator with some shared operators + // update network fee + + // progress blocks in the process + await utils.progressBlocks(1); + + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 3 + helpers.CONFIG.minimalOperatorFee, + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 2); + + const newNetworkFee = networkFee * 2; + await ssvNetworkContract.updateNetworkFee(newNetworkFee); + + const newBurnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + newNetworkFee; + await utils.progressBlocks(1); + + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock); + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal(networkFee * 4 + newNetworkFee * 2); + + const minDep2 = minDepositAmount * 2; + const cluster2 = await helpers.registerValidators( + 4, + minDep2.toString(), + [2], + [3, 4, 5, 6], + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await utils.progressBlocks(2); + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 8 + + helpers.CONFIG.minimalOperatorFee * 8 + ); + expect(await ssvViews.getOperatorEarnings(3)).to.equal( + helpers.CONFIG.minimalOperatorFee * 8 + + helpers.CONFIG.minimalOperatorFee * 8 + + helpers.CONFIG.minimalOperatorFee * 2, + ); + + expect(await ssvViews.getOperatorEarnings(5)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 5); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster), + ).to.equal(minDep2 - newBurnPerBlock * 2); + + // cold cluster + cluster1 * networkFee (4) + (cold cluster + cluster1 * newNetworkFee (5 + 5)) + cluster2 * newNetworkFee (2) + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal( + networkFee * 4 + newNetworkFee * 5 + newNetworkFee * 4 + newNetworkFee * 3, + ); + + await ssvNetworkContract.updateNetworkFee(networkFee); + await utils.progressBlocks(4); + + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 6 - burnPerBlock * 4); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster), + ).to.equal(minDep2 - newBurnPerBlock * 3 - burnPerBlock * 4); + + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 14 + helpers.CONFIG.minimalOperatorFee * 12, + ); + expect(await ssvViews.getOperatorEarnings(3)).to.equal( + helpers.CONFIG.minimalOperatorFee * 14 + + helpers.CONFIG.minimalOperatorFee * 12 + + helpers.CONFIG.minimalOperatorFee * 7, + ); + expect(await ssvViews.getOperatorEarnings(5)).to.equal( + helpers.CONFIG.minimalOperatorFee * 2 + + helpers.CONFIG.minimalOperatorFee * 5 + ); + + // cold cluster + cluster1 * networkFee (4) + (cold cluster + cluster1 * newNetworkFee (6 + 6)) + cluster2 * newNetworkFee (3) + (cold cluster + cluster1 + cluster2 * networkFee (4 + 4 + 4)) + expect((await ssvViews.getNetworkEarnings()) - initNetworkFeeBalance).to.equal( + networkFee * 4 + newNetworkFee * 6 + newNetworkFee * 6 + newNetworkFee * 3 + networkFee * 12, + ); + }); + + it('Check operator earnings and cluster balance when reducing operator fee"', async () => { + const newFee = helpers.CONFIG.minimalOperatorFee / 2; + await ssvNetworkContract.connect(helpers.DB.owners[0]).reduceOperatorFee(1, newFee); + + await utils.progressBlocks(2); + + expect(await ssvViews.getOperatorEarnings(1)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + helpers.CONFIG.minimalOperatorFee + newFee * 2, + ); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock - (helpers.CONFIG.minimalOperatorFee * 3 + networkFee) * 2 - newFee * 2); + }); + + it('Check cluster balance after withdraw and deposit', async () => { + await utils.progressBlocks(1); + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster1.args.operatorIds, cluster1.args.cluster), + ).to.equal(minDepositAmount - burnPerBlock); + + await helpers.DB.ssvToken + .connect(helpers.DB.owners[4]) + .approve(helpers.DB.ssvNetwork.contract.address, minDepositAmount * 2); + let validator2 = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .registerValidator( + helpers.DataGenerator.publicKey(3), + [1, 2, 3, 4], + helpers.DataGenerator.shares(4, 3, 4), + minDepositAmount * 2, + cluster1.args.cluster, + ), + ); + let cluster2 = validator2.eventsByName.ValidatorAdded[0]; + + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster), + ).to.equal(minDepositAmount * 3 - burnPerBlock * 3); + + validator2 = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .withdraw(cluster2.args.operatorIds, helpers.CONFIG.minimalOperatorFee, cluster2.args.cluster), + ); + cluster2 = validator2.eventsByName.ClusterWithdrawn[0]; + + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster), + ).to.equal(minDepositAmount * 3 - burnPerBlock * 4 - burnPerBlock - helpers.CONFIG.minimalOperatorFee); + + await helpers.DB.ssvToken + .connect(helpers.DB.owners[4]) + .approve(helpers.DB.ssvNetwork.contract.address, minDepositAmount); + validator2 = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[4]) + .deposit( + helpers.DB.owners[4].address, + cluster2.args.operatorIds, + helpers.CONFIG.minimalOperatorFee, + cluster2.args.cluster, + ), + ); + cluster2 = validator2.eventsByName.ClusterDeposited[0]; + await utils.progressBlocks(2); + + expect( + await ssvViews.getBalance(helpers.DB.owners[4].address, cluster2.args.operatorIds, cluster2.args.cluster), + ).to.equal( + minDepositAmount * 3 - + burnPerBlock * 8 - + burnPerBlock * 5 - + helpers.CONFIG.minimalOperatorFee + + helpers.CONFIG.minimalOperatorFee, + ); + }); + + it('Check cluster and operators balance after 10 validators bulk registration and removal', async () => { + const clusterDeposit = minDepositAmount * 10; + + // Register 10 validators in a cluster + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + [5, 6, 7, 8], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await utils.progressBlocks(2); + + // check cluster balance + expect( + await ssvViews.getBalance(helpers.DB.owners[2].address, args.operatorIds, args.cluster), + ).to.equal(clusterDeposit - (burnPerBlock * 10 * 2)); + + // check operators' earnings + expect(await ssvViews.getOperatorEarnings(5)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 * 2); + expect(await ssvViews.getOperatorEarnings(6)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 * 2); + expect(await ssvViews.getOperatorEarnings(7)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 * 2); + expect(await ssvViews.getOperatorEarnings(8)).to.equal(helpers.CONFIG.minimalOperatorFee * 10 * 2); + + // bulk remove 5 validators + const result = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks.slice(0, 5), args.operatorIds, args.cluster) + ); + + const removed = result.eventsByName.ValidatorRemoved[0].args; + + await utils.progressBlocks(2); + + // check cluster balance + expect( + await ssvViews.getBalance(helpers.DB.owners[2].address, removed.operatorIds, removed.cluster), + ).to.equal(clusterDeposit - (burnPerBlock * 10 * 3) - (burnPerBlock * 5 * 2)); + + // check operators' earnings + expect(await ssvViews.getOperatorEarnings(5)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 3) + (helpers.CONFIG.minimalOperatorFee * 5 * 2)); + expect(await ssvViews.getOperatorEarnings(6)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 3) + (helpers.CONFIG.minimalOperatorFee * 5 * 2)); + expect(await ssvViews.getOperatorEarnings(7)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 3) + (helpers.CONFIG.minimalOperatorFee * 5 * 2)); + expect(await ssvViews.getOperatorEarnings(8)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 3) + (helpers.CONFIG.minimalOperatorFee * 5 * 2)); + }); + + it('Remove validators from a liquidated cluster', async () => { + const clusterDeposit = minDepositAmount * 10; + // 3 operators cluster burnPerBlock + const newBurnPerBlock = helpers.CONFIG.minimalOperatorFee * 3 + networkFee; + + // register 10 validators + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + [5, 6, 7, 8], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await utils.progressBlocks(2); + + // remove one operator + await ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(8); + + await utils.progressBlocks(2); + + // bulk remove 10 validators + const result = await trackGas(ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster) + ); + const removed = result.eventsByName.ValidatorRemoved[0].args; + + await utils.progressBlocks(2); + + // check operators' balances + expect(await ssvViews.getOperatorEarnings(5)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 6)); + expect(await ssvViews.getOperatorEarnings(6)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 6)); + expect(await ssvViews.getOperatorEarnings(7)).to.equal((helpers.CONFIG.minimalOperatorFee * 10 * 6)); + expect(await ssvViews.getOperatorEarnings(8)).to.equal(0); + + // check cluster balance + expect( + await ssvViews.getBalance(helpers.DB.owners[2].address, removed.operatorIds, removed.cluster), + ).to.equal(clusterDeposit - (burnPerBlock * 10 * 3) - (newBurnPerBlock * 10 * 3)); + + }); +}); diff --git a/test/validators/others.ts b/test/validators/others.ts deleted file mode 100644 index 705e103c..00000000 --- a/test/validators/others.ts +++ /dev/null @@ -1,154 +0,0 @@ -// Declare imports -import * as helpers from '../helpers/contract-helpers'; -import { expect } from 'chai'; -import { trackGas, GasGroup } from '../helpers/gas-usage'; - -// Declare globals -let ssvNetworkContract: any, minDepositAmount: any, firstCluster: any; - -describe('Other Validator Tests', () => { - beforeEach(async () => { - // Initialize contract - const metadata = (await helpers.initializeContract()); - ssvNetworkContract = metadata.contract; - - minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; - - // Register operators - await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); - - // Register a validator - // cold register - await helpers.coldRegisterValidator(); - - // first validator - await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); - const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( - helpers.DataGenerator.publicKey(1), - [1, 2, 3, 4], - helpers.DataGenerator.shares(4), - minDepositAmount, - { - validatorCount: 0, - networkFeeIndex: 0, - index: 0, - balance: 0, - active: true - } - ), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); - firstCluster = register.eventsByName.ValidatorAdded[0].args; - }); - - it('Exiting a validator emits "ValidatorExited"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - firstCluster.operatorIds, - )).to.emit(ssvNetworkContract, 'ValidatorExited') - .withArgs(helpers.DB.owners[1].address, firstCluster.operatorIds, helpers.DataGenerator.publicKey(1)); - }); - - it('Exiting a validator gas limit', async () => { - await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - firstCluster.operatorIds, - ), [GasGroup.VALIDATOR_EXIT]); - }); - - it('Exiting one of the validators in a cluster emits "ValidatorExited"', async () => { - await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); - await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( - helpers.DataGenerator.publicKey(2), - [1, 2, 3, 4], - helpers.DataGenerator.shares(4), - minDepositAmount, - firstCluster.cluster - )); - - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(2), - firstCluster.operatorIds, - )).to.emit(ssvNetworkContract, 'ValidatorExited') - .withArgs(helpers.DB.owners[1].address, firstCluster.operatorIds, helpers.DataGenerator.publicKey(2)); - }); - - it('Exiting a removed validator reverts "ValidatorDoesNotExist"', async () => { - await ssvNetworkContract.connect(helpers.DB.owners[1]).removeValidator( - helpers.DataGenerator.publicKey(1), - firstCluster.operatorIds, - firstCluster.cluster - ); - - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - firstCluster.operatorIds - )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); - }); - - it('Exiting a non-existing validator reverts "ValidatorDoesNotExist"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(12), - firstCluster.operatorIds - )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); - }); - - it('Exiting a validator with empty operator list reverts "IncorrectValidatorState"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - [] - )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); - }); - - it('Exiting a validator with empty public key reverts "ValidatorDoesNotExist"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - '0x', - firstCluster.operatorIds - )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); - }); - - it('Exiting a validator using the wrong account reverts "ValidatorDoesNotExist"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).exitValidator( - helpers.DataGenerator.publicKey(1), - firstCluster.operatorIds - )).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); - }); - - it('Exiting a validator with incorrect operators (unsorted list) reverts with "IncorrectValidatorState"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - [4, 3, 2, 1] - )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); - }); - - it('Exiting a validator with incorrect operators (too many operators) reverts with "IncorrectValidatorState"', async () => { - minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 13; - - await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); - const register = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[2]).registerValidator( - helpers.DataGenerator.publicKey(2), - [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], - helpers.DataGenerator.shares(13), - minDepositAmount, - { - validatorCount: 0, - networkFeeIndex: 0, - index: 0, - balance: 0, - active: true - } - )); - const secondCluster = register.eventsByName.ValidatorAdded[0].args; - - await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).exitValidator( - helpers.DataGenerator.publicKey(2), - secondCluster.operatorIds, - )).to.emit(ssvNetworkContract, 'ValidatorExited') - .withArgs(helpers.DB.owners[2].address, secondCluster.operatorIds, helpers.DataGenerator.publicKey(2)); - }); - - it('Exiting a validator with incorrect operators reverts with "IncorrectValidatorState"', async () => { - await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).exitValidator( - helpers.DataGenerator.publicKey(1), - [1, 2, 3, 5] - )).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorState'); - }); -}); \ No newline at end of file diff --git a/test/validators/register.ts b/test/validators/register.ts new file mode 100644 index 00000000..1f8e95dd --- /dev/null +++ b/test/validators/register.ts @@ -0,0 +1,1104 @@ +// Declare imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, ssvViews: any, ssvToken: any, minDepositAmount: any, cluster1: any; + +describe('Register Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + ssvToken = metadata.ssvToken; + ssvViews = metadata.ssvViews; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 13; + + // cold register + await helpers.DB.ssvToken + .connect(helpers.DB.owners[6]) + .approve(helpers.DB.ssvNetwork.contract.address, '1000000000000000'); + cluster1 = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[6]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(6, 1, 4), + '1000000000000000', + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + ); + }); + + it('Register validator with 4 operators emits "ValidatorAdded"', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + ).to.emit(ssvNetworkContract, 'ValidatorAdded'); + }); + + it('Register validator with 4 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const balance = await ssvToken.balanceOf(ssvNetworkContract.address); + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + helpers.DataGenerator.cluster.new(), + helpers.DataGenerator.shares(1, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + expect(await ssvToken.balanceOf(ssvNetworkContract.address)).to.be.equal( + balance.add(ethers.BigNumber.from(minDepositAmount)), + ); + }); + + it('Register 2 validators into the same cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 2, 4), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER], + ); + }); + + it('Register 2 validators into the same cluster and 1 validator into a new cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 2, 4), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER], + ); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .registerValidator( + helpers.DataGenerator.publicKey(4), + [2, 3, 4, 5], + helpers.DataGenerator.shares(2, 4, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + }); + + it('Register 2 validators into the same cluster with one time deposit gas limit', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 1, 4), + `${minDepositAmount * 2}`, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + const args = eventsByName.ValidatorAdded[0].args; + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 2, 4), + 0, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT], + ); + }); + + it('Bulk register 10 validators with 4 operators into the same cluster', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).bulkRegisterValidator( + [helpers.DataGenerator.publicKey(11)], + [1, 2, 3, 4], + [helpers.DataGenerator.shares(1,11,4)], + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.bulkRegisterValidators( + 1, + 10, + [1, 2, 3, 4], + minDepositAmount, + args.cluster, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_4], + ); + }); + + it('Bulk register 10 validators with 4 operators new cluster', async () => { + + await helpers.bulkRegisterValidators( + 1, + 10, + [1, 2, 3, 4], + minDepositAmount, + + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + + }, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_4], + ); + + }); + + // 7 operators + + it('Register validator with 7 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(helpers.DB.ssvNetwork.contract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + helpers.DataGenerator.cluster.new(7), + helpers.DataGenerator.shares(1, 2, 7), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + }); + + it('Register 2 validators with 7 operators into the same cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 1, 7), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 2, 7), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_7], + ); + }); + + it('Register 2 validators with 7 operators into the same cluster and 1 validator into a new cluster with 7 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 1, 7), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 2, 7), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_7], + ); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .registerValidator( + helpers.DataGenerator.publicKey(4), + [2, 3, 4, 5, 6, 7, 8], + helpers.DataGenerator.shares(2, 4, 7), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + }); + + it('Register 2 validators with 7 operators into the same cluster with one time deposit gas limit', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 1, 7), + `${minDepositAmount * 2}`, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + + const args = eventsByName.ValidatorAdded[0].args; + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7], + helpers.DataGenerator.shares(1, 2, 7), + 0, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_7], + ); + }); + + it('Bulk register 10 validators with 7 operators into the same cluster', async () => { + const operatorIds = [1, 2, 3, 4, 5, 6, 7]; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).bulkRegisterValidator( + [helpers.DataGenerator.publicKey(11)], + operatorIds, + [helpers.DataGenerator.shares(1,11,operatorIds.length)], + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.bulkRegisterValidators( + 1, + 10, + operatorIds, + minDepositAmount, + args.cluster, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_7], + ); + }); + + it('Bulk register 10 validators with 7 operators new cluster', async () => { + await helpers.bulkRegisterValidators( + 1, + 10, + [1, 2, 3, 4, 5, 6, 7], + minDepositAmount, + + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + }, + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_7], + ); + + }); + + // 10 operators + + it('Register validator with 10 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + helpers.DataGenerator.cluster.new(10), + helpers.DataGenerator.shares(1, 1, 10), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + }); + + it('Register 2 validators with 10 operators into the same cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 1, 10), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 2, 10), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_10], + ); + }); + + it('Register 2 validators with 10 operators into the same cluster and 1 validator into a new cluster with 10 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 1, 10), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 2, 10), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_10], + ); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .registerValidator( + helpers.DataGenerator.publicKey(4), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(2, 4, 10), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + }); + + it('Register 2 validators with 10 operators into the same cluster with one time deposit gas limit', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 1, 10), + `${minDepositAmount * 2}`, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + + const args = eventsByName.ValidatorAdded[0].args; + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + helpers.DataGenerator.shares(1, 2, 10), + 0, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_10], + ); + }); + + it('Bulk register 10 validators with 10 operators into the same cluster', async () => { + const operatorIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).bulkRegisterValidator( + [helpers.DataGenerator.publicKey(11)], + operatorIds, + [helpers.DataGenerator.shares(1,10,operatorIds.length)], + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + + const args = eventsByName.ValidatorAdded[0].args; + + + await helpers.bulkRegisterValidators( + 1, + 10, + operatorIds, + minDepositAmount, + args.cluster, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_10], + ); + }); + + it('Bulk register 10 validators with 10 operators new cluster', async () => { + await helpers.bulkRegisterValidators( + 1, + 10, + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + minDepositAmount, + + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + + }, + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_10], + ); + + }); + + // 13 operators + + it('Register validator with 13 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + helpers.DataGenerator.cluster.new(13), + helpers.DataGenerator.shares(1, 1, 13), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + }); + + it('Register 2 validators with 13 operators into the same cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 1, 13), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 2, 13), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_13], + ); + }); + + it('Register 2 validators with 13 operators into the same cluster and 1 validator into a new cluster with 13 operators gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 1, 13), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + const args = eventsByName.ValidatorAdded[0].args; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 2, 13), + minDepositAmount, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER_13], + ); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[2]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .registerValidator( + helpers.DataGenerator.publicKey(4), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(2, 4, 13), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + }); + + it('Register 2 validators with 13 operators into the same cluster with one time deposit gas limit', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 1, 13), + `${minDepositAmount * 2}`, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + + const args = eventsByName.ValidatorAdded[0].args; + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + helpers.DataGenerator.shares(1, 2, 13), + 0, + args.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_WITHOUT_DEPOSIT_13], + ); + }); + + it('Bulk register 10 validators with 13 operators into the same cluster', async () => { + const operatorIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + const { eventsByName } = await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).bulkRegisterValidator( + [helpers.DataGenerator.publicKey(11)], + operatorIds, + [helpers.DataGenerator.shares(1, 11, operatorIds.length)], + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + } + )); + + const args = eventsByName.ValidatorAdded[0].args; + + + await helpers.bulkRegisterValidators( + 1, + 10, + operatorIds, + minDepositAmount, + args.cluster, + [GasGroup.BULK_REGISTER_10_VALIDATOR_EXISTING_CLUSTER_13], + ); + }); + + it('Bulk register 10 validators with 13 operators new cluster', async () => { + await helpers.bulkRegisterValidators( + 1, + 10, + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + minDepositAmount, + + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true + + }, + [GasGroup.BULK_REGISTER_10_VALIDATOR_NEW_STATE_13], + ); + + }); + + it('Get cluster burn rate', async () => { + const networkFee = helpers.CONFIG.minimalOperatorFee; + await ssvNetworkContract.updateNetworkFee(networkFee); + + let clusterData = cluster1.eventsByName.ValidatorAdded[0].args.cluster; + expect(await ssvViews.getBurnRate(helpers.DB.owners[6].address, [1, 2, 3, 4], clusterData)).to.equal( + helpers.CONFIG.minimalOperatorFee * 4 + networkFee, + ); + + await helpers.DB.ssvToken + .connect(helpers.DB.owners[6]) + .approve(helpers.DB.ssvNetwork.contract.address, '1000000000000000'); + const validator2 = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[6]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(6, 2, 4), + '1000000000000000', + clusterData, + ), + ); + clusterData = validator2.eventsByName.ValidatorAdded[0].args.cluster; + expect(await ssvViews.getBurnRate(helpers.DB.owners[6].address, [1, 2, 3, 4], clusterData)).to.equal( + (helpers.CONFIG.minimalOperatorFee * 4 + networkFee) * 2, + ); + }); + + it('Get cluster burn rate when one of the operators does not exist', async () => { + const clusterData = cluster1.eventsByName.ValidatorAdded[0].args.cluster; + await expect( + ssvViews.getBurnRate(helpers.DB.owners[6].address, [1, 2, 3, 41], clusterData), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterDoesNotExists'); + }); + + it('Register validator with incorrect input data reverts "IncorrectClusterState"', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + await ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 2, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ); + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(3), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 3, 4), + minDepositAmount, + { + validatorCount: 2, + networkFeeIndex: 10, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectClusterState'); + }); + + it('Register validator in a new cluster with incorrect input data reverts "IncorrectClusterState"', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, `${minDepositAmount * 2}`); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(3), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 3, 4), + minDepositAmount, + { + validatorCount: 2, + networkFee: 10, + networkFeeIndex: 10, + index: 10, + balance: 10, + active: false, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectClusterState'); + }); + + it('Register validator when an operator does not exist in the cluster reverts "OperatorDoesNotExist"', async () => { + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 25], + helpers.DataGenerator.shares(1, 2, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'OperatorDoesNotExist'); + }); + + it('Register validator with a removed operator in the cluster reverts "OperatorDoesNotExist"', async () => { + await ssvNetworkContract.removeOperator(1); + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(4), + [1, 2, 3, 4], + helpers.DataGenerator.shares(0, 4, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'OperatorDoesNotExist'); + }); + + it('Register cluster with unsorted operators reverts "UnsortedOperatorsList"', async () => { + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(1), + [3, 2, 1, 4], + helpers.DataGenerator.shares(0, 1, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'UnsortedOperatorsList'); + }); + + it('Register cluster with duplicated operators reverts "OperatorsListNotUnique"', async () => { + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(1), + [3, 6, 12, 12], + helpers.DataGenerator.shares(0, 1, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'OperatorsListNotUnique'); + }); + + it('Register validator with not enough balance reverts "InsufficientBalance"', async () => { + await helpers.DB.ssvToken.approve(ssvNetworkContract.address, helpers.CONFIG.minimalOperatorFee); + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(0, 1, 4), + helpers.CONFIG.minimalOperatorFee, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Register validator in a liquidatable cluster with not enough balance reverts "InsufficientBalance"', async () => { + const depositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4; + + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, depositAmount); + const { eventsByName } = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 1, 4), + depositAmount, + { + validatorCount: 0, + networkFee: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ); + const cluster1 = eventsByName.ValidatorAdded[0].args; + + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation + 10); + + await helpers.DB.ssvToken + .connect(helpers.DB.owners[1]) + .approve(ssvNetworkContract.address, helpers.CONFIG.minimalOperatorFee); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(2), + [1, 2, 3, 4], + helpers.DataGenerator.shares(1, 2, 4), + helpers.CONFIG.minimalOperatorFee, + cluster1.cluster, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'InsufficientBalance'); + }); + + it('Register an existing validator with same operators setup reverts "ValidatorAlreadyExistsWithData"', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[6]) + .approve(ssvNetworkContract.address, helpers.CONFIG.minimalOperatorFee); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[6]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, 4], + helpers.DataGenerator.shares(6, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorAlreadyExistsWithData') + .withArgs(helpers.DataGenerator.publicKey(1)); + }); + + it('Register an existing validator with different operators setup reverts "ValidatorAlreadyExistsWithData"', async () => { + await helpers.DB.ssvToken + .connect(helpers.DB.owners[6]) + .approve(ssvNetworkContract.address, helpers.CONFIG.minimalOperatorFee); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[6]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 5, 6], + helpers.DataGenerator.shares(6, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorAlreadyExistsWithData') + .withArgs(helpers.DataGenerator.publicKey(1)); + }); + + it('Register whitelisted validator in 1 operator with 4 operators emits "ValidatorAdded"', async () => { + const result = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerOperator(helpers.DataGenerator.publicKey(20), helpers.CONFIG.minimalOperatorFee), + ); + const { operatorId } = result.eventsByName.OperatorAdded[0].args; + + await ssvNetworkContract + .connect(helpers.DB.owners[1]) + .setOperatorWhitelist(operatorId, helpers.DB.owners[3].address); + + await helpers.DB.ssvToken.connect(helpers.DB.owners[3]).approve(ssvNetworkContract.address, minDepositAmount); + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[3]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, operatorId], + helpers.DataGenerator.shares(3, 1, 4), + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ), + ).to.emit(ssvNetworkContract, 'ValidatorAdded'); + }); + + it('Register a non whitelisted validator reverts "CallerNotWhitelisted"', async () => { + const result = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerOperator(helpers.DataGenerator.publicKey(22), helpers.CONFIG.minimalOperatorFee), + ); + const { operatorId } = result.eventsByName.OperatorAdded[0].args; + + await ssvNetworkContract + .connect(helpers.DB.owners[1]) + .setOperatorWhitelist(operatorId, helpers.DB.owners[3].address); + + await helpers.DB.ssvToken.approve(ssvNetworkContract.address, minDepositAmount); + await expect( + ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(1), + [1, 2, 3, operatorId], + helpers.DataGenerator.shares(0, 1, 4), + minDepositAmount, + { + validatorCount: 0, + networkFeeIndex: 0, + index: 0, + balance: 0, + active: true, + }, + ), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'CallerNotWhitelisted'); + }); + + it('Retrieve an existing validator', async () => { + expect(await ssvViews.getValidator(helpers.DB.owners[6].address, helpers.DataGenerator.publicKey(1))).to.be.equals( + true, + ); + }); + + it('Retrieve a non-existing validator', async () => { + expect(await ssvViews.getValidator(helpers.DB.owners[2].address, helpers.DataGenerator.publicKey(1))).to.equal( + false, + ); + }); +}); diff --git a/test/validators/remove.ts b/test/validators/remove.ts new file mode 100644 index 00000000..1765e5a7 --- /dev/null +++ b/test/validators/remove.ts @@ -0,0 +1,447 @@ +// Decalre imports +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +// Declare globals +let ssvNetworkContract: any, minDepositAmount: any, firstCluster: any; + +describe('Remove Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + const metadata = await helpers.initializeContract(); + ssvNetworkContract = metadata.contract; + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register operators + await helpers.registerOperators(0, 14, helpers.CONFIG.minimalOperatorFee); + + // Register a validator + // cold register + await helpers.coldRegisterValidator(); + + // first validator + const cluster = await helpers.registerValidators( + 1, + minDepositAmount, + [1], + helpers.DEFAULT_OPERATOR_IDS[4], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE], + ); + + firstCluster = cluster.args; + }); + + it('Remove validator emits "ValidatorRemoved"', async () => { + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + ).to.emit(ssvNetworkContract, 'ValidatorRemoved'); + }); + + it('Bulk remove validator emits "ValidatorRemoved"', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + ).to.emit(ssvNetworkContract, 'ValidatorRemoved'); + }); + + it('Remove validator after cluster liquidation period emits "ValidatorRemoved"', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation + 10); + + await expect(ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + ).to.emit(ssvNetworkContract, 'ValidatorRemoved'); + }); + + it('Remove validator gas limit (4 operators cluster)', async () => { + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + }); + + it('Bulk remove 10 validator gas limit (4 operators cluster)', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + [GasGroup.BULK_REMOVE_10_VALIDATOR_4], + ); + }); + + it('Remove validator gas limit (7 operators cluster)', async () => { + const cluster = await helpers.registerValidators( + 1, + (minDepositAmount * 2).toString(), + [2], + helpers.DEFAULT_OPERATOR_IDS[7], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_7], + ); + firstCluster = cluster.args; + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(2), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR_7], + ); + }); + + it('Bulk remove 10 validator gas limit (7 operators cluster)', async () => { + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 7; + + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[7], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + [GasGroup.BULK_REMOVE_10_VALIDATOR_7], + ); + }); + + it('Remove validator gas limit (10 operators cluster)', async () => { + const cluster = await helpers.registerValidators( + 1, + (minDepositAmount * 3).toString(), + [2], + helpers.DEFAULT_OPERATOR_IDS[10], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_10], + ); + firstCluster = cluster.args; + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(2), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR_10], + ); + }); + + it('Bulk remove 10 validator gas limit (10 operators cluster)', async () => { + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 10; + + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[10], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + [GasGroup.BULK_REMOVE_10_VALIDATOR_10], + ); + }); + + it('Remove validator gas limit (13 operators cluster)', async () => { + const cluster = await helpers.registerValidators( + 1, + (minDepositAmount * 4).toString(), + [2], + helpers.DEFAULT_OPERATOR_IDS[13], + helpers.getClusterForValidator(0, 0, 0, 0, true), + [GasGroup.REGISTER_VALIDATOR_NEW_STATE_13], + ); + firstCluster = cluster.args; + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(2), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR_13], + ); + }); + + it('Bulk remove 10 validator gas limit (13 operators cluster)', async () => { + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 13; + + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[13], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + [GasGroup.BULK_REMOVE_10_VALIDATOR_13], + ); + }); + + it('Remove validator with a removed operator in the cluster', async () => { + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]); + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + }); + + it('Register a removed validator and remove the same validator again', async () => { + // Remove validator + const remove = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + const updatedCluster = remove.eventsByName.ValidatorRemoved[0].args; + + // Re-register validator + const newRegister = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .registerValidator( + helpers.DataGenerator.publicKey(1), + updatedCluster.operatorIds, + helpers.DataGenerator.shares(1, 1, 4), + 0, + updatedCluster.cluster, + ), + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER], + ); + const afterRegisterCluster = newRegister.eventsByName.ValidatorAdded[0].args; + + // Remove the validator again + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator( + helpers.DataGenerator.publicKey(1), + afterRegisterCluster.operatorIds, + afterRegisterCluster.cluster, + ), + [GasGroup.REMOVE_VALIDATOR], + ); + }); + + it('Remove validator from a liquidated cluster', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + const liquidatedCluster = await trackGas( + ssvNetworkContract.liquidate(firstCluster.owner, firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.LIQUIDATE_CLUSTER_4], + ); + const updatedCluster = liquidatedCluster.eventsByName.ClusterLiquidated[0].args; + + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), updatedCluster.operatorIds, updatedCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + }); + + it('Remove validator with an invalid owner reverts "ClusterDoesNotExists"', async () => { + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterDoesNotExists'); + }); + + it('Remove validator with an invalid operator setup reverts "ClusterDoesNotExists"', async () => { + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), [1, 2, 3, 5], firstCluster.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterDoesNotExists'); + }); + + it('Remove the same validator twice reverts "ValidatorDoesNotExist"', async () => { + // Remove validator + const result = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + + const removed = result.eventsByName.ValidatorRemoved[0].args; + + // Remove validator again + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), removed.operatorIds, removed.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); + + it('Remove the same validator with wrong input parameters reverts "IncorrectClusterState"', async () => { + // Remove validator + await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + [GasGroup.REMOVE_VALIDATOR], + ); + + // Remove validator again + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[1]) + .removeValidator(helpers.DataGenerator.publicKey(1), firstCluster.operatorIds, firstCluster.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectClusterState'); + }); + + it('Bulk Remove validator that does not exist in a valid cluster reverts "IncorrectValidatorStateWithData"', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + pks[2] = "0xabcd1234"; + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorStateWithData') + .withArgs(pks[2]); + }); + + it('Bulk remove validator with an invalid operator setup reverts "ClusterDoesNotExists"', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, [1, 2, 3, 5], args.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ClusterDoesNotExists'); + }); + + it('Bulk Remove the same validator twice reverts "IncorrectValidatorStateWithData"', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + const result = await trackGas( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, args.operatorIds, args.cluster) + ); + + const removed = result.eventsByName.ValidatorRemoved[0].args; + + // Remove validator again + await expect( + ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks, removed.operatorIds, removed.cluster), + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorStateWithData') + .withArgs(pks[0]); + }); + + it('Remove validators from a liquidated cluster', async () => { + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation - 2); + + let result = await trackGas(ssvNetworkContract + .connect(helpers.DB.owners[1]) + .liquidate(args.owner, args.operatorIds, args.cluster) + ); + + const liquidated = result.eventsByName.ClusterLiquidated[0].args; + + result = await trackGas(ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(pks.slice(0, 5), liquidated.operatorIds, liquidated.cluster) + ); + + const removed = result.eventsByName.ValidatorRemoved[0].args; + + expect(removed.cluster.validatorCount).to.equal(5); + expect(removed.cluster.networkFeeIndex.toNumber()).to.equal(0); + expect(removed.cluster.index.toNumber()).to.equal(0); + expect(removed.cluster.active).to.equal(false); + expect(removed.cluster.balance.toNumber()).to.equal(0); + }); + + it('Bulk remove 10 validator with duplicated public keys reverts "IncorrectValidatorStateWithData"', async () => { + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 13; + + const { args, pks } = await helpers.bulkRegisterValidators( + 2, + 10, + helpers.DEFAULT_OPERATOR_IDS[4], + minDepositAmount, + helpers.getClusterForValidator(0, 0, 0, 0, true), + ); + + const keys = [pks[0], pks[1], pks[2], pks[3], pks[2], pks[5], pks[2], pks[7], pks[2], pks[8]]; + + + await expect(ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator(keys, args.operatorIds, args.cluster) + ).to.be.revertedWithCustomError(ssvNetworkContract, 'IncorrectValidatorStateWithData') + .withArgs(pks[2]); + }); + + it('Bulk remove 10 validator with empty public keys reverts "IncorrectValidatorStateWithData"', async () => { + await expect(ssvNetworkContract + .connect(helpers.DB.owners[2]) + .bulkRemoveValidator([], firstCluster.operatorIds, firstCluster.cluster) + ).to.be.revertedWithCustomError(ssvNetworkContract, 'ValidatorDoesNotExist'); + }); +}); From 16318ea63cc873a0481bb432858ce15bfbaf145e Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Tue, 20 Feb 2024 11:10:17 +0100 Subject: [PATCH 16/19] fix: updated the Operators.sol and Clusters.sol --- contracts/echidna/Clusters.sol | 136 +++++++++++++++++++++---------- contracts/echidna/EchidnaLib.sol | 60 ++++++++++++++ contracts/echidna/Operators.sol | 45 ++-------- contracts/token/SSVToken.sol | 2 +- echidna.yaml | 2 +- package.json | 4 +- 6 files changed, 163 insertions(+), 86 deletions(-) create mode 100644 contracts/echidna/EchidnaLib.sol diff --git a/contracts/echidna/Clusters.sol b/contracts/echidna/Clusters.sol index 78e640a0..ba66efb0 100644 --- a/contracts/echidna/Clusters.sol +++ b/contracts/echidna/Clusters.sol @@ -1,9 +1,13 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.18; +import "../token/SSVToken.sol"; import "../modules/SSVClusters.sol"; import "../libraries/ClusterLib.sol"; import "../libraries/ProtocolLib.sol"; +import "../libraries/OperatorLib.sol"; +import "./EchidnaLib.sol"; +import "./Operators.sol"; contract Clusters is SSVClusters { using ClusterLib for Cluster; @@ -12,71 +16,115 @@ contract Clusters is SSVClusters { using ProtocolLib for StorageProtocol; bytes[] publicKeys; - bytes32[] hashedClusters; + uint64[] opIds; + mapping(bytes32 => Cluster) clusters; uint64 private constant MINIMAL_OPERATOR_FEE = 100_000_000; + uint64 private constant MAXIMUM_OPERATOR_FEE = 76_528_650_000_000; uint64 private constant MIN_OPERATORS_LENGTH = 4; uint64 private constant MAX_OPERATORS_LENGTH = 13; uint64 private constant MODULO_OPERATORS_LENGTH = 3; uint64 private constant PUBLIC_KEY_LENGTH = 48; + uint64 private constant MIN_BLOCKS_BEFORE_LIQUIDATION = 214800; + uint256 private constant MIN_LIQUIDATION_COLLATERAL = 1000000000000000000; + uint256 private constant TOTAL_SSVTOKEN_BALANCE = 1000000000000000000000; uint256 private sault = 0; + Operators ssvOperators; + SSVToken ssvToken; + + event AssertionFailed(uint256 amount); + constructor() { - // operators = new Operators(); - // for (uint i; i < 4; i++) { - // uint64 operatorId = operators.helper_createOperator(); - // } - // assert(operators.getOperatorBlock(1) == SSVStorage.load().operators[1].snapshot.block); + StorageProtocol storage sp = SSVStorageProtocol.load(); + sp.minimumBlocksBeforeLiquidation = MIN_BLOCKS_BEFORE_LIQUIDATION; + sp.minimumLiquidationCollateral = MIN_LIQUIDATION_COLLATERAL.shrink(); + sp.validatorsPerOperatorLimit = 500; + sp.declareOperatorFeePeriod = 604800; + sp.executeOperatorFeePeriod = 604800; + sp.operatorMaxFeeIncrease = 1000; + sp.operatorMaxFee = MAXIMUM_OPERATOR_FEE; + sp.updateNetworkFee(0); + + ssvOperators = new Operators(); + for (uint256 i; i < MAX_OPERATORS_LENGTH; i++) { + uint64 operatorId = ssvOperators.helper_createOperator(); + opIds.push(operatorId); + updateStorage(operatorId, ssvOperators.getOperatorById(operatorId)); + } + + ssvToken = new SSVToken(); + SSVStorage.load().token = ssvToken; + ssvToken.approve(address(this), TOTAL_SSVTOKEN_BALANCE); } - function _generatePublicKey() internal returns (bytes memory) { - bytes memory randomBytes = new bytes(48); - for (uint i = 0; i < 48; i++) { - randomBytes[i] = bytes1( - uint8(uint(keccak256(abi.encodePacked(sault, block.timestamp, msg.sender, i))) % 256) - ); + function updateStorage(uint64 id, ISSVNetworkCore.Operator memory operator) internal { + StorageData storage s = SSVStorage.load(); + s.operators[id] = operator; + } + + function check_registerValidator() public { + StorageProtocol storage sp = SSVStorageProtocol.load(); + StorageData storage s = SSVStorage.load(); + + bytes memory publicKey = EchidnaLib.generatePublicKey(sault++); + bytes memory emptyBytes; + + bytes32 hashedCluster = keccak256(abi.encodePacked(msg.sender, opIds)); + Cluster memory cluster = clusters[hashedCluster]; + cluster.active = true; + + uint64 liquidationThreshold = MIN_BLOCKS_BEFORE_LIQUIDATION * EchidnaLib.getBurnRate(opIds, s); + uint256 min = liquidationThreshold.expand() > MIN_LIQUIDATION_COLLATERAL + ? liquidationThreshold.expand() + : MIN_LIQUIDATION_COLLATERAL; + uint256 amount = EchidnaLib.generateRandomShrinkable(sault++, min, min * 2); + + try this.registerValidator(publicKey, opIds, emptyBytes, amount, cluster) { + publicKeys.push(publicKey); + + (uint64 clusterIndex, ) = OperatorLib.updateClusterOperators(opIds, true, true, 1, s, sp); + cluster.balance += amount; + cluster.updateClusterData(clusterIndex, sp.currentNetworkFeeIndex()); + cluster.validatorCount += 1; + + clusters[hashedCluster] = cluster; + } catch { + emit AssertionFailed(amount); } - sault++; - return randomBytes; } - // function helper_registerValidator(bytes calldata sharesData, uint256 amount, Cluster memory cluster) public { - // StorageData storage s = SSVStorage.load(); - // bytes memory _publicKey = _generatePublicKey(); - // uint64[] memory _operatorIds = operators.getOperatorIds(); - - // bytes32 _hashedCluster = keccak256(abi.encodePacked(msg.sender, _operatorIds)); - - // bytes32 clusterData = s.clusters[_hashedCluster]; - // if (clusterData == bytes32(0)) { - // cluster.validatorCount = 0; - // cluster.networkFeeIndex = 0; - // cluster.index = 0; - // cluster.balance = 0; - // cluster.active = true; - // } else { - // s.clusters[_hashedCluster] = cluster.hashClusterData(); + // function check_bulkRegisterValidator(uint256 amount) public { + // bytes[] memory publicKey = new bytes[](4); + // bytes[] memory sharesData = new bytes[](4); + // for (uint256 i; i < publicKey.length; i++) { + // publicKey[i] = EchidnaLib.generatePublicKey(sault++); // } + // Cluster memory cluster; + // cluster.active = true; + + // uint256 minLiquidationCollateral = SSVStorageProtocol.load().minimumLiquidationCollateral.expand(); + // require(amount > minLiquidationCollateral, "InsufficientBalance"); - // try this.registerValidator(_publicKey, _operatorIds, sharesData, amount, cluster) { - // publicKeys.push(_publicKey); - // hashedClusters.push(_hashedCluster); + // try this.bulkRegisterValidator(publicKey, opIds, sharesData, amount, cluster) { + // for (uint256 i; i < publicKey.length; i++) { + // publicKeys.push(publicKey[i]); + // } // } catch { // assert(false); // } // } - // function check_removeValidator(uint64 publicKeyId, uint64[] calldata operatorIds, Cluster memory cluster) public { - // publicKeyId = publicKeyId % uint64(publicKeys.length); - - // this.removeValidator(publicKeys[publicKeyId], operatorIds, cluster); - // } + function check_validRegisteredOperators() public { + assert(opIds.length == MAX_OPERATORS_LENGTH); - // function check_invariant_validatorPKs() public { - // StorageData storage s = SSVStorage.load(); + for (uint256 i; i < opIds.length; i++) { + ISSVNetworkCore.Operator memory operator = ssvOperators.getOperatorById(opIds[i]); + assert(operator.owner != address(0)); + } + } - // for (uint64 i = 0; i < hashedClusters.length; i++) { - // assert(s.clusters[hashedClusters[i]] == bytes32(0)); - // } - // } + function check_RegisteredValidatorsCount() public { + assert(sault == 0 || publicKeys.length > 0); + } } diff --git a/contracts/echidna/EchidnaLib.sol b/contracts/echidna/EchidnaLib.sol new file mode 100644 index 00000000..e1611e48 --- /dev/null +++ b/contracts/echidna/EchidnaLib.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity 0.8.18; + +import "../libraries/Types.sol"; +import "../libraries/SSVStorage.sol"; + +library EchidnaLib { + function generatePublicKey(uint256 sault) internal view returns (bytes memory) { + bytes memory randomBytes = new bytes(48); + for (uint i = 0; i < 48; i++) { + randomBytes[i] = bytes1( + uint8(uint(keccak256(abi.encodePacked(sault, block.timestamp, msg.sender, i))) % 256) + ); + } + return randomBytes; + } + + function generateRandom(uint256 salt, uint256 min, uint256 max) internal view returns (uint256) { + require(max > min, "max must be greater than min"); + uint256 random = uint256(keccak256(abi.encodePacked(salt, block.timestamp, msg.sender))) % (max - min + 1); + return min + random; + } + + function generateRandomShrinkable(uint256 sault, uint256 min, uint256 max) internal returns (uint256) { + require(max > min, "Max must be greater than min"); + require( + min % DEDUCTED_DIGITS == 0 && max % DEDUCTED_DIGITS == 0, + "Min and Max must be multiples of 10,000,000" + ); + + uint256 randomHash = uint256(keccak256(abi.encodePacked(sault, block.timestamp))); + sault++; + uint64 reducedHash = uint64(randomHash); + + // Calculate a fee within the range, ensuring it ends in a multiple of 10,000,000 + uint256 range = (max - min) / DEDUCTED_DIGITS + 1; + uint256 feeMultiplier = (reducedHash % range) * DEDUCTED_DIGITS; + uint256 fee = min + feeMultiplier; + fee = fee - (fee % DEDUCTED_DIGITS); + + return fee; + } + + function getBurnRate(uint64[] memory operatorIds, StorageData storage s) internal view returns (uint64 burnRate) { + uint256 operatorsLength = operatorIds.length; + + for (uint256 i; i < operatorsLength; ) { + uint64 operatorId = operatorIds[i]; + + ISSVNetworkCore.Operator memory operator = s.operators[operatorId]; + if (operator.snapshot.block != 0) { + burnRate += operator.fee; + } + + unchecked { + ++i; + } + } + } +} diff --git a/contracts/echidna/Operators.sol b/contracts/echidna/Operators.sol index d06bcb3e..102e2372 100644 --- a/contracts/echidna/Operators.sol +++ b/contracts/echidna/Operators.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.18; import "../modules/SSVOperators.sol"; import "../libraries/ProtocolLib.sol"; +import "./EchidnaLib.sol"; contract Operators is SSVOperators { using Types64 for uint64; @@ -29,55 +30,21 @@ contract Operators is SSVOperators { sp.executeOperatorFeePeriod = 604800; sp.operatorMaxFeeIncrease = 1000; sp.operatorMaxFee = MAXIMUM_OPERATOR_FEE; + sp.validatorsPerOperatorLimit = 50; sp.updateNetworkFee(0); } - function getOperatorIds() public view returns (uint64[] memory) { - return opIds; - } - - function getOperatorBlock(uint64 operatorId) public view returns (uint256) { - return SSVStorage.load().operators[operatorId].snapshot.block; - } - - function _generatePublicKey() internal returns (bytes memory) { - bytes memory randomBytes = new bytes(48); - for (uint i = 0; i < 48; i++) { - randomBytes[i] = bytes1( - uint8(uint(keccak256(abi.encodePacked(sault, block.timestamp, msg.sender, i))) % 256) - ); - } - sault++; - return randomBytes; - } - - function _generateFee(uint256 min, uint256 max) internal returns (uint256) { - require(max > min, "Max must be greater than min"); - require( - min % DEDUCTED_DIGITS == 0 && max % DEDUCTED_DIGITS == 0, - "Min and Max must be multiples of 10,000,000" - ); - - uint256 randomHash = uint256(keccak256(abi.encodePacked(sault, block.timestamp))); - sault++; - uint64 reducedHash = uint64(randomHash); - - // Calculate a fee within the range, ensuring it ends in a multiple of 10,000,000 - uint256 range = (max - min) / DEDUCTED_DIGITS + 1; - uint256 feeMultiplier = (reducedHash % range) * DEDUCTED_DIGITS; - uint256 fee = min + feeMultiplier; - fee = fee - (fee % DEDUCTED_DIGITS); - - return fee; + function getOperatorById(uint64 id) public view returns (ISSVNetworkCore.Operator memory operator) { + return SSVStorage.load().operators[id]; } function helper_createOperator() public returns (uint64) { uint256 minN = minNetworkFee; uint256 maxN = SSVStorageProtocol.load().operatorMaxFee; - bytes memory publicKey = _generatePublicKey(); - uint256 fee = _generateFee(minN, maxN); + bytes memory publicKey = EchidnaLib.generatePublicKey(sault++); + uint256 fee = EchidnaLib.generateRandomShrinkable(sault++, minN, maxN); try this.registerOperator(publicKey, fee) returns (uint64 operatorId) { opIds.push(operatorId); diff --git a/contracts/token/SSVToken.sol b/contracts/token/SSVToken.sol index 48165768..274bfbce 100644 --- a/contracts/token/SSVToken.sol +++ b/contracts/token/SSVToken.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity 0.8.4; +pragma solidity 0.8.18; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; diff --git a/echidna.yaml b/echidna.yaml index b06df9f5..1cfe29db 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,5 +1,5 @@ testMode: assertion -testLimit: 2000 +testLimit: 5000 corpusDir: 'echidna-corpus' cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] format: text diff --git a/package.json b/package.json index dbc0163d..f4f73491 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,9 @@ "lint:fix": "eslint --fix . --ext .ts", "solidity-coverage": "NO_GAS_ENFORCE=1 npx hardhat coverage", "slither": "slither contracts --solc-remaps @openzeppelin=node_modules/@openzeppelin", - "size-contracts": "npx hardhat size-contracts" + "size-contracts": "npx hardhat size-contracts", + "install-echidna": "brew install echidna", + "echidna": "node .echidna.test.js" }, "devDependencies": { "@nomicfoundation/hardhat-toolbox": "^2.0.0", From f4e81dc37b8b3c96338b18fe0a88ce8f7811c5c3 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 23 Feb 2024 10:34:39 +0100 Subject: [PATCH 17/19] fix: removed chalk package --- .echidna.test.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.echidna.test.js b/.echidna.test.js index a1d69b7d..a638ef09 100644 --- a/.echidna.test.js +++ b/.echidna.test.js @@ -1,5 +1,4 @@ const { execSync } = require('child_process'); -const chalk = require('chalk'); const contract = process.argv[2]; const exec = commands => { @@ -21,6 +20,6 @@ switch (contract) { exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/echidna/DAO.sol'); break; default: - console.log(chalk.redBright('Invalid contract name. Use Operators, Clusters, or DAO.')); - console.log(chalk.greenBright('npm run echidna ')); + console.log('Invalid contract name. Use Operators, Clusters, or DAO.'); + console.log('npm run echidna '); } From 8dfb5d799cc7a3d4af3d542ba5cc8ef911c91ccc Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Fri, 23 Feb 2024 10:48:42 +0100 Subject: [PATCH 18/19] fix: updated test script --- .echidna.test.js | 56 +++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/.echidna.test.js b/.echidna.test.js index a638ef09..885308d7 100644 --- a/.echidna.test.js +++ b/.echidna.test.js @@ -1,25 +1,41 @@ const { execSync } = require('child_process'); -const contract = process.argv[2]; +const util = require('util'); +const asyncExec = util.promisify(require('child_process').exec); -const exec = commands => { +async function getBrewPrefixPath() { try { - execSync(commands, { stdio: 'inherit', shell: true }); // Specify the shell if needed - } catch (error) {} -}; + const { stdout } = await asyncExec('brew --prefix'); + console.log(`Homebrew prefix path: ${stdout.trim()}`); + fuzzTestByEchidna(stdout.trim()); + } catch (error) { + console.error(`Error: ${error}`); + } +} + +getBrewPrefixPath(); + +function fuzzTestByEchidna(brewPrefix) { + const contract = process.argv[2]; + const exec = commands => { + try { + execSync(commands, { stdio: 'inherit', shell: true }); // Specify the shell if needed + } catch (error) {} + }; -const echidnaPath = '/usr/local/bin/echidna'; -console.log(echidnaPath); -switch (contract) { - case 'Operators': - exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/echidna/Operators.sol'); - break; - case 'Clusters': - exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/echidna/Clusters.sol'); - break; - case 'DAO': - exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/echidna/DAO.sol'); - break; - default: - console.log('Invalid contract name. Use Operators, Clusters, or DAO.'); - console.log('npm run echidna '); + const echidnaPath = brewPrefix + '/bin/echidna'; + console.log(echidnaPath); + switch (contract) { + case 'Operators': + exec(echidnaPath + ' --config echidna.yaml --contract Operators contracts/echidna/Operators.sol'); + break; + case 'Clusters': + exec(echidnaPath + ' --config echidna.yaml --contract Clusters contracts/echidna/Clusters.sol'); + break; + case 'DAO': + exec(echidnaPath + ' --config echidna.yaml --contract DAO contracts/echidna/DAO.sol'); + break; + default: + console.log('Invalid contract name. Use Operators, Clusters, or DAO.'); + console.log('npm run echidna '); + } } From 8e632bad5c50d9001c9800701a1469692af30383 Mon Sep 17 00:00:00 2001 From: Mohsen-T Date: Mon, 18 Mar 2024 17:13:24 +0100 Subject: [PATCH 19/19] fix: updated echidna test --- .echidna.test.js | 2 +- contracts/echidna/Clusters.sol | 40 +++++++++++++++++----------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.echidna.test.js b/.echidna.test.js index 885308d7..72b72552 100644 --- a/.echidna.test.js +++ b/.echidna.test.js @@ -8,7 +8,7 @@ async function getBrewPrefixPath() { console.log(`Homebrew prefix path: ${stdout.trim()}`); fuzzTestByEchidna(stdout.trim()); } catch (error) { - console.error(`Error: ${error}`); + console.error(`Please install brew and echidna.`); } } diff --git a/contracts/echidna/Clusters.sol b/contracts/echidna/Clusters.sol index ba66efb0..f91591f6 100644 --- a/contracts/echidna/Clusters.sol +++ b/contracts/echidna/Clusters.sol @@ -94,26 +94,26 @@ contract Clusters is SSVClusters { } } - // function check_bulkRegisterValidator(uint256 amount) public { - // bytes[] memory publicKey = new bytes[](4); - // bytes[] memory sharesData = new bytes[](4); - // for (uint256 i; i < publicKey.length; i++) { - // publicKey[i] = EchidnaLib.generatePublicKey(sault++); - // } - // Cluster memory cluster; - // cluster.active = true; - - // uint256 minLiquidationCollateral = SSVStorageProtocol.load().minimumLiquidationCollateral.expand(); - // require(amount > minLiquidationCollateral, "InsufficientBalance"); - - // try this.bulkRegisterValidator(publicKey, opIds, sharesData, amount, cluster) { - // for (uint256 i; i < publicKey.length; i++) { - // publicKeys.push(publicKey[i]); - // } - // } catch { - // assert(false); - // } - // } + function check_bulkRegisterValidator(uint256 amount) public { + bytes[] memory publicKey = new bytes[](4); + bytes[] memory sharesData = new bytes[](4); + for (uint256 i; i < publicKey.length; i++) { + publicKey[i] = EchidnaLib.generatePublicKey(sault++); + } + Cluster memory cluster; + cluster.active = true; + + uint256 minLiquidationCollateral = SSVStorageProtocol.load().minimumLiquidationCollateral.expand(); + require(amount > minLiquidationCollateral, "InsufficientBalance"); + + try this.bulkRegisterValidator(publicKey, opIds, sharesData, amount, cluster) { + for (uint256 i; i < publicKey.length; i++) { + publicKeys.push(publicKey[i]); + } + } catch { + assert(false); + } + } function check_validRegisteredOperators() public { assert(opIds.length == MAX_OPERATORS_LENGTH);